《c语言-第5章循环程序设计.ppt》由会员分享,可在线阅读,更多相关《c语言-第5章循环程序设计.ppt(83页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C语言程序设计语言程序设计 第第5章章 循环程序设计循环程序设计管理学院管理学院电子商务系电子商务系1C C语言程序设计语言程序设计语言程序设计语言程序设计 第第5章章 循环程序设计循环程序设计5.1 概述概述 5.2 while和和do while循环循环 5.3 for循环循环 5.4 循环的嵌套循环的嵌套 5.5 循环的控制循环的控制 5.6 应用举例应用举例5.7 程序调试程序调试 2C C语言程序设计语言程序设计语言程序设计语言程序设计 第第5章章 循环程序设计循环程序设计3C C语言程序设计语言程序设计语言程序设计语言程序设计 第第5章章 循环程序设计循环程序设计4C C语言程序设
2、计语言程序设计语言程序设计语言程序设计 第第5章章 循环程序设计循环程序设计5C C语言程序设计语言程序设计语言程序设计语言程序设计 第第5章章 循环程序设计循环程序设计6C C语言程序设计语言程序设计语言程序设计语言程序设计 第第5章章 循环程序设计循环程序设计7C C语言程序设计语言程序设计语言程序设计语言程序设计 第第5章章 循环程序设计循环程序设计8C C语言程序设计语言程序设计语言程序设计语言程序设计 第第5章章 循环程序设计循环程序设计9C C语言程序设计语言程序设计语言程序设计语言程序设计 第第5章章 循环程序设计循环程序设计 水温度的水温度的量变量变引起水的物理形态的引起水的物
3、理形态的质变质变:水在标淮大气压下加温到水在标淮大气压下加温到100摄氏度变成汽摄氏度变成汽降温到降温到0摄氏度变成冰。摄氏度变成冰。10C C语言程序设计语言程序设计语言程序设计语言程序设计 第第5章章 循环程序设计循环程序设计 物体从地球上抛射速度的物体从地球上抛射速度的量变量变引起运动形式的引起运动形式的质变质变:小于小于7911m/s时,在地面上沿弹道飞行;时,在地面上沿弹道飞行;达到达到7911m/s时,绕地球作椭园轨道运动,成为地球的卫星;时,绕地球作椭园轨道运动,成为地球的卫星;增大到增大到11189m/s时,脱离地球成为绕太阳运行的一个行星;时,脱离地球成为绕太阳运行的一个行星
4、;速度达到速度达到16662m/s时,脱离太阳系成为迢游太空的一个天体。时,脱离太阳系成为迢游太空的一个天体。11C C语言程序设计语言程序设计语言程序设计语言程序设计 第第5章章 循环程序设计循环程序设计 计算机程序由若干语句顺序组成:计算机程序由若干语句顺序组成:顺序结构的程序只能按照语句的先后顺序从前向顺序结构的程序只能按照语句的先后顺序从前向后依次执行后依次执行分支结构程序虽然允许在执行了某个判断后跳过分支结构程序虽然允许在执行了某个判断后跳过某些语句执行后面的语句,但也只能按语句的前某些语句执行后面的语句,但也只能按语句的前后次序执行后次序执行有时,需要在程序中重复执行某个语句或语句
5、块,有时,需要在程序中重复执行某个语句或语句块,就需要循环结构就需要循环结构12C C语言程序设计语言程序设计语言程序设计语言程序设计 第第5章章 循环程序设计循环程序设计生活中的例子:生活中的例子:击鼓传花:击鼓传花:大家坐成一个圈,鼓声响起的时候将花束顺序交大家坐成一个圈,鼓声响起的时候将花束顺序交到下一个人的手里,依次向下传递,当鼓声突然到下一个人的手里,依次向下传递,当鼓声突然中断时停止传花,花束落在谁的手里便成为输家中断时停止传花,花束落在谁的手里便成为输家4100米接力赛跑:米接力赛跑:第第1个人跑完个人跑完100米后将接力棒传给第米后将接力棒传给第2个人,第个人,第2个人再跑个人
6、再跑100米,然后是第米,然后是第3个人,直到第个人,直到第4个个人跑完最后一个人跑完最后一个100米米共同点:共同点:都要完成相同的任务:都要完成相同的任务:量变量变的重复内容的重复内容都有结束条件:发生都有结束条件:发生质变质变的界限的界限13C C语言程序设计语言程序设计语言程序设计语言程序设计 第第5章章 循环程序设计循环程序设计1.计算计算sum=1+2+3+10014C C语言程序设计语言程序设计语言程序设计语言程序设计 第第5章章 循环程序设计循环程序设计1.计算计算sum=1+2+3+100循环体循环控制条件循环控制变量循环的初始化#include void main()int
7、 i=1,sum=0;while(i=100)sum=sum+i;i+;printf(“Sum=%d n”,sum);15C C语言程序设计语言程序设计语言程序设计语言程序设计 第第5章章 循环程序设计循环程序设计2.计算计算sum=2+4+6+100循环体循环控制条件循环控制变量循环的初始化#include void main()int i=2,sum=0;while(i=100)sum=sum+i;i+=2;printf(“Sum=%d n”,sum);16C C语言程序设计语言程序设计语言程序设计语言程序设计 5.2 while和和do while循环循环格式:格式:while(表达式表
8、达式)语句语句do 语句语句 while(表达式表达式);说明:说明:括号中的括号中的“表达式表达式”是循环控制条件,但不限于关是循环控制条件,但不限于关系表达式和逻辑表达式系表达式和逻辑表达式“语句语句”是单一语句,但可以是复合语句是单一语句,但可以是复合语句如果如果while语句的括号后面只有语句的括号后面只有“;”,则循环体,则循环体为空。如果为空。如果do-while语句的括号后面(分号前面)语句的括号后面(分号前面)还有其他符号,则出现语法错误还有其他符号,则出现语法错误17C C语言程序设计语言程序设计语言程序设计语言程序设计 5.2 while和和do while循环循环whil
9、e语句的执行过程语句的执行过程while语句的执行过程是:语句的执行过程是:计算计算“表达式表达式”的值;的值;若若“表达式表达式”的值不时的值不时0,为,为“真真”,继续执行,继续执行;否则,结束循环,;否则,结束循环,转到转到while语句后面的语句继续执语句后面的语句继续执行程序;行程序;执行执行“语句语句”部分,即执行循环体;部分,即执行循环体;返回返回继续执行。继续执行。18C C语言程序设计语言程序设计语言程序设计语言程序设计 5.2 while和和do while循环循环do-while语句的执行过程语句的执行过程19C C语言程序设计语言程序设计语言程序设计语言程序设计 5.2
10、 while和和do while循环循环循环语句的特点:循环语句的特点:while循环是循环是“先判断后循环先判断后循环”,如果开始时循,如果开始时循环条件不满足,循环体就一次也不执行环条件不满足,循环体就一次也不执行do-while循环是循环是“先循环后判断先循环后判断”,即使第一,即使第一次判断的结果为次判断的结果为“假假”,循环体也已经执行了一,循环体也已经执行了一次次但不论哪种循环,循环体中必须包含能够使循环但不论哪种循环,循环体中必须包含能够使循环条件变为条件变为“假假”的运算的运算20C C语言程序设计语言程序设计语言程序设计语言程序设计 5.2 while和和do while循环
11、循环循环的变化:循环的变化:sum=1+2+3+100#include void main()int i=1,sum=0;while(i=100)sum=sum+i+;printf(“Sum=%d n”,sum);#include void main()int i=1,sum=0;dosum=sum+i;i+;while(i=100);printf(“Sum=%d n”,sum);21C C语言程序设计语言程序设计语言程序设计语言程序设计 5.2 while和和do while循环循环几何级数几何级数2x的力量:的力量:一页普通纸的厚度约为一页普通纸的厚度约为0.1mm(1mm=10-3m)珠
12、穆朗玛峰的高度为珠穆朗玛峰的高度为8844.43m编写程序计算一下,普通纸对折多少次可以超过珠编写程序计算一下,普通纸对折多少次可以超过珠穆朗玛峰的高度?穆朗玛峰的高度?22C C语言程序设计语言程序设计语言程序设计语言程序设计 5.2 while和和do while循环循环#include void main()double paper_height,mountain_height;int number;paper_height=0.0001;mountain_height=8844.43;number=0;while(paper_height mountain_height)paper_h
13、eight*=2;number+=1;printf(对折第对折第%d次后的高度是次后的高度是%g。n,number,paper_height);23C C语言程序设计语言程序设计语言程序设计语言程序设计 5.2 while和和do while循环循环几何级数几何级数2x的力量:的力量:中国战国时期的赵国辩士公孙龙有一个著名命题:中国战国时期的赵国辩士公孙龙有一个著名命题:“一尺之棰,日取其半,万世不竭一尺之棰,日取其半,万世不竭”。这是说,一。这是说,一尺长尺长(0.33m)的一根木棰,每天取它一半,世世代代的一根木棰,每天取它一半,世世代代也取不完。这一命题,包含了某些朴素辩证法的思也取不完
14、。这一命题,包含了某些朴素辩证法的思想,它猜测到了想,它猜测到了物质物质的无限可分性。但严格说来它的无限可分性。但严格说来它并不科学。因为就某一并不科学。因为就某一具体物质形态具体物质形态来说,它在被来说,它在被分割到一定程度时就不再是这一事物了。分割到一定程度时就不再是这一事物了。最大的原子是铯,半径为最大的原子是铯,半径为225pm(1pm=10-12m)编写程序计算一下,这只木棰日取一半,取多少天编写程序计算一下,这只木棰日取一半,取多少天可以比铯原子的半径小?可以比铯原子的半径小?24C C语言程序设计语言程序设计语言程序设计语言程序设计 5.2 while和和do while循环循环
15、25C C语言程序设计语言程序设计语言程序设计语言程序设计 5.2 while和和do while循环循环#include void main()double hammer_height,cesium_radius;int number;hammer_height=0.33;cesium_radius=225e-12;number=0;while(cesium_radius hammer_height)hammer_height/=2;number+=1;printf(第第%d天后的高度是天后的高度是%g。n,number,hammer_height);26C C语言程序设计语言程序设计语言程
16、序设计语言程序设计 5.2 while和和do while循环循环恩格斯说:恩格斯说:“纯粹的量的分割是有一个极限的,到了纯粹的量的分割是有一个极限的,到了这个极限它就转化为质的差别;物体纯粹是由分子构这个极限它就转化为质的差别;物体纯粹是由分子构成的,但它是本质上不同于分子的东西,正如分子又成的,但它是本质上不同于分子的东西,正如分子又不同于原子一样不同于原子一样”。取到第取到第3天,剩下的部分天,剩下的部分4.125cm长,这时它还能做为长,这时它还能做为“木棰木棰”吗?取到第吗?取到第31天,它剩下的部分已经没有分天,它剩下的部分已经没有分子那么大了,这时它不仅不再能成为子那么大了,这时
17、它不仅不再能成为“木棰木棰”,连木,连木头的物理分子都已经不是了。当然,它还可以被取下头的物理分子都已经不是了。当然,它还可以被取下去,但随着次数的变化,它必然会发生不同层次的去,但随着次数的变化,它必然会发生不同层次的质质变变。严格说来,应该是严格说来,应该是“一尺之一尺之棰棰,日取其半,三日可竭,日取其半,三日可竭”;作为;作为木质木质应该是应该是“一只之棰,日取其半,一月乃一只之棰,日取其半,一月乃竭竭”;作为;作为物质物质,应该是,应该是“一尺之棰,日取其半,万一尺之棰,日取其半,万世不蝎世不蝎”。这就是说,不同层次的。这就是说,不同层次的量变量变,总是引起与,总是引起与之相应的之相应
18、的质变质变。27C C语言程序设计语言程序设计语言程序设计语言程序设计 5.2 while和和do while循环循环循环的嵌套循环的嵌套如果在一个循环的循环体内包含另一个完整的如果在一个循环的循环体内包含另一个完整的循环则称为循环则称为循环的嵌套循环的嵌套,其中被嵌套的循环称,其中被嵌套的循环称为为内循环内循环,而嵌套了内循环的是,而嵌套了内循环的是外循环外循环内循环还可以嵌套循环,形成多级(层)嵌套内循环还可以嵌套循环,形成多级(层)嵌套28C C语言程序设计语言程序设计语言程序设计语言程序设计 5.2 while和和do while循环循环顺序打印顺序打印1-10的阶乘,即的阶乘,即1!
19、,2!,10!本题的关键是求阶乘本题的关键是求阶乘数学上,数学上,n!=123(n-1)n29C C语言程序设计语言程序设计语言程序设计语言程序设计 5.2 while和和do while循环循环外循环内循环对比程序:对比程序:#include void main()int i=1;float f=1;while(i=10)f=f*i;printf(%2d!=%.0f n,i,f);i+;思考一下:思考一下:8-10的阶乘的阶乘#include void main()int i=1,j;float f;while(i=10)j=1;f=1;while(j=i)f=f*j;j+;printf(“
20、%2d!=%.0f n”,i,f);i+;30C C语言程序设计语言程序设计语言程序设计语言程序设计 5.2 while和和do while循环循环 循环的嵌套不仅可以发生在相同语句之间,如循环的嵌套不仅可以发生在相同语句之间,如while嵌套嵌套while、do-while嵌套嵌套do-while,while语句和语句和do-while语句也可以互相嵌语句也可以互相嵌套套(1)while(.)(2)while()while()dowhile();(3)do(4)dowhile()do while();while();31C C语言程序设计语言程序设计语言程序设计语言程序设计 5.2 whil
21、e和和do while循环循环错误的嵌套形式 循环必须是完整的,不允许循环必须是完整的,不允许内外循环交叉嵌套内外循环交叉嵌套f=1;while(i 10)i=1;do f=f*i;i+;while(i10);混乱的控制条件 内外循环的循环控制条件通常内外循环的循环控制条件通常是分开的,相对独立的是分开的,相对独立的i=1;s=0;while(i 3)s=s+f;i=1;f=1;while(i5)i+=2;f=f*i;i+;32C C语言程序设计语言程序设计语言程序设计语言程序设计 5.2 while和和do while循环循环应用举例应用举例输入一个输入一个5位数,计算并输出各位的和位数,计
22、算并输出各位的和方法一:将输入的方法一:将输入的5位数位数看作是看作是5个独立的数字个独立的数字字符,依次读取每一个字符,依次读取每一个数字字符,将其转化为数字字符,将其转化为对应的数字后再求和对应的数字后再求和将数组字符将数组字符ch转化为转化为数字的方法为数字的方法为ch-033C C语言程序设计语言程序设计语言程序设计语言程序设计 5.2 while和和do while循环循环输入一个输入一个5位数,计算并输出各位的和位数,计算并输出各位的和#include void main()char ch;int i=0,sum=0;printf(“Enter a number with 5 di
23、gits:”);while(i 5)ch=getchar();sum+=ch-0;/*将数字字符转化为对应的数字将数字字符转化为对应的数字*/i+;printf(“Sum of these 5 digits is%dn”,sum);34C C语言程序设计语言程序设计语言程序设计语言程序设计 5.2 while和和do while循环循环几种常见运算:几种常见运算:l如果如果chch为数字字符,则表达式为数字字符,则表达式chch-0-0的值为对的值为对应的数字应的数字l如果如果chch为大写字母,则表达式为大写字母,则表达式 ch-A+ach-A+a 为为对应的小写字母对应的小写字母l如果如果
24、chch为小写字母,则表达式为小写字母,则表达式 ch-a+Ach-a+A 为为对应的大写字母对应的大写字母技巧技巧35C C语言程序设计语言程序设计语言程序设计语言程序设计 5.2 while和和do while循环循环输入一个输入一个5位数,计算并输出各位的和位数,计算并输出各位的和方法二:将输入的方法二:将输入的5位位数看作一个整数,先数看作一个整数,先读取该整数,再分离读取该整数,再分离出各位数字出各位数字对于整数对于整数x,其个位数,其个位数为为 x%10要求整数要求整数x的十位数,的十位数,可以先令可以先令x=x/10,再,再求求x的个位数的个位数36C C语言程序设计语言程序设计
25、语言程序设计语言程序设计 5.2 while和和do while循环循环输入一个输入一个5位数,计算并输出各位的和位数,计算并输出各位的和#include void main()int x,x1,r,sum=0;printf(Enter a number:);scanf(%d,&x);x1=x;while(x 0)r=x%10;sum+=r;x/=10;printf(Sum of the digits in%d is%dn,x1,sum);37C C语言程序设计语言程序设计语言程序设计语言程序设计 5.2 while和和do while循环循环任意输入一行字符,统计字母任意输入一行字符,统计字
26、母a和和A的个数的个数#include void main()char ch;int count=0;printf(Enter characters:);doch=getchar();if(ch=A|ch=a)count+;while(ch!=n);printf(Counter of a or A:%dn,count);38C C语言程序设计语言程序设计语言程序设计语言程序设计 5.2 while和和do while循环循环39C C语言程序设计语言程序设计语言程序设计语言程序设计 5.2 while和和do while循环循环#include void main()int f=-1,n=1;
27、float t,pi=0;/*t为最后一项的值为最后一项的值*/dof=-f;/*第第n项的符号项的符号*/t=1.0/(2*n-1);/*用用1.0是为了避免整除是为了避免整除*/pi+=f*t;n+;while(t 1e-5);pi=4*pi;printf(PI=%.4f n,pi);40C C语言程序设计语言程序设计语言程序设计语言程序设计 5.3 for语句语句 for语句是常用的、特殊的循环控制语句语句是常用的、特殊的循环控制语句for语句的功能强大,使用灵活,变化多样语句的功能强大,使用灵活,变化多样for语句语句优点优点:将:将“循环初始化条件循环初始化条件”、“循循环控制条件环
28、控制条件”、“循环控制变量的修改循环控制变量的修改”集集中表示中表示将将量变量变与与质变质变的因素集中表示的因素集中表示41C C语言程序设计语言程序设计语言程序设计语言程序设计 5.3 for语句语句for语句的用法语句的用法for(表达式表达式1;表达式表达式2;表达式表达式3)语句语句l“表达式表达式1”1”用于用于循环的初始化循环的初始化l“表达式表达式2”2”是是forfor语句的语句的循环控制条件循环控制条件,当循环,当循环控制条件为控制条件为1(True)1(True)或非或非0 0时,运行代表循环体的时,运行代表循环体的“语句语句”部分,可以是任何形式的表达式部分,可以是任何形
29、式的表达式l“表达式表达式3”3”用于用于修改循环控制变量的值修改循环控制变量的值,目的是,目的是使使“表达式表达式2”2”的值变为的值变为0(False)0(False),以结束循环,以结束循环l“语句语句”部分是部分是forfor语句的语句的循环体循环体,可以是单一语,可以是单一语句,也可以是复合语句句,也可以是复合语句42C C语言程序设计语言程序设计语言程序设计语言程序设计 5.3 for语句语句for语句的执行过程语句的执行过程43C C语言程序设计语言程序设计语言程序设计语言程序设计 5.3 for语句语句使用使用for语句编程。计算语句编程。计算sum=1+2+3+100#inc
30、lude void main()int i,sum=0;for(i=1;i=100;i+)sum+=i;printf(“sum=%d n,sum);44C C语言程序设计语言程序设计语言程序设计语言程序设计 5.3 for语句语句任意输入任意输入10个数,求平均值个数,求平均值#include void main()int i;float x,sum=0;printf(Enter 10 numbers one by one:n);for(i=1;i=10;i+)scanf(%f,&x);sum+=x;printf(Average is%f n,sum/10);45C C语言程序设计语言程序设计
31、语言程序设计语言程序设计 5.3 for语句语句循环的嵌套循环的嵌套for语句可以嵌套语句可以嵌套for语句构成循环的嵌套语句构成循环的嵌套for语句也可以与语句也可以与while语句、语句、do-while语句语句互相互相嵌套嵌套46C C语言程序设计语言程序设计语言程序设计语言程序设计 5.3 for语句语句例:顺序打印例:顺序打印1-10的阶乘,即的阶乘,即1!,2!,3!,10!#include void main()int i,j;float f;for(i=1;i=10;i+)f=1;for(j=1;j=i;j+)f=f*j;printf(%2d!=%.0f n,i,f);#inc
32、lude void main()int i=1,j;float f;while(i=10)j=1;f=1;while(j=i)f=f*j;j+;printf(“%2d!=%.0f n”,i,f);i+;47C C语言程序设计语言程序设计语言程序设计语言程序设计 5.3 for语句语句例:打印几何图形例:打印几何图形对于这类问题,每行对于这类问题,每行中星号的个数、总行中星号的个数、总行数等都应该用循环结数等都应该用循环结构进行控制,而不是构进行控制,而不是直接输出若干行字符直接输出若干行字符串串#include void main()int i,j;for(i=1;i=4;i+)for(j=0
33、;ji;j+)putchar();for(j=1;j=6;j+)putchar(*);putchar(n);*48C C语言程序设计语言程序设计语言程序设计语言程序设计 5.3 for语句语句例:甲、乙两个会计进行点钞比赛,甲的速度为例:甲、乙两个会计进行点钞比赛,甲的速度为5张张/秒,乙秒,乙的为的为8张张/秒。乙在甲已经点了秒。乙在甲已经点了100张钞票后才开始,问:只张钞票后才开始,问:只要几秒时间乙就可以超过甲?要几秒时间乙就可以超过甲?l 经过经过 t 秒,甲点过的秒,甲点过的钞票数有钞票数有 x=100+5t 张,张,乙的为乙的为 y=8t 张张l 问题就是求问题就是求 yx 时时
34、的的 t 值值#include void main()int t;int x=100,y=0;for(t=0;x y;t+)x=100+5*t;y=8*t;printf(Time is%d secondsn,t);49C C语言程序设计语言程序设计语言程序设计语言程序设计 5.3 for语句语句for语句的变化形式语句的变化形式可以省略可以省略for语句的语句的“表达式表达式1”或或“表达式表达式3”,也可以都省略(也可以都省略(“退化为退化为”while语句)语句)例:将用键盘输入的若干字符顺序输出到屏幕上例:将用键盘输入的若干字符顺序输出到屏幕上#include void main()ch
35、ar ch;for(;(ch=getchar()!=n;)putchar(ch);50C C语言程序设计语言程序设计语言程序设计语言程序设计 5.3 for语句语句如果省略如果省略“表达式表达式2”,则循环控制条件总为,则循环控制条件总为“真真”下面的语句是下面的语句是“合法合法”的,但构成了的,但构成了“死循环死循环”:for(i=1;i+)sum+=i;l下面的程序在运行时会因为下面的程序在运行时会因为“除以零除以零”而出错:而出错:#include void main()char i;int sum=0;for(i=1;i+)sum+=1000/i;printf(sum=%d n,sum
36、);51C C语言程序设计语言程序设计语言程序设计语言程序设计 5.4 循环的控制循环的控制复杂的循环控制条件复杂的循环控制条件对循环的控制问题,不仅仅是防止对循环的控制问题,不仅仅是防止“死循环死循环”,还包,还包括选择恰当的时机,正确地结束循环括选择恰当的时机,正确地结束循环 有的时候,循环控制条件是复杂的,还可能是多种条有的时候,循环控制条件是复杂的,还可能是多种条件的综合件的综合52C C语言程序设计语言程序设计语言程序设计语言程序设计 例:假设每个班最多有例:假设每个班最多有3030个人,依次输入每个人的成个人,依次输入每个人的成绩,如果输入的不是绩,如果输入的不是0-1000-10
37、0之间的数,或者已经输之间的数,或者已经输入了入了3030个数,则结束输入,输出计算结果。个数,则结束输入,输出计算结果。#include void main()int i=0,flag=1;float score,ave=0;printf(Enter scores one by one:n);while(i 30&flag=1)scanf(%f,&score);if(score 100)flag=0;elseave+=score;i+;if(i 0)ave=ave/i;printf(Average:%.2fn,ave);53C C语言程序设计语言程序设计语言程序设计语言程序设计 5.4 循环
38、的控制循环的控制 下面的程序块常用来对输入的数据进行限制:下面的程序块常用来对输入的数据进行限制:do scanf(%d,&iInput);while(iInput MAXIMUM);或者,或者,scanf(%d,&iInput);while(iInput MAXIMUM)scanf(%d,&iInput);常用下面的程序块要求用户选择常用下面的程序块要求用户选择Yes或或No,忽略其他输入:,忽略其他输入:printf(Enter Yes/No?);do ch=getchar();while(ch!=y&ch!=Y&ch!=n&ch!=N);或者,?或者,?(讨论一下讨论一下)技巧技巧54C
39、 C语言程序设计语言程序设计语言程序设计语言程序设计 例:利用随机数产生一个乘法算式,用户输入算例:利用随机数产生一个乘法算式,用户输入算式的运算结果,由程序判断对错。式的运算结果,由程序判断对错。#include#include void main()int iFor=0,iErr=0;int x,y,iAns;char ch;doiFor+;x=rand()%100;y=rand()%100;printf(%d x%d=?,x,y);scanf(%d,&iAns);if(iAns=x*y)printf(Right!n);elseiErr+;printf(You are wrong.n);p
40、rintf(Are you want to continue?(Y/N);do ch=getchar();while(ch!=y&ch!=Y&ch!=n&ch!=N);while(ch=y|ch=Y);printf(In%d questions,iFor);printf(youve made%d right,%d wrong.n,iFor-iErr,iErr);55C C语言程序设计语言程序设计语言程序设计语言程序设计 5.4 循环的控制循环的控制break语句语句lbreakbreak语句的格式为:语句的格式为:break;break;l在在switchswitch语句中,语句中,break
41、break语语句用于跳过后面的语句,句用于跳过后面的语句,结束结束switchswitch语句语句l在循环结构中,在循环结构中,breakbreak语句语句的作用是跳出循环结构,的作用是跳出循环结构,执行循环后面的语句执行循环后面的语句在下面的程序块中,由于在下面的程序块中,由于breakbreak语句的作用,循环语句的作用,循环只进行了只进行了1 1次,次,printfprintf语语句一次也没有执行,并且句一次也没有执行,并且永远也不会被执行:永远也不会被执行:for(i=1;i 100;i+)sum+=i;break;printf(%d,sum);56C C语言程序设计语言程序设计语言程
42、序设计语言程序设计 5.4 循环的控制循环的控制continue语句语句lcontinue语句的格式为:语句的格式为:continue;lcontinue语句只能用在循语句只能用在循环结构中,用于结束本次循环结构中,用于结束本次循环,即跳过循环体中后面的环,即跳过循环体中后面的语句,开始下一次循环语句,开始下一次循环下面的语句块中,循环次下面的语句块中,循环次数是数是100100次,但次,但printfprintf语语句一次也没有执行:句一次也没有执行:for(i=1;i 100;i+)sum+=i;continue;printf(%d,sum);57C C语言程序设计语言程序设计语言程序设计
43、语言程序设计 5.4 循环的控制循环的控制break语句和语句和continue语语句的有效范围都仅限于所在句的有效范围都仅限于所在的循环语句之内。如果想从的循环语句之内。如果想从嵌套的循环结构的内循环中嵌套的循环结构的内循环中直接跳出到外循环之外,使直接跳出到外循环之外,使用一个用一个break语句是不行的。语句是不行的。可行的方法是:在程序中引可行的方法是:在程序中引入一个标识变量,在各循环入一个标识变量,在各循环的结束位置检测这一标识,的结束位置检测这一标识,用多个用多个break语句作连续的语句作连续的跳转跳转flag=1while(i 10)for(j=i;j10;j+)if(j=2
44、*i)flag=0;break;if(flag!=1)break;printf(%d,i);58C C语言程序设计语言程序设计语言程序设计语言程序设计 5.4 循环的控制循环的控制例:顺序打印例:顺序打印100-1000之间所之间所有有9的倍数,如果一个数同时的倍数,如果一个数同时也是也是7的倍数则停止打印的倍数则停止打印#include void main()int i;for(i=100;i1000;i+)if(i%9!=0)continue;printf(%5d,i);if(i%7=0)break;59C C语言程序设计语言程序设计语言程序设计语言程序设计 5.4 循环的控制循环的控制例
45、:求任意正整数的除了自例:求任意正整数的除了自身以外的最大因数身以外的最大因数#include void main()int i,n;printf(Enter a number:);scanf(%d,&n);for(i=n-1;i0;i-)if(n%i=0)break;printf(The biggest factor of%d is%dn,n,i);60C C语言程序设计语言程序设计语言程序设计语言程序设计 5.4 循环的控制循环的控制goto语句语句lgoto语句是从早期程序设语句是从早期程序设计语言遗留下来的一个语句,计语言遗留下来的一个语句,称为无条件跳转语句,已被称为无条件跳转语句,
46、已被淘汰淘汰lgoto语句的使用格式是:语句的使用格式是:goto 语句标号语句标号;l“语句标号语句标号”是一个特殊的是一个特殊的标识符,由字母、数字或下标识符,由字母、数字或下划线组成(第一个字符不能划线组成(第一个字符不能是数字),后面跟冒号是数字),后面跟冒号“:”,放在语句行的最前头,放在语句行的最前头#include void main()int i=100;while(i1000)if(i%9!=0)goto Next;printf(“%5d”,i);Next:i+;例:打印所有的例:打印所有的100-1000间间9的倍数的倍数61C C语言程序设计语言程序设计语言程序设计语言程
47、序设计 5.5 应用举例应用举例阿米巴原虫,以细菌和更小的原虫为食阿米巴原虫,以细菌和更小的原虫为食 中枢神经系统的阿米巴原虫感染中枢神经系统的阿米巴原虫感染水水溶组织溶组织内阿米巴内阿米巴在一个试在一个试管中吞吃管中吞吃细菌细菌被称为被称为“食脑变形食脑变形虫虫”的阿米巴原虫的阿米巴原虫能从人的鼻子里钻能从人的鼻子里钻入大脑,将人的脑入大脑,将人的脑子子“吃吃”掉。掉。62C C语言程序设计语言程序设计语言程序设计语言程序设计 5.5 应用举例应用举例例:阿米巴用简单分例:阿米巴用简单分裂方式繁殖,每分裂方式繁殖,每分裂一次用时裂一次用时3分钟。分钟。将若干个阿米巴放将若干个阿米巴放在一个盛
48、满营养液在一个盛满营养液的容器内,的容器内,45分钟分钟后容器内充满了阿后容器内充满了阿米巴。已知容器最米巴。已知容器最多可以装阿米巴多可以装阿米巴220个,试问,开始的个,试问,开始的时候往容器内放了时候往容器内放了多少个阿米巴?多少个阿米巴?分析:分析:根据题意,阿米巴每根据题意,阿米巴每3分钟分钟分裂一次,那么从开始将阿米巴放分裂一次,那么从开始将阿米巴放入容器里面,到入容器里面,到 45 分钟后充满容分钟后充满容器,需要分裂器,需要分裂15次。而次。而“容器最多容器最多可以装阿米巴可以装阿米巴220个个”,即阿米巴分,即阿米巴分裂裂15次以后得到的个数是次以后得到的个数是220。题。题
49、目要求计算分裂之前的阿米巴数,目要求计算分裂之前的阿米巴数,不妨不妨使用倒推的方法使用倒推的方法,从第,从第15次分次分裂之后的裂之后的220个,倒推出第个,倒推出第 15 次分次分裂之前(即第裂之前(即第14次分裂之后)的个次分裂之后)的个数,再进一步倒推出第数,再进一步倒推出第 14次分裂次分裂之前、第之前、第13次分裂之前、次分裂之前、第第1次分裂之前的个数。次分裂之前的个数。63C C语言程序设计语言程序设计语言程序设计语言程序设计 5.5 应用举例应用举例设开始时阿米巴的个数为设开始时阿米巴的个数为x0,第第1次、第次、第2次、第次、第3次次第第15次分裂之后的个数分别为次分裂之后的
50、个数分别为x1、x2、x3、x15,则有以下,则有以下关系:关系:x0=x1/2x1=x2/2xn=xn+1/2x14=x15/2已知已知x15=220,可以利用上面的,可以利用上面的关系倒推出关系倒推出x0#include#include void main()int i;long x=pow(2,20);for(i=15;i0;i-)x=x/2;printf(There are%d amebas.n,x);64C C语言程序设计语言程序设计语言程序设计语言程序设计 例:谷角猜想,对于任意一个自然数例:谷角猜想,对于任意一个自然数n,若,若n为偶数,则为偶数,则将其除以将其除以2;若;若n为