c语言程序设计教学课件5具有循环结构的c程序设计_第1页
c语言程序设计教学课件5具有循环结构的c程序设计_第2页
c语言程序设计教学课件5具有循环结构的c程序设计_第3页
c语言程序设计教学课件5具有循环结构的c程序设计_第4页
c语言程序设计教学课件5具有循环结构的c程序设计_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第五章 具有循环结构的C 程序设计,循环是计算机解题的一个 重要特征。由于计算机运算速度快,最 适宜做重复性的工作。当我们在进行程序设计时,总是要把复杂的不易理解的求解过程转 换为容易理解的操作的多次重复, 从而降低了问题的复杂度,同时也减少程序书写及输入的工作量,1+2+3+4+5+ +100,s=0, i=1,i=100,s=s+i,i=i+1,输出结果 s,sum=88+78+90+ +86ave=sum/32,sum=0, num=1,输入成绩 g,sum=sum+g,num=num+1,输出结果 ave,num=32,ave=sum/num,goto 与 if,while,do - while,for,5.1 goto if 语句,main() int i,s=0; i=1; label : if (i=100) s=s+i; i+; goto label; printf(“s=%dn”,s ); ,语句格式 :,goto 语句标号; . 语句标号:语句 ;,语句功能 :,无条件地重复执行标号后面的语句,语句说明 :,语句标号- 用于标识程序中某个语句的 位置。,1+2+3+4+5+ +100,举例,5.1 goto if 语句,main() int n1,n2, x, num ; n1=n2=num=0 label : scanf(“%dn”, ,从键盘输入100个有符号整数,请分别统计其中正整数和负整数的个数。,练习,5.2 while 语句,语句格式 :,while (条件表达式) 语句1; 语句2; 语句n; ,语句功能 :,当条件表达式的值为真时 重复执行循环体中各语句。,语句说明 :,条件表达式 - 允许是关系表达式 逻辑表达式 赋值表达式,先计算表达式 的值并判断, 若表达式值为 “真”(即非零值), 则执行循环体中的语句;然后再计算再判断, 如此重复, 直到表达式值为“假”(即0值)时,则跳出循环,循环体,1+2+3+4+5+ +100, sum+=i;, sum ;,printf(“%dn”, sum); ,sum=0; i=1;,i+;,while(i=100),练习, int a=1,b=2,c=2,t=0; while (a=A ,main() int n=0; while (n3) printf(“n is %dn”, n); n+; printf(“n=%dn”,n); ,举例, . int y ; y=10; while (y-) ; printf(“ %d,”, y); .,举例, int num=0; while (num=2) num+; printf(“ %dn”, num); ,C,-1,5.3 do-while 语句,do 语句1; 语句2; 语句n; while(表达式),语句功能 :,当条件表达式的值为真时 重复执行循环体中各语句。,表达式 - 允许是关系表达式 逻辑表达式 赋值表达式,首先无条件地执行一次循环体中的语句,然后再判断表达式的值, 若表达式值为 “真” (即非零值), 则执行循环体中的语句;然后再计算再判断, 如此重复,直到表达式值为“假”(即0值)时,则跳出循环,循环体, char ch; do scanf(“%c”, ,语句格式 :,语句说明 :,1+2+3+4+5+ +100,do sum+=i;, sum ;,printf(“%dn”, sum); ,sum=0; i=1;,i+;, while(i=100);,练习, x=-1; do x=x*x; while( !x); ,(D),C) 循环执行一次,练习,main() y=10; do y-; while(-y); printf(“%dn”, y-); ,(D),D) 0,5.3 while 语句,练习,main() x=3; do printf(“%d ,”, x-=2); while( !(-x) ); ,(D),B) 1, -2,1,写出下列程序段的运行结果,s=5,写出下列程序段的运行结果以及循环体中的语句共执行了几次。,y=7 x=21,(1) y=1,x=3,(2) y=2,x=6,(3) y=3,x=9, ,(7) y=7,x=21,请设计一个 译密码 的程序,y=1 x=0 循环体中的语句共执行了1次,写出下列程序段的运行结果以及循环体中的语句共执行了几次。,写出下列程序段的运行结果。,a=12 y=12a=16 y=28a=16 y=44a=16 y=60,写出下列程序段的运行结果,5.4 for 语句,for(表达式1;表达式2;表达式3;) 语句1; 语句2; 语句n; ,语句格式 :,循环体,表达式1 循环初始表达式,用于进入循环体前为循环变量赋初值 由算术、赋值、逻辑和逗号表达式构成。,表达式2 循环控制表达式,用于控制循环体语句的执行次数 由关系表达式或逻辑表达式构成。,表达式3 修改循环变量表达式,即每循环一次使得表达式1的值就 要变化一次。由算术、赋值、逻辑或逗号表达式构成,语句功能 :,当表达式2 的值为真时 执行循环体中各语句。,main() int n; for(n=1; n=10; n+) printf(“%d,”,n); ,for(表达式1;表达式2;表达式3;) 语句体 ; ,B) 1,1, 2, 3, 4, 5 ,6 ,7, 8 , 9 , 10,main() int n, i=100; for(n=1; n0; n-) printf(“%d,”, i ); ,for(表达式1;表达式2;表达式3;) 语句体 ; ,100, 100, 100, 100 , 100,main() int sum, i ; for(sum=0 , i=1 ; i=100 ; i+) sum+=i ; printf(“sum=%dn”, sum ); ,main() int sum=0, i =1; do sum+=i ; i+; while( i=100 ); printf(“sum=%dn”, sum ); ,main() int sum=0, i =1; while( i=100 ) sum+=i ; i+; printf(“sum=%dn”, sum ); ,main() int sum=0, i =1; label: if( i=100) sum+=i ; i+; goto label; printf(“sum=%dn”, sum ); ,1+2+3+4+5+ +100,练习,0,main() x, y; for(x=0,y=0; x+y=50; x+,y+) printf(“%3d ”, x+y ); if (x%5=0) printf(“n”); ,2,4,6,8 10,12,14 16 18 20,22 24 26 28 3034 36 38 4042 44 46 48 50,练习,请编程序实现输出 az 26个小写的英文字母,main() char ch;,for ( ch ,a;,ch=z;,printf( “ %c , ”, ch) ; ,ch+ ),练习,输出 az 26个小写的英文字母所对应的ASCII码值,main() char ch; for (ch=a;ch=z;ch+) printf(“%d, ”, ch); ,省略表达式1该种格式常用于无需给变量赋初值的情况,for 语句的特殊使用格式:,main() int n; for( ; n=10; n+ ) printf(“%d,” ,n); ,main() int n; n=1; for( ; n100) break; printf( “%d,” ,n ); ,省略表达式3即失去了修改循环变量的值为此,在体内必须设有替代表达式3的功能。,main() int n; for(n=1; n=10; ) printf(“%d,”,n); ,main() int n; for(n=1; n=10; ) printf(“%d,”,n); n+; ,省略表达式1、3该种格式完全等价于while 语句即进入循环体前必须有赋初值语句,而且在体内要有修改循环变量的值的语句。,main() int n; for ( ; n=10 ; ) printf(“%d,”, n ); ,main() int n ; n=1; for( ; n=10; ) printf(“%d,”,n); n+; ,while(n=10),#include “string.h” main() char ch; for ( ; (ch getchar() !=n ; ) printf( “ %c ”, ch ); ,省略所有的表达式 完全等价于 while(1),main() int n; for( ; ; ) printf(“%d,”, n ); ,while(1),以上介绍的几种省略表达式的 for 语句格式很少使用,在此只是作为大家对该语句的一个了解。,三、循环的嵌套使用, for(i=1; i=9; i+) for(j=1; j=9; j+) , while(a!=b) for(n=1; n=5; n+) ,do for(; ;) while( );,for(; ;) while( ) ,while( ) while( ) ,请编写求解下列问题的程序 t=1*2*3* 10,n,main() int n, t;,t=1;,for(n=1; n=10; n+),t=t*n;,printf(“t=%dn”, t); ,t=1, n=1,n=10,t=t*n,n+,输出 t,(1-10),请编写求解下列问题的程序: S=1!+2!+3!+ +20!,1!=1,2!=1*2,3!=1*2*3,4!=1*2*3*4,5!=1*2*3*4*5 20!=1*2*3*4*5 *20,i,j (1-,i ),1-20,main() int s, t, i, j;,s=0; t=1;,for(i=1; i=20; i+),t=t*j;,printf(“s=%dn”, s); ,s=0,i (1-20),设: s , t ,i ,j,输出 s,请编写求解下列问题的程序: S=1!+2!+3!+ +20!,s+=t,j (1-i),t*=j,t=1,s=0, t=1 i (1-20) j (1 - i),for(j=1; i=i; j+),s+=t ;,t=1;,双重循环语句的特点,当外循环变量中的值变换一次时,内循环变量中的值将变换若干次,练习,请编写按下列格式打印九九表程序。,1*1=1 1*2=2 1*3=3 1*9=9 2*1=1 2*2=4 2*3=6 2*9=18 9*1=9 9*2=18 9*3=27 9*9=81,main() int a, b; for (a=1; a=9; a+) for (b=1; b=0; i-) for j=1; j=i; j+) putchar(#); for(j=1; j=4-i; j+) putchar(*); putchar(n); ,前面我们介绍了四种 能够实现循环的语句,它们退出循环的 方式通常都是以某个表达式的结果作为判断条件,当其值为零时结束循环。除了这种正常结束循环的方式外,还可以利用C语言提供的专门退出循环的语句。,主要是用于switch 结构和循环结构中,main() int i, s=0; for(i=0; i100; i+) scanf(“%dn”, ,main() int x=3,y=6,a=0; while(x+!=(y-=1) a+=1; if (yx) break; printf(“x=%d,y=%d,a=%dn”,x,y,a); ,x=5,y=4,a=1,该语句是专用于循环结构中改变某一次循环流程的语句。 其作用是:使程序流程提前结束本次循环从而开始下一次循环。,main() int n; for(n=100; n=200; n+) if(n%3!=0) continue; printf(“ %4d n”, n); ,105 108 111 114117 120 123 ,main() int i, j, x=0; for(i=0; i2; i+) x+; for(j=0; j=3; j+) if(j%2) continue; x+; x+; printf(“x=%d n”, x); ,x=4B) x=8x=6 D) x=12,练习,x=4B) x=8x=6 D) x=12,(1) i=0,x=1,j=0,x=2,j=2,x=3,x=4,(2) i=1,x=5,j=0,x=6,j=2,x=7,x=8,main() int k=0; char c=A; do switch(c+) case A:k+; break; case B:k-; case C:k+=2; break; case D:k=k%2; continue; case E:k=k*10; break; default :k=k/3; k+; while(cG); printf(“k=%d n”, k); ,练习,k=3 B) k=4 C) k=2 D) k=0,(1) c=A,k=2,(2) c=B,k=4,(3) c=C,k=7,(4) c=D

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论