C语言设计课件:第6章 循环控制
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
…… s=s+i i=i+1 输出s
流程图
开始 s=0,i=1;
假
i<=10
真
s=s+i; i=i+1;
输出s 结束
6.3 while语句
语法格式: while(表达式) 循环体语句
while语句的执行过程为: ① 计算while后条件表达式的值。 ② 若表达式的值为真,则执行循环体语句,然 后转①;否则,退出循环,即结束while语句。
scanf("%d", &n);while (n>0)
do
{ s+=n%10;
{ s+=n%10; n/=10;
n/=10;
来自百度文库
}
}
while(n>0); printf("\n sum=%d", s);
printf("\n sum=%redt",ursn); 0;
return 0; }
}
课堂实践3
输入一个整数,求该数是几位数,按顺 序输出它的每一位数字(以空格分隔); 按逆序输出它的每一位数字(以空格分隔 )。
第6章 循环控制
6.1 概述
问题的提出:求 s=1+2+…+10
算法描述
当
i<=10 时,循 环执行 这两条 语句
s=0,i=1
s=s+i i=i+1 ……
输出s
s=0,i=1 s=s+i i=i+1 s=s+i i=i+1 s=s+i i=i+1 s=s+i i=i+1 s=s+i i=i+1
变量,如: for (s=0,i=1;i<=100;i++) s+=i;
例:求n! (n=10) int main( ) { int n;
long s=1; n=10;
等价于:
n=10; k=1;
for( ; k<=n; k++) s*=k; /*表达式1可省略,赋初值语句上 移,但“;”不能省略。*/
s+=n%10 循环变量增值规律 :n=n/10
int main( )
int main( ) { int s=0, n;
{ int s=0, n; printf("\n input a natural number:");
printf("\n input sacanantfu(r"a%l dnu"m, b&enr:)";);
n=10; for (k=1; k<=n; k++)
s=s*k; printf("%d", s); }
for语句语法说明
表达式1 ,表达式2,表达式3均可省略,但是两个分 号不能省略;
表达式1,表达式3省略,没有缺省值 表达式2省略,缺省值为1(真) for(;;); 是死循环 很多时候,表达式1是一个逗号表达式,初始化多个
并加入和s,直到最高位数字处理完为止。因此, 解决问题的关键是: ① 如何求得n中的每一位数字? ② n的位数事先不确定,如何控制循环次数? 具体方法是:用n%10得n的最低位,加入和s;然 后n=n/10,即n始终表示由未处理的数字组成的 自然数。重复以上过程,直至n等于0时结束。
由此得循环结构的组成要素为: 循环变量 : n 循环变量初值:用户输入 循环控制条件:n大于0 循环体 :计算n的个位并加入和s,即
scanf(“%d”,&n); i=1; s=0; do { s+=i; /*累加*/
i+=2; } while(i<=n); /*必须使用分号*/ printf(“s=%d”,s); }
课堂实践
1、从键盘上输入若干整数,求其中正偶 数之和。以-1作为输入结束标志。
#include "stdio.h" int main() {
6.5 for语句
for 语句较前两种循环语句更简洁、更灵活, 特别是处理循环次数确定的问题。
for语句的语法格式为: for(表达式1;表达式2;表达式3)
循环体语句
其中,表达式1为赋初值表达式 表达式2为条件表达式 表达式3为循环变量增值表达式
例:求n! (n=10) int main( ) { int n,k,s=1;
while :先判断表达式的值,后执行循环体 do while :先执行循环体一次后,再判断表 达式的值
while语句中,循环体可能一次都不执行 (0~n次) do while 语句中,循环体至少执行一次(1~ n次)
例:用do…while实现求s=1+3+5+…n (n为奇数且n>=1)
#include <stdio.h> int main() { int n,i,s;
int x=0,s=0; do {
scanf("%d",&x); if(x>0 && x%2==0) s+=x; } while(x!=-1); printf("%d",s); return 0; }
课堂实践2
求自然数n中各位数字之和(n由用户输入)。 问题分析: 从n的个位开始,重复求每一位数字,
例:求s=1+3+5+…n (n为奇数且n>=1)
6.4 do…while语句
do_while语句的特点是“先执行循环体,后 判断循环条件”,当条件成立时继续执行循环 体,条件不成立时结束循环。
do_while的一般形式
do 循环体语句
while(表达式);
while与do…while的不同
(k<=100)其中,k<=100就是循环条件。 循环体:在每个循环周期均要执行一次的语句序列。
如while下用{ }括起来的语句序列。 循环控制变量:能够决定控制条件是真是假的量,
如上例中的变量k。一般来说,在循环体中要有改 变循环变量的语句,使得循环条件可以为假,即循 环可以结束而不是无限循环(死循环)。
例1:求s=1+2+…+10
int main( )
{ int k,s;
s=0;
k=1;
// 给循环变量赋初值
while (k<=10) // k从1变化到10
{ s+=k;
// 累加
k++;
// k每次加1
}
printf("%d",s);
return 0;
}
while语句
循环结构的三个要素: 循环条件:循环结构中的条件表达式如while
for (k=1; k<=n; k++)
s=s*k;
等价于: for( k=1; k<=n; )
printf("%d", s);
{ s*=k; k++;}
}
/*表达式3省略,移至循环体内*/
下划线语句段等价于:
for(n=10,k=1; k<=n;若k+表+)达式2省略,则为死循环,除
流程图
开始 s=0,i=1;
假
i<=10
真
s=s+i; i=i+1;
输出s 结束
6.3 while语句
语法格式: while(表达式) 循环体语句
while语句的执行过程为: ① 计算while后条件表达式的值。 ② 若表达式的值为真,则执行循环体语句,然 后转①;否则,退出循环,即结束while语句。
scanf("%d", &n);while (n>0)
do
{ s+=n%10;
{ s+=n%10; n/=10;
n/=10;
来自百度文库
}
}
while(n>0); printf("\n sum=%d", s);
printf("\n sum=%redt",ursn); 0;
return 0; }
}
课堂实践3
输入一个整数,求该数是几位数,按顺 序输出它的每一位数字(以空格分隔); 按逆序输出它的每一位数字(以空格分隔 )。
第6章 循环控制
6.1 概述
问题的提出:求 s=1+2+…+10
算法描述
当
i<=10 时,循 环执行 这两条 语句
s=0,i=1
s=s+i i=i+1 ……
输出s
s=0,i=1 s=s+i i=i+1 s=s+i i=i+1 s=s+i i=i+1 s=s+i i=i+1 s=s+i i=i+1
变量,如: for (s=0,i=1;i<=100;i++) s+=i;
例:求n! (n=10) int main( ) { int n;
long s=1; n=10;
等价于:
n=10; k=1;
for( ; k<=n; k++) s*=k; /*表达式1可省略,赋初值语句上 移,但“;”不能省略。*/
s+=n%10 循环变量增值规律 :n=n/10
int main( )
int main( ) { int s=0, n;
{ int s=0, n; printf("\n input a natural number:");
printf("\n input sacanantfu(r"a%l dnu"m, b&enr:)";);
n=10; for (k=1; k<=n; k++)
s=s*k; printf("%d", s); }
for语句语法说明
表达式1 ,表达式2,表达式3均可省略,但是两个分 号不能省略;
表达式1,表达式3省略,没有缺省值 表达式2省略,缺省值为1(真) for(;;); 是死循环 很多时候,表达式1是一个逗号表达式,初始化多个
并加入和s,直到最高位数字处理完为止。因此, 解决问题的关键是: ① 如何求得n中的每一位数字? ② n的位数事先不确定,如何控制循环次数? 具体方法是:用n%10得n的最低位,加入和s;然 后n=n/10,即n始终表示由未处理的数字组成的 自然数。重复以上过程,直至n等于0时结束。
由此得循环结构的组成要素为: 循环变量 : n 循环变量初值:用户输入 循环控制条件:n大于0 循环体 :计算n的个位并加入和s,即
scanf(“%d”,&n); i=1; s=0; do { s+=i; /*累加*/
i+=2; } while(i<=n); /*必须使用分号*/ printf(“s=%d”,s); }
课堂实践
1、从键盘上输入若干整数,求其中正偶 数之和。以-1作为输入结束标志。
#include "stdio.h" int main() {
6.5 for语句
for 语句较前两种循环语句更简洁、更灵活, 特别是处理循环次数确定的问题。
for语句的语法格式为: for(表达式1;表达式2;表达式3)
循环体语句
其中,表达式1为赋初值表达式 表达式2为条件表达式 表达式3为循环变量增值表达式
例:求n! (n=10) int main( ) { int n,k,s=1;
while :先判断表达式的值,后执行循环体 do while :先执行循环体一次后,再判断表 达式的值
while语句中,循环体可能一次都不执行 (0~n次) do while 语句中,循环体至少执行一次(1~ n次)
例:用do…while实现求s=1+3+5+…n (n为奇数且n>=1)
#include <stdio.h> int main() { int n,i,s;
int x=0,s=0; do {
scanf("%d",&x); if(x>0 && x%2==0) s+=x; } while(x!=-1); printf("%d",s); return 0; }
课堂实践2
求自然数n中各位数字之和(n由用户输入)。 问题分析: 从n的个位开始,重复求每一位数字,
例:求s=1+3+5+…n (n为奇数且n>=1)
6.4 do…while语句
do_while语句的特点是“先执行循环体,后 判断循环条件”,当条件成立时继续执行循环 体,条件不成立时结束循环。
do_while的一般形式
do 循环体语句
while(表达式);
while与do…while的不同
(k<=100)其中,k<=100就是循环条件。 循环体:在每个循环周期均要执行一次的语句序列。
如while下用{ }括起来的语句序列。 循环控制变量:能够决定控制条件是真是假的量,
如上例中的变量k。一般来说,在循环体中要有改 变循环变量的语句,使得循环条件可以为假,即循 环可以结束而不是无限循环(死循环)。
例1:求s=1+2+…+10
int main( )
{ int k,s;
s=0;
k=1;
// 给循环变量赋初值
while (k<=10) // k从1变化到10
{ s+=k;
// 累加
k++;
// k每次加1
}
printf("%d",s);
return 0;
}
while语句
循环结构的三个要素: 循环条件:循环结构中的条件表达式如while
for (k=1; k<=n; k++)
s=s*k;
等价于: for( k=1; k<=n; )
printf("%d", s);
{ s*=k; k++;}
}
/*表达式3省略,移至循环体内*/
下划线语句段等价于:
for(n=10,k=1; k<=n;若k+表+)达式2省略,则为死循环,除