C语言程序设计34课件_第1页
C语言程序设计34课件_第2页
C语言程序设计34课件_第3页
C语言程序设计34课件_第4页
C语言程序设计34课件_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

1、 循环的逻辑含义:当满足某个特定条件时,重复执行某段程序,直到条件不满足为止。两种循环结构: 当型循环结构。当P条件成立时,反复执行A操作。直到P为“假”时才停止循环。先判断,后执行。图1 当型循环结构第1页,共42页。 直到型循环结构。先执行A操作;再判断P是否为”真”;若P为“真”,则执行A,如此反复;直到P为“假”为止。先执行,再判断。真假图2 直到型循环结构直到P为假第2页,共42页。3.6.1 while 语句(当型循环结构)3.6.2 do-while 语句(直到型循环结构)3.6.3 for 语句(多功能型循环结构)3.6.4 循环结构的嵌套3.6 循环程序控制结构第3页,共42

2、页。 1、while语句的形式:while(表达式) 循环体; 需要重复执行的动作3.6.1 while 语句用来判别是否执行循环体执行过程:先求表达式的值;当表达式值为非0时,执行循环体中的语句。再判定表达式的值,再执行循环体。直到表达式值为0,结束循环。第4页,共42页。【例】#include main( ) int k=4; while (k2) printf(*); k-; printf(k=%dn,k); 运行结果为:*k=2循环体可以是单语句、多语句或空语句;若为多语句,则必须用一对大括号括起来。第5页,共42页。2022/8/4【例】 k4; while(k2) printf(”

3、 * ”); kk+1; printf( ” kd”,k); 循环体中应该有不断修改表达式的值,使循环能够趋于结束,否则将造成死循环。第6页,共42页。【例】用while语句,求1+2+3+99+100 #include main( ) int i=1,sum=0; while (i101) sum+=i ; i+; printf(“sum=%dn,sum); 【例】用while语句,求1*2*3*99*100 sum=1; i=1;sum*= i;第7页,共42页。【例】用while语句逆序输出26个小写字母。 include main() char ch; ch=z;while (ch=a

4、) printf(“%c”,ch);ch-; 编程思路:涉及到循环语句时,应首先判断循环条件,再判断循环体都应包含哪些操作。第8页,共42页。2022/8/4【例】对键盘输入的字符进行统计并输出其中数字字符的个数,约定用换行符结束循环。输出数字字符的个数输入一个字符不断的接收从键盘输入的数据,循环终止条件是:输入的字符是换行符。判断是否是数字字符,是的话变量n加1第9页,共42页。include main() int n=0;char c; c=getchar( ); while(c!=n) if(c=0&c=9) n+; c=getchar( ); printf(“n=%dn”,n); 第1

5、0页,共42页。3.6.2 do-while语句(直到型) do-while语句的形式为:do 循环体;while(表达式);特点:先执行循环体,再判断条件是否成立。do-while循环结构直到表达式值为假第11页,共42页。2022/8/4 #include main( ) int i=0,sum=0; do i+; sum=sum+i ; while(i3) ; printf(“sum=%d”,sum); 程序的运行结果为:sum6【例】阅读程序写出程序运行结果。第12页,共42页。2022/8/4用while语句改写do-while语句:#includemain( ) int i=0,s

6、um=0; while(i3) i+; sum=sum+i ; printf(“sum=%d”,sum); 运行结果为:sum6第13页,共42页。2022/8/4运行结果:2)while与do-while循环的比较sum=6第14页,共42页。2022/8/4【思考题】对于下面的这个程序,如果循环体改为i+; sum=sum+i;后,结果会一样吗?第15页,共42页。【例】dowhile语句逆序输出26个小写字母:include main() char ch; do printf(“%c”,ch); ch-; while(ch= a);ch=z;第16页,共42页。for语句可以用于循环次数

7、已经确定的情况,还可用于循环次数不确定而只给出循环结束条件的情况,它可以代替while和do-while语句。 1)for语句的语法形式和语义 for( 表达式1 ; 表达式2 ; 表达式3) 循环体;给循环控制变量赋初值结束循环的控制条件修改循环变量值3.6.3 for语句第17页,共42页。for语句一般形式中的“表达式1”可以省略,此时应在 for语句之前给循环变量赋初值。循环体【例1】for( i=1; i4; i+ ) product=product*i;【例2】 for( ; i3; i+ ) product=product*i;i=1;第18页,共42页。表达式1可以是设置循环变

8、量初值的赋值表达式,也可以是与循环变量无关的其他表达式。【例3】i=1;for(product=1; i3; i+ ) product=product*i;第19页,共42页。2022/8/4【例4】i=1;for( ; i5; ) product=product*i; i+; 可以省略表达式1和表达式3,只有表达式2,即只给循环条件,在这种情况下,完全等同于while语句,因此在循环体内必须有改变循环变量的语句。第20页,共42页。 i=1; for( ; ; ) if(i5) product=product*i; i+; for语句的各表达式都可以省略,但分号间隔符不能少;三个表达式都可省

9、略;但在循环体有控制循环结束的语句。【例5】第21页,共42页。【例】编写求n!的程序,即计算1*2*3*4*n的值,并输出。 输入n定义变量区域设计一个循环结构来计算1*2*n的值输出最终的结果第22页,共42页。#include main( ) int i,n,result=1; /*提高程序的可读性*/printf(“Enter n:”); scanf(“%d”,&n); for(i=1;i=n;i+) result=result*i; printf(“%d!=%dn”,n,result);循环结构:循环变量的初值、循环结束条件、修改循环变量的表达式、循环体的内容。第23页,共42页。3

10、.6.4 循环结构的嵌套 一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。内嵌的循环中还可以嵌套循环,这就是多层循环。三种循环(while循环、dowhile循环和for循环)可以互相嵌套。例如,下面几种都是合法的形式:(2)do do while( ); while( );(1)while( ) while( ) 第24页,共42页。(6)do for ( ; ; ) while( ); (3)for( ; ; ) for( ; ; ) (4)while( ) do while( ); (5)for( ; ; ) while( ) 第25页,共42页。# include main(

11、) int i, n, p, s; s=0; n=1; while(n=4) p=1; for(i=1;i=n;i+) p=p*i; s=s+p; n+; printf(“s=%dn”, s); n=4YN求解i=1p=1;i=np=p*ii+YNs=s+p; n+;功能:求1!+2!+3!+ 4!第26页,共42页。百鸡问题:今有鸡翁一,值钱伍;鸡母一,值钱三;鸡雏三,值钱一。凡百钱买鸡百只,问鸡翁、母、雏各几何?公鸡5块钱/只,母鸡3块钱/只,小鸡3只1块钱。问: 100块钱买100只鸡,每只鸡各买多少只。公鸡:cock 母鸡:hen 小鸡:chick第27页,共42页。分析:cocks=

12、0当cocks=19时hens=0 当hens=33时 chicks=100-cocks-hens 如果(5*cocks+3*hens+1/3*chicks=100)则输出 hens加1cocks加1 公鸡5块钱/只,母鸡3块钱/只,小鸡3只1块钱。问: 100块钱买100只鸡,每只鸡各买多少只。第28页,共42页。公鸡5元/只,母鸡3元/只,小鸡3只1元。问: 100块钱买100只鸡,每只鸡各买多少只。#include stdio.hmain()int cocks,hens,chicks;cocks=0;while(cocks20) hens=0; while(hens33) chicks=

13、100-cocks-hens;if(5*cocks+3*hens+1/3*chicks=100)printf(%d,%d,%dn,cocks,hens,chicks); hens+; cocks+; 第29页,共42页。#include stdio.hmain()int cocks,hens,chicks;for(cocks=0;cocks20;cocks+) for(hens=0;hens33;hens+) chicks=100-cocks-hens;if(5*cocks+3*hens+1/3*chicks=100)printf(%d,%d,%dn,cocks,hens,chicks); 公

14、鸡5元/只,母鸡3元/只,小鸡3只1元。问: 100块钱买100只鸡,每只鸡各买多少只。第30页,共42页。换零钱问题:将100块整钱兑换成1元,5元,10元的零钱,共有多少种不同的换法?(每种钱至少一个)#include stdio.hmain()int s,w,c=0;for(s=1;s=9;s+) for(w=1;w=(100-s*10)/5-1;w+) printf(%d,%d,%dn,s,w,100-10*s-5*w); c+; printf(n%dn,c); s:十块钱的个数,w:五块钱的个数,c:次数第31页,共42页。3.7 控制转移语句3.7.1 break 语句3.7.2

15、continue 语句3.7.3 goto 语句第32页,共42页。3.7.1 break语句 形式: if(表达式) break; 【例】 while(1) while( 1 ) break; 功能:用在当前循环中,使程序跳出最近一层的循环体,终止当前的循环;注意:break语句只能用在switch语句和循环语句中,不能出现在其他地方。第33页,共42页。【例】for (x=1,y=3;x3) break; printf(“y=%dn”,y);当for循环执行到y=y+x时,y的值已经大于3,此时执行break语句,直接跳出for循环,执行for循环下面的打印语句。第34页,共42页。【例】

16、从键盘输入10个数,并求和。如果输入的是负数,则提前结束循环。main( ) # include int x, n=0,s=0; while (n10) if (x0) break; scanf(“%d”,&x); s+=x; printf(“和s=%d”, s); n+; for ( ; n10; n+) 第35页,共42页。 3.7.2 continue语句 形式:if(表达式)continue;功能:结束本次循环,转入下一次循环条件的判断与执行,即开始下一轮循环,并不结束循环;只能用于循环体结构中。while(表达式1) if(表达式2) continue; do if(表达式1) co

17、ntinue; while(表达式2)for(exp1;exp2;exp3) if(表达式4) continue; 第36页,共42页。【例】从键盘输入10个数,求其中的非负数之和。main( ) # include int x, n=0,s=0; while (n10) if (x0) continue; scanf(“%d”,&x); s+=x; printf(“非负数之和s=%d”, s); n+; for ( ; n10; n+) 第37页,共42页。【例】统计并输出1到200之间能被3整除的数及其个数。 main( ) # include int i, count=0; for (i

18、=1; i=200; i+) if (i%3!=0) continue; count+; printf(“%d ” , i); printf(“ncount=%d”, count); 第38页,共42页。 3.7.3 goto语句(了解) 形式:goto 语句标号; 功能:程序流程无条件地转移到标号语句处往下执行。说明: goto语句常与条件语句配合使用,用来实现条件转移、构成循环、跳出循环等功能。注意:goto语句不能跳到本函数外,也不能从循环体外跳转到循环体内。语句标号用标识符表示,放在某一语句行的前面,标号后加冒号“:”。第39页,共42页。例:用goto语句,求s=1+2+3+100的值。#include stdio.hmain() int s=0,i=1; loop:s=s+I; i=i+1; if(i=100) goto loop; printf(“s=%dn”,s);第40页,共42页。break,c

温馨提示

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

评论

0/150

提交评论