预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共27页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

循环结构程序设计一、概述 二、goto语句 三、循环 while循环 直到型循环 for循环 循环的嵌套 各种循环的比较 四、break语句和continue语句的作用 五、综合举例概述goto语句1、功能:while语句一般完成当型循环。 2、格式: while(表达式p){循环体} 3、执行过程:当表达式P为非零时,反复执行语句S,直到P为假时才停止。100 例如:求n n=1 main() {inti,sum=0; i=1; while(i<=100) {sum=sum+i; i++; } printf(“%d”,sum); }1、说明:C中一般用do—while语句实现直到型循环。 2、格式: do{循环体语句} while(表达式p); 3、执行过程:先执行循环体语句,后判定表达式,当表达式的值为“假”时,循环结束。100 例如:求n n=1 main() {inti,sum=0; i=1; do {sum=sum+i; i++; }while(i<=100); printf(“%d”,sum); } (1)注意while与do_while循环最后的“;”。 (2)while与do_while执行循环体与判断的顺序不同,当表达式初值为0时结果不同。 (3)各自的应用场合不同。 (4)for语句使用最为灵活,完全可以替代while语句。 (5)各种形式的循环都可以用来处理同一问题,一般情况下它们可以互相替代。1、功能:用于循环次数已确定或仅给定循环结束条件的循环,适合于描述一个事物从初始态到终止态的变化过程。 2、格式: for(表达式1;表达式2;表达式3) 循环体; 3、执行过程: (1)求解表达式1(初值); (2)求解表达式2,为真,执行循环体;否则执行步骤4; (3)求解表达式3;转步骤2 (4)执行for下面的语句. 4、使用要点 100 例如:求n n=1 for(i=1;i<=100;i++) sum=sum+i;(1)表达式1可以省略,但在for循环之前应给循环变量赋值. 例如: i=1; for(;i<=100;i++) sum=sum+i; (2)表达式3也可以省略,但循环体中应用改变循环变量值的语句. 例如: for(sum=0,i=0;i<=100;) { sum=sum+i; i++;} (3)表达式1和表达式3可同时省略(等同于while循环) 例如: i=1;sum=0; for(;i<=100;) { sum=sum+i; i++;}(4)三个表达式都可以省略,但“;”不能省略。 例如: for(;;)sum=sum+i; (5)表达式1和表达式3可以是循环变量的赋初值,也可以是与赋初 值根本无关的其他表达式,或者两者兼而有之. 例如: for(sum=0,i=1;i<=100;i++) sum=sum+i; for(sum=0,i=1;i<=100;sum=sum+i,i++); (6)表达式2一般是关系或逻辑表达式,也可以是其他表达式。 例如:for(i=0;(c=getchar())!=‘\n’;printf(“%c”,c)); 循环的嵌套循环的嵌套break语句1、功能:结束本次循环,即跳过该语句后面尚未执行的语句,接着进行下一次是否执行循环的判定。 例:把100~200之间的不能被3整除的数输出. main() {intn; for(n=100;n<=200;n++) {if(n%3==0)continue; printf(“%d”,n);} } 2、continue与break的区别: continue结束本次循环,而break终止本层循环.continue语句例6_1用/4=1-1/3+1/5-1/7+….公式求的近似值,直到某一项的绝对值小于10-6为止. #include<stdio.h> #include<math.h> main() {ints=1; floatn=1.0,t=1,pi=0; while(fabs(t)>=1e-6) {pi=pi+t;n+=2; s=-s;t=s/n;} pi=pi*4;printf(“pi=%10.6f\n”,pi); }例6_2求Fibonacci数列:1,1,2,3,5,8,…的前40个数.公式为: F1=1 (n=1) F2=1 (n=2) Fn=Fn-1+Fn-2 (n>=3) main() {longf1=1,f2=1; inti; for(i=1;i<=20;i++){printf(“%12ld%12ld”,f1,f2); if(i%2==0)printf(“\n”); f1=f1+f2,f2=f2+f1;} }例6_3判断m是否为素数 算法为:用2~sq