C语言循环结构一章.pptx

上传人:莉*** 文档编号:87125131 上传时间:2023-04-16 格式:PPTX 页数:41 大小:381.41KB
返回 下载 相关 举报
C语言循环结构一章.pptx_第1页
第1页 / 共41页
C语言循环结构一章.pptx_第2页
第2页 / 共41页
点击查看更多>>
资源描述

《C语言循环结构一章.pptx》由会员分享,可在线阅读,更多相关《C语言循环结构一章.pptx(41页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、If语句和goto语句构成的循环一般形式:goto语句标号;作用:无条件转向语句标号处执行语句标号:合法的标识符后面加个冒号”:”语句标号必须于此goto语句在同一个函数中goto语句不符合结构化程序设计准则,因为无条件转向使程序结构无规律、可读性差。一般应避免使用goto语句,但如果能大大提高程序的执行效率,也可以使用。第1页/共41页Example5_1n#includenmain()nintx;nx=3;nab:x+=2;/*ab:语句标号只能写在语句行的最左边*/nif(x20)ngotoab;nprintf(%dn,x);n第2页/共41页while语句一般形式:while(表达式)

2、语句作用:实现“当型”循环。当“表达式”非0(真)时,执行“语句”。“语句”是被循环执行的程序,称为“循环体”。特点:先判“表达式(条件)”。第3页/共41页注意事项while后面的”()”不能少表达式的可以使任意合法的表达式语句的位置上只能有一条语句,while语句范围只到while后面第一个分号处。超过一条用“”括起来while语句的循环体可能一次都不执行循环体中必须有使循环趋于结束的语句,否则程序进入“死循环”(不结束)。第4页/共41页求1100的累计和。根据已有的知识,可以用“1+2+100”来求解,但显然很繁琐。现在换个思路来考虑:首先设置一个累计器sum,其初值为0,利用sum+

3、=n来计算(n依次取1、2、100),只要解决以下3个问题即可:(1)将n的初值置为1;(2)每执行1次“sum+=n”后,n增1;(3)当n增到101时,停止计算。此时,sum的值就是1100的累计和。第5页/共41页Example5_2计算#include main()int i,sum=0;i=1;while(i=100)sum=sum+i;i+;printf(%d,sum);第6页/共41页Example5_3输入两个整数x和y,计算x和y之间所有的偶数之和main()intx,y,sun,t;printf(”请输入两个整数(前大后小):”);scanf(”%d%d”,&x,&y);p

4、rintf(”%d和%d之间所有的偶数的和是:”,x,y);while(xy)if(x%2=0)sum+=x;x+;printf(”%dn”,sum);第7页/共41页dowhile语句一般格式:do语句(循环体)while(表达式);特点:“直到型”循环结构。先执行一次“语句”,判“表达式”,当“表达式”非0,再执行“语句”,直到“表达式”为0,循环结束。第8页/共41页dowhile注意点do后面没有分号;语句的位置上只能到第一个分号处,也就是只能有一条语句,超过用构成复合语句表达式可以是任意表达式第9页/共41页Example5_4计算n以内所有能被3整除或者能被7整除的自然数之和/*从

5、3开始,各个自然数i逐个进行比较,直到自然数i不小于n则循环结束*/#includemain()intn,i,s;printf(请输入一个整数:);scanf(%d,&n);/*输入一个整数给n*/s=0;/*s用来存放满足条件的自然数之和,和的初值为0*/i=3;/*从3开始*/doif(i%3=0|i%7=0)/*余数为0表示整除*/s+=i;i+;/*准备判断下一个自然数*/while(in);/*in表示条件成立,循环执行*/printf(s=%dn,s);第10页/共41页 whilewhile和和do-whiledo-while循环的比较循环的比较main()int i,s=0;s

6、canf(“%d”,&i);dos=s+i;i+;while(i=10);printf(“s=%d”,s);运行情况如下:main()int i,s=0;scanf(“%d”,&i);while(i=10)s=s+i;i+;printf(“s=%d”,s);运行情况如下:第11页/共41页说明在一般情况下,用while和do-while语句解决同一问题时,若二者的循环体部分是一样的,它们的结果也一样。但当while后面的“表达式”一开始就为“假”时,两种循环的结果不同。这是因为此时while循环的循环不被执行,而do-while循环的循环体被执行一次。第12页/共41页for语句一般格式for

7、(表达式1;表达式2;表达式3)语句 循环变量赋初值循环条件循环变量增量循环体部分执行过程:(1)求表达式1;(2)求表达式2,若为“真”,执行“语句”;若为假,转第(5)步。(3)求表达式3。(4)转第(2)步。(5)执行for语句下面的语句。第13页/共41页Example5_5计算n以内所有自然数之和#includemain()intn,i,s;printf(请输入一个整数:);scanf(%d,&n);/*输入一个整数给n*/s=0;/*s存储和,初值为0*/for(i=0;in;i+)s+=i;printf(s=%dn,s);for(i=0;in;i+)s+=i;等等价价于于i=0;

8、while(in)s+=i;i+;第14页/共41页for语句说明(1)for语句中条件测试总是在循环开始时进行;如果循环体部分是多个语句组成的,则必须用左、右花括号括起来,使其成为一个复合语句。第15页/共41页(2)for语句中的表达式1和表达式3即可以是一个简单的表达式,也可以是逗号连接的多个表达式,此时的逗号作为运算符使用。如:for(s=0,i=1;i=100;i+)s=s+i;或:for(i=1,j=100;i=j;i+,j-)k=i+j;在逗号表达式内按自左至右顺序求解,整个逗号表达式的值为其中最右边的表达式的值。如:for(i=1;i=100;i+,i+)s=s+i;相当于:f

9、or(i=1;i=100;i=i+2)s=s+i;第16页/共41页(3)for语句的一般形式中的“表达式1”可以省略,此时应在for语句之前给循环变量同赋初值。注意省略表达式1时,其后的分号不能省略。如:for(;i=100;i+)s=s+i;执行时,跳过“解表达式1”这一步,其它不变。第17页/共41页(4)如果表达式2省略,即不判断循环条件,循环无终止地进行下去。也就是认为表达式2始终为真。例如:for(i=1;i+)s=s+i;相当于:i=1;while(1)s=s+I;i+;第18页/共41页(5)表达式3也可以省略,但此时程序设计应另外设法保证循环能正常结束。如:for(i=1;i

10、=100;)s=s+I;i+;第19页/共41页(6)可以省略表达式1和表达式3,只有表达式2,即只给循环条件。例:for(;i=100;)s=s+i;i+;相当于:while(i=100)s=s+i;i+;第20页/共41页(7)3个表达式都可以省略,如:for(;)语句相当于:while(1)语句即不设初值,不判断条件(认为表达式2为真值),循环变量不增值,无终止地执行循环体。第21页/共41页(8)表达式1可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其它表达式。如:for(s=0;i=100;i+)s=s+i;表达式3也可以是与循环控制无关的任意表达式。(9)表达式2一般

11、是关系表达式(如i=100)或逻辑表达式(如ab&xy),但也可以是数值表达式或字符表达式,只在其值为非0,就执行循环体。第22页/共41页break语句和continue语句break语句作用:跳出所在的多分支switch语句,跳出所在的while、do-while、for循环语句(提前结束循环continue语句作用:提前结束本次循环体的执行,接着进行下一次循环条件的判别。第23页/共41页break语句和continue语句的区别while(表达式1)if(表 达 式 2)continue;while(表达式1)if(表达式2)break;第24页/共41页for(r=1;r 100)b

12、reak;printf(%f,aera);raera13.14212.57328.27450.27578.546113.107153.948201.069254.4710314.16第25页/共41页几种循环的比较1、四种循环(while、do-while、for、goto)可以互相替换,但应尽量少用goto。2、循环条件:while、do-while在while后面指定;for循环在“表达式2”中指定。3、循环初始条件:while、do-while在循环前指定;for循环在“表达式1”中指定。4、判循环条件的时机:while、for循环先判循环条件,后执行;do-while循环先执行,后判循

13、环条件。5、while、do-while、for循环均可用break语句跳出循环(结束循环),用continue语句提前结束本次循环体的执行。第26页/共41页Example5_6输入一个整数x,判断该数是否是合数质数(素数):只能被1和它本身整除的自然数合数:除了1和它本身外,还存在能整除它的数#include main()int x,i;printf(请输入一个整数:);scanf(%d,&x);/*查找范围:2,x-1*/for(i=2;ix;i+)if(x%i=0)/*如果存在一个数能整除x*/break;/*循环提前结束*/*循环结束有两个可能,一 ix不成立正常结束;二 执行bre

14、ak以后循环提前结束(i肯定小于x)*/*如果循环提前结束则说明x是个合数,否则 说明x是个质数(素数)*/if(ix)printf(%d是个合数n,x);elseprintf(%d是个质数(素数)n,x);第27页/共41页Example5_7输入一个整数,计算该数的因子(不包括自己的因数)之和#includemain()intx,i,s;printf(请输入一个整数:);scanf(%d,&x);s=0;/*存储和,初值为0*/for(i=1;ix;i+)/*从1到x-1之间所有的数都逐个进行判断*/if(x%i=0)/*如果某一个数i是x的因子*/s+=i;/*将i加到s上*/print

15、f(%d的因子之和是%dn,x,s);第28页/共41页Example5_8/*输出所有的“水仙花数”,所谓的水仙花数是指一个三位数,该数各个位数上的立方和等于它本身*/*方法:穷举法 列举法 对所有有可能满足条件的数据逐个进行判断,找出符合题目意思的数据 确定有可能满足条件的范围*/#includemain()inti,g,s,b;for(i=100;i1000;i+)/*对所有的三位数逐个进行判断*/*计算出i的个位数,十位数,百位数*/g=i%10;/*i的个位数*/s=i/10%10;/*i的十位数*/b=i/100%10;/*i的百位数*/*判断i与个位数的立方+十位数的立方+百位数

16、的立方是否相等*/if(i=g*g*g+s*s*s+b*b*b)printf(%d是个水仙花数n,i);第29页/共41页Example5_9输出九九乘法表#includemain()inti,j;for(i=1;i10;i+)/*总共有9行,第i行*/*第i行有i列*/for(j=1;j=i;j+)printf(%2d*%d=%-2d,j,i,i*j);printf(n);/*输出换行*/第30页/共41页Example5_10输入一个n,输出n行*,其中第几行就有几个图形如下main()inti,j,n;printf(请输入一个数:);scanf(%d,&n);/*输入一个整数给n*/*总

17、共输出n行*/for(i=1;i=n;i+)/*输出第i行的i个*/for(j=1;j=i;j+)printf(*);/*输出换行*/printf(n);第31页/共41页输入一个n,输出n行,每行有若干个.和若干个*,如下图#includemain()inti,j,n;printf(请输入一个数:);scanf(%d,&n);/*输入一个整数给n*/*总共输出n行*/for(i=1;i=n;i+)/*输出n-i个.*/for(j=1;j=n-i;j+)printf(.);/*输出第i行的2*i-1个*/for(j=1;j=2*i-1;j+)printf(*);/*输出换行*/printf(n

18、);第32页/共41页以下程序运行结果是_#includemain()inti=5;doif(i%3=1)if(i%5=2)printf(“*%d”,i);break;i+;while(i!=0);printf(“n”)A)*7B)*3*5C)*5D)*2*6第33页/共41页以下不构成无限循环的语句或语句组是A)n=0;do+n;while(n=0)B)n=0;while(1)n+;C)n=10;while(n);n-;D)for(n=0,i=1;i+)n+=1第34页/共41页以下程序运行结果是_#includemain()inti,j;for(i=3,i=1;i-)for(j=1;j=2

19、;j+)printf(”%d”,i+j);printf(”n”);A)2 3 43 4 5B)4 3 25 4 3C)2 3 3 4 4 5 D)4 53 4 2 3第35页/共41页有以下程序运行后的结果是_main()inti,j,x=0;for(i=0;i2;i+)x+;for(j=0;j=3;j+)if(j%2)continue;x+;x+;printf(“x=%dn”,x);A)x=4B)x=8C)x=6D)x=12第36页/共41页有以下程序运行后的结果是_#includemain()inti;for(i=0;i3;i+)switch(i)case0:printf(“%d”,i);

20、case2:printf(“%d”,i);default:printf(“%d”,i);A)02111B)021021C)000122D)012第37页/共41页以下程序的输出结果是_#includemain()intk=0,m=0;inti,j;for(i=0;i2;i+)for(j=0;j3;j+)k+;k-=j;m=i+j;printf(“k=%d,m=%d”,k,m);A)k=0,m=3B)k=0,m=5C)k=1,m=3D)k=1,m=5第38页/共41页以下程序运行后输出的结果是_main()inti,j;for(i=1;i4;i+)for(j=i;j4;j+)printf(“%d

21、*%d=%d”,i,j,i*j);printf(“n”);A)1*1=1 1*2=2 1*3=3 2*1=2 2*2=4 3*1=3 B)1*1=1 1*2=2 1*3=3 2*2=4 2*3=6 3*3=9 C)1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9C)1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9第39页/共41页若有定义:intk;以下程序的输出结果是_for(k=2;k6;k+,k+)printf(“#%d”,k);以下程序的输出结果是_#includemain()intn=12345,d;while(n!=0)d=n%10;printf(“%d”,d);n/=10;第40页/共41页感谢您的观看!第41页/共41页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > PPT文档

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁