
第6章循环控制结构6.1循环控制结构6.2while语句6.3dowhile语句6.4逗号运算符和逗号表达式6.5for语句6.6空语句在循环中的使用6.7循环语句的选择6.8循环嵌套6.9break和continue语句
第6章 循环控制结构 6.1 循环控制结构 6.2 while语句 6.3 do while语句 6.4 逗号运算符和逗号表达式 6.5 for语句 6.6 空语句在循环中的使用 6.7 循环语句的选择 6.8 循环嵌套 6.9 break和continue语句

6.1循环控制结构----P92思考:如何编程计算1+2+3++100?程序:int s= 0;ints=0,i=1;②ifs = s + 1;(i<=100)(i<=100)while84500s= s+2;S=s+i;s=s+3;i++;1s=s+ 100;printf("s=%d",s);printf ("s = %d", s);while循环!
思考:如何编程计算1 + 2 + 3 + . + 100? 程序: int s = 0; s = s + 1; s = s + 2; s = s + 3; . s = s + 100; printf ("s = %d" , s); while循环!!! 6.1 循环控制结构-P92 ① int s=0,i=1; ② if (i<=100) ③ { ④ s=s+i; ⑤ i++; ⑥ } ⑦ printf(“s=%d” ,s); while (i<=100)

1、while循环语句一P93格式:while(表达式)>执行流程:while循环体语句;F特点:先判断表达式,再确定是否执行循环体。表达式1I注意:循环体表达式的括号()不能省:1表达式可以是任意类型的表达式:2表达式的值是循环的控制条件:3如果循环体是多条语句一—一必须使用复合语句5循环体内可以包含任何合法C语句
1、while循环语句—P93 while (表达式) 循环体语句; Ø 执行流程: T 表达式 注意: ① 表达式的括号()不能省; ② 表达式可以是任意类型的表达式; ③ 表达式的值是循环的控制条件; ④ 如果循环体是多条语句-必须使用复合语句; ⑤ 循环体内可以包含任何合法C语句。 特点:先判断表达式,再确定是否执行循环体。 格式:

begin例1: 求1 +2 +3+...+100s-0;i-1;N1inti=1,s=0:Ⅱ循环变量i初始化i≤1002while(i<=100)1/设置循环条件③s-s+i;4s= s+i;i=i+1;6i++;//循环控制变量的改变?输出S7printf ("s = %d", s);end
① int i=1 , s = 0; //循环变量 i 初始化 ② while (i<=100) //设置循环条件 ③ { ④ s = s +i; ⑤ i++; //循环控制变量的改变 ⑥ } ⑦ printf ("s = %d" , s); 例1:求 1 + 2 + 3 + . + 100

ACM-4288数列求和3TimeLimit:1000msMemoryLimit:65536KiBSubmitStatisticProblemDescriptionintn,i=1,=0:284500scanf("%d",&n) ;正整数序列是指从1开始的序列,例如1234,.给定一个整数n,现在请你求出正整数序列1-n的和。(i<=n)whileInputs=s+i;i++;输入一个整数n.(1<=n<=1000)1Output输出一个整数,即为正确答案。printf("%dln",s)SampleInputSampleOutputU
ACM-4288 ① int n, i=1,s=0; ② scanf("%d",&n); ③ while (i<=n) ④ { s=s+i; ⑤ i++; ⑥ } ⑦ printf("%d\n",s);

小树快长高ACM--4287TimeLimit:1000msMemoryLimit:65536KiBSubmitStatisticProblemDescription小明在植树节种了一棵小树,小明非常关心小树,每天都给小树浇水,盼望着小树快快长高。他知道小树现在有ncm,每天长高kcm,他想知道多少天小树可以长到mcm。Input?int n,m,k,t=0;?0400scanf("%d%d%d",&n,&m,&k);输入三个整数nmk。(0<=n<=10000,0<=m<=10000,0<=k<=10000)while (n<m)Outputn=n+k;输出一个整数,即需要的天数t++;SampleInputprintf("%d/n",t):1002005SampleOutput20
ACM-4287 ① int n,m,k,t=0; ② scanf(" %d%d%d",&n,&m,&k); ③ while (n<m) ④ { n=n+k; ⑤ t++; ⑥ } ⑦ printf("%d\n",t);

2、如何终止while循环-----改变循环条件例2:1+2+3+4+5代码1:死循环!1inti=1,s=Inti=1,s=0;2while (i=1)33{ s=s+ i; ++i;)(s=s+i, --printf("s=%d",s);printf("s=%d",s);结论:要正确设计循环体。在循环体中,必须让循环变量朝着正确的方向变化,循环才能正常结束
2、如何终止 while循环 -改变循环条件 例2:1+2+3+4+5 结论:要正确设计循环体。在循环体中,必须让循环变量朝着正 确的方向变化,循环才能正常结束。 代码2: ① Int i = 1,s = 0; ② while ( i=1) ③ { s = s + i; -i;} ④ printf("s=%d" ,s); 死循环! √ √ × ×

循环小结发现重复性动作到写好一个循环结构通常包括:循环中涉及哪些变量?循环开始前应该赋给它们什么初值?循环体中应该如何修改它们?在什么情况下应该继续(或应该终止)循环?循环终止后如何得到所需要的结果?S循环设计四要素:循环变量的初始化;循环条件的设置;循环体;循环控制变量的改变
循 环 小 结 • 发现重复性动作到写好一个循环结构通常包括: ① 循环中涉及哪些变量? ② 循环开始前应该赋给它们什么初值? ③ 循环体中应该如何修改它们? ④ 在什么情况下应该继续(或应该终止)循环? ⑤ 循环终止后如何得到所需要的结果? 循环设计四要素: ① 循环变量的初始化; ② 循环条件的设置; ③ 循环体; ④ 循环控制变量的改变

3、while循环应用举例例3:输入一批整数,以0结束,求最大、和、平均。算法分析:①整数的个数不确定、找最#include②int main()大一打播台③ int x,max,n=;doubles=0;s=0,n=0;④scanf("%d",&x);l/输入第一个数22输入第一个数x?while (x!=0)3)若x!=01if(n==0)max=x;Tif(n==0)max=x;1/给max赋初值else8elseif(x>max)max=x;?(if (max<x)max=x;}s=s+x;n++;S=s+x;n++;scanf("%d",&x);//输入下一个数①7输入下一个数×,车转到3)?print("%d %if %ifin",max,s,s/n);输出max、S、s/n?80return O;907060390300.00000075.000000
3、while循环应用举例 例3:输入一批整数,以0结束,求最大、和、平均。 ① #include ② int main() ③ { int x,max,n=0; double s=0; ④ scanf("%d",&x); //输入第一个数 ⑤ while (x!=0) ⑥ { ⑦ if (n==0) max=x; //给max赋初值 ⑧ else if (x>max) max=x; ⑨ s=s+x; n++; ⑩ scanf("%d",&x); //输入下一个数 ⑪ } ⑫ printf("%d %lf %lf\n",max,s,s/n); ⑬ return 0; ⑭ } 算法分析:整数的个数不确定、找最 大—打擂台 1)s=0 , n=0; 2)输入第一个数 x 3)若 x!=0 ① if (n==0) max=x; ② else ③ { if (max<x) max=x;} ④ s=s+x; n++; ⑤ 输入 下一个数 x,转到3) 4)输出max 、s、s/n

3、while循环应用举例例4:输入一个正整数,反序输出各位数(输入:12345,输出54321)算法:1)定义n是longint,m是int2)车输入n3)若n>0贝则m=n%10,输出m;n=n/10;转到3)继续。程序:①#include②int main()③I long int n;int m;④scanf("%ld",&n);?while (n>0)?Ⅱ取个位 m=n%10;12345printf("%d",m);1/输出个位?n=n/10;I/n去掉个位543219?return 0;人
3、while循环应用举例 例4: 输入一个正整数 , 反序输出 各位数(输入: 12345, 输出5 4 3 2 1 ) 算法: 1)定义n是 long int ,m 是int 2)输入n 3)若n>0 则: m= n % 10, 输出 m;n=n/10; 转到 3)继续。 程序: ① #include ② int main() ③ { long int n; int m; ④ scanf("%ld" ,&n); ⑤ while (n>0) ⑥ { m=n%10; // 取个位 ⑦ printf("%d " ,m); //输出个位 ⑧ n=n/10; // n去掉个位 ⑨ } ⑩ return 0; ⑪ }