C语言第四版第6章 循环控制_第1页
C语言第四版第6章 循环控制_第2页
C语言第四版第6章 循环控制_第3页
C语言第四版第6章 循环控制_第4页
C语言第四版第6章 循环控制_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

1、编辑课件第6章 循环控制c程序设计编辑课件顺序结构的特点:顺序结构的特点:1.每一条语句按顺序执行;每一条语句按顺序执行;2.每一条语句只执行一遍,每一条语句只执行一遍,不重复执行;不重复执行;3.也没有语句不执行。也没有语句不执行。语句2语句1语句nSTARTEND复习复习复习:复习: 程序的基本结构程序的基本结构编辑课件复习:复习: 分支结构的特点:分支结构的特点:1.每一条执行了的语每一条执行了的语句最多执行一遍。句最多执行一遍。2.不重复执行;不重复执行;3.但有语句不执行。但有语句不执行。条件语句序列If语句后面的下一条语句NY语句序列条件语句序列2If语句后面的下一条语句语句序列1

2、YN复习:复习: 程序的基本结构程序的基本结构编辑课件第第6 6章章 循环结构程序设计循环结构程序设计 主要内容主要内容: :n循环的基本概念循环的基本概念nwhilewhile语句语句ndo whiledo while语句语句nfor for 语句语句n循环的嵌套循环的嵌套 编辑课件v功能:无条件转移语句v作用:1.用if 和goto语句构成循环2.跳出多重嵌套循环v说明:1.不能用整数作标号2.标签只能出现在goto所在函数内,且唯一3.标签只能加在可执行语句前面4.限制使用goto语句goto语句及用goto构成循环goto语句一般格式: goto 语句标号; 标号:语句; goto 语

3、句语句#include main() int i,sum=0; i=1; loop: sum+=i; i+; goto loop; 编辑课件#include main() int i,sum=0; i=1;loop: if(i0) x-;#includevoid main( ) int i , s ; i=1; while ( i=10 ) s=s+i; i=i+1; printf(“please output s=%dn”,s);编辑课件例:求例:求S=1+2+3+10S=1+2+3+10的值的值 i=10s=s+i;i=i+1;输出s的值NYi=1;源程序:源程序:#includevoid

4、 main( ) int i , s ; i=1; while ( i=10 ) s=s+i; i=i+1; printf(“please output s=%dn”,s);编辑课件用while循环语句实现求1+2+100#include main() int i,sum=0; i=1; while(i=100) sum=sum+i; i+; printf(%d,sum);循环初值循环终值循环变量增值循环条件循环体While(i=100) i+; sum=sum+i;编辑课件i=10s=s+i;i=i+1;输出s的值NYi=1;源程序:源程序:#includevoid main( ) int

5、i , s ,n; scanf(“please input n:%d”,&n); i=1; while ( i=n ) s=s+i; i=i+1; printf(“please output s=%dn”,s);n例:求例:求S=1+2+3+n 的值的值编辑课件 do while语句构成的循环结构 一般形式一般形式:do 语句;while(表达式)执行流程执行流程:do循环体expr假(0)真(非0)while#include main() int i,sum=0; i=1; do sum=sum+i; i=i+1; while(i=100); printf(%d,sum);编辑课件d

6、o-while同 while语句的区别expr循环体假(0)真(非0)while循环控制在循环体之前,只有当while后的表达式为非0时,才可能执行循环体,循环体有可能一次都不执行。do循环体expr假(0)真(非0)while总是先执行一次循环体,然后再求表达式的值,因此,无论表达式的值是0还是非0,循环体至少执行一次。编辑课件源程序:源程序:#includevoid main( ) int sum=0,i; scanf(“%d”,&i); while ( i=100 ) sum=sum+i; i=i+1; printf(“sum=%dn”,sum);源程序:源程序:#include

7、void main( ) int sum=0,i; scanf(“%d”,&i); do sum=sum+i; i=i+1; while ( i=100 ); printf(“sum=%dn”,sum);while和和do while循环比较循环比较编辑课件i=0;do i+; j=20;While(i10)printf(“%d”,i);i=0;x=11;While(x10); i=+;x-;printf(“%d”,i);i=0;x=0do i+; x+;While(x10); printf(“%d”,i)while和和do while循环循环编辑课件 for语句 一般形式for(ex

8、pr;expr;expr3) 循环体语句;循环体语句;expr2循环体假(0)真(非0)forexpr1expr3执行流程#include main() int i,sum=0; for(i=1;i=100;i+) sum+=i; printf(%d,sum);编辑课件 for语句中expr1, expr2 ,expr3 类型任意,都可省略,但分号;不可省 for( ; ;):无限循环 for语句可以转换成while结构语句i=1;for (; i=100; i+) sum=sum+i;for (i=1; ; i+) sum=sum+i;for (sum=0,i=1;i=100;) sum=s

9、um+i; i+; i=1;for (;i=100;) sum=sum+i; i+; for ( ; ;) 语句相当于while(1) 语句expr1;while(expr2)循环体语句;expr3; for语句的几点说明 for(i=0;(c=getchar()!=n;i+=c); 编辑课件#includemain( ) int i=0; for(i=0;i10;i+) putchar(a+i);#includemain( ) int i=0; for(;i10;i+) putchar(a+i);#includemain( ) int i=0; for(;i10;) putchar(a+i+

10、)#includemain( ) int i=0; for(;i10;putchar(a+i),i+) ;例例 从从a显示到显示到j运行结果:abcdefghij编辑课件例: 求 ,即计算!n1n main() int i,s,n; s=1; printf(Enter n:); scanf(%d,&n); for(i=1;i=n;i+) s=s*i; printf(s=%dn,s);编辑课件练习练习1:观察以下程序运行结果并分析。:观察以下程序运行结果并分析。main()int n=0;while (n3)printf(n is %dn,n);n+;printf(Thats all t

11、his prgram doesn);在使用在使用while时,只有位于判断条件之后的单个语句时,只有位于判断条件之后的单个语句(简单语句或复合语句)才是循环的部分。(简单语句或复合语句)才是循环的部分。编辑课件int main(void)int n=0;while(n+3);printf(n is %dn,n);printf(Thats all this program does.n);return 0;循环在判断条件后的第一个简单或复合语句处就结循环在判断条件后的第一个简单或复合语句处就结束了。束了。练习练习2:观察以下程序运行结果并分析。:观察以下程序运行结果并分析。编辑课件循环的嵌套循环

12、的嵌套 三种循环可互相嵌套,层数不限外层循环可包含两个以上内循环,但不能相互交叉嵌套循环的执行流程(1) while() while() . (2) do do while( ); . while( );(3) while () do while( ); . (4) for( ; ;) do while(); while() .内循环外循环内循环编辑课件main() int i,j=1; for(i=0;i=2;i+) printf(%d,%dn, j,i);1,01,11,2main() int i,j=1; for(i=0;i=2;i+) printf(%dn, j); printf(%d

13、n, i); main() int i,j=1; for(j=0;j=2;j+) for (i=0;i=2;i+) printf(“%d,%d”,j,i); printf(n); 循环的嵌套循环的嵌套1011120,00,10,21,01,11,22,02,12,2编辑课件例: 循环嵌套,输出九九表- | 1 2 3 4 5 6 7 8 9-1| 1 2 3 4 5 6 7 8 92| 2 4 6 8 10 12 14 16 183| 3 6 9 12 15 18 21 24 274| 4 8 12 16 20 24 28 32 365| 5 10 15 20 25 30 35 40 456|

14、 6 12 18 24 30 36 42 48 547| 7 14 21 28 35 42 49 56 638| 8 16 24 32 40 48 56 64 729| 9 18 27 36 45 54 63 72 81编辑课件n按如下格式打印100以内整数的平方根表。 950. 9899. 9849. 9798. 9747. 9695. 9644. 9592. 9539. 9487. 99434. 9381. 9327. 9274. 9220. 9165. 9110. 9055. 9000. 9944. 88888. 8832. 8775. 8718. 8660. 8602. 8544. 8

15、485. 8426. 8367. 87307. 8246. 8185. 8124. 8062. 8000. 8937. 7874. 7810. 7746. 76681. 7616. 7550. 7483. 7416. 7348. 7280. 7211. 7141. 7071. 75000. 7928. 6856. 6782. 6708. 6633. 6557. 6481. 6403. 6325. 64245. 6164. 6083. 6000. 6916. 5831. 5745. 5657. 5568. 5477. 53385. 5292. 5196. 5099. 5000. 5899. 47

16、96. 4690. 4583. 4472. 42359. 4243. 4123. 4000. 4873. 3742. 3606. 3464. 3317. 3162. 31000. 3828. 2646. 2449. 2236. 2000. 2732. 1414. 1000. 1000. 009876543210编辑课件n编程输出如下上三角形式的九九乘法表。 81726463564954484236454035302536322824201627242118151291816141210864987654321987654321编辑课件例例: 打印如图显示:打印如图显示:#include #de

17、fine ROWS 6#define CHARS 6int main(void)int row;char ch;for( row = 0; row ROWS ;row+ )for(ch=(A+row ); ch=10) break; printf(“%d”,i)void main()int s=1,k=0;switch (s)case 1: k+=1;case 2: k+=2;break;default: k+=3; printf(“%d”,k);编辑课件exprbreak;假(0)真(非0)whiledobreak;.expr假(0)真(非0)whilebreak语句的执行过程编辑课件exp

18、r2break;.假(0)真(非0)forexpr1expr3switchexpr语句组1break;语句组2break;语句组nbreak;语句组break;.const 1const 2const ndefaultcase break语句的执行过程编辑课件define PI 3.14159main() int r; float area; for(r=1;r100) break; printf(r=%d,area=%.2fn,r,area); 例例 break举例:输出圆面积,面积大于举例:输出圆面积,面积大于100时停止。时停止。编辑课件include main() int i,j; c

19、har c; while(1) c=getchar(); if(c=a & c=z) putchar(c-a+A); else break; 例例 break举例:小写字母转换成大写字母举例:小写字母转换成大写字母,直至输入非字母字符。直至输入非字母字符。编辑课件v功能:结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断v仅用于循环语句中exprcontinue;假(0)真(非0)while真(非0)docontinue;.expr假(0)whileexpr2continue;.假(0)真(非0)forexpr1expr3continue语句编辑课件main()i

20、nt n; for(n=1;n=100;n+) if (n%7= = 0) continue; printf(“%d”,n);continue举例:输出举例:输出100以内不能被以内不能被7整除的数。整除的数。编辑课件break和 continue expr2break;.假(0)真(非0)forexpr1expr3expr2continue;.假(0)真(非0)forexpr1expr3define PI 3.14159main() int r; float area; for(r=1;r100) break; printf(%d,%.2fn,r,area); main() int n; f

21、or(n=1;n=100;n+) if (n%7= = 0) continue; printf(“%d”,n); 编辑课件应用综合举例 #include main() char c; printf(“input one letter, enter for finish:n); while(c=getchar()!=n) if (c=a&c=z) c=c-a+A; putchar(a); 例 从终端输入一行字符,把所有的小写转换成大写。 编辑课件应用综合举例 例:求n以内(不包括n)同时能被3和7整数的所有自然数之和的平方根smain() int i,j=0; double k; pri

22、ntf(“please input n:”); scanf(“%d”,n); for(i=0;in;i+) if(i%3=0&i%7=0) j+=i; k=sqrt(j); printf(“nthe output is:%f”,k);编辑课件*应用综合举例 ( 在屏幕上用*显示下面图形) * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *main

23、() int x,y; for (x=1;x7;x+) for (y=1;y=x;y+) putch(*); printf(“n”); getch();编辑课件例:在三位整数(100至999)中寻找符合条件的整数,它既是完全平方数,又有两位数字相同,例如144、676等。应用综合举例 #include main() int I,j,k=0; int hun,ten,data;clrscr();for(j=10;j=sqrt(999);j+) I=j*j; hun=I/100;data=I-hun*100; ten=data/10;data=data-ten*10; if (hun=ten|hu

24、n=data|ten=data)printf(%d,I); getch();编辑课件应用综合举例n输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。编辑课件应用综合举例n打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是一水仙花数,因为153=13+53+33。编辑课件应用综合举例n将1元钱兑换成1分、2分、5分的硬币,若每种面值的硬币都不得少于一个,问有几不同的兑换方法?编辑课件应用综合举例n我国古代的张丘建算经中有这样一道著名的百鸡问题:“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?”

25、其意为:公鸡每只5元,母鸡每只3元,小鸡3只1元。用100元买100只鸡,问公鸡、母鸡和小鸡各能买多少只? 编辑课件#include main()int a,n,i=1; long int sn=0,tn=0; printf(“please input a and n:n”); scanf(“%d,%d”,&a,&n); while (i=n) 例 求s=a+aa+aaa+aaaa+aaa的值,其中a是一个数字。例如:2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘输入。 tn=tn+a; sn=sn+tn; tn=tn*10; i+; print

26、f(“%d”,sn); 应用综合举例 编辑课件用公式求用公式求.7151311应用综合举例 编辑课件应用综合举例一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。编程序找出1000之内的所有完数,并按下面格式输出其因子:6 its factors are 1,2,3编辑课件应用综合举例有一分数序列有一分数序列 2/1,3/2,5/3,8/5,13/8,21/13,求出这个数列的前求出这个数列的前20项之和。项之和。编辑课件 Dijkstran编程的艺术就是处理复杂性的艺术n简单是可靠的先决条件 n优秀的程序员很清楚自己的能力是有限的,所以他对待编程任务的态度是完全谦卑的,特别是,他们会象逃避瘟疫那样逃避 “聪明的技巧”。1972年图灵奖演讲编辑课件练习在循环语句结构中,当循环条件为(在循环语句结构中,当循环条件为( )时,执行循环体语句。)时,执行循环体语句。A.0B.falseC.trueD.非非0答案答案:D以下程序的运行结果是()以下程序的运行结果是()main() int sum=0,i=11

温馨提示

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

评论

0/150

提交评论