




已阅读5页,还剩58页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
5.1while语句5.2do-while语句5.3for语句5.4循环的嵌套5.5break、continue和goto语句5.6程序举例,第5讲循环结构程序设计,2,C语言有while、do-while、for三种循环结构语句。前两个称为条件循环,即根据条件来决定是否继续循环;后一个称为计数循环,即根据设定的执行次数来执行循环。,5.1while语句及其循环结构,while语句和格式及执行过程:格式:while(表达式)语句执行过程:先计算表达式之值,若为非0(即条件成立),执行后面的语句(称之为循环体)之后,再计算表达式之值进行判断,如此多次重复执行循环体;若表达式之值为0(即条件不成立),跳出循环体语句,继续向下执行。,while语句的流程图,表达式,语句(循环体),Y(非0),N(0),while(表达式)语句,例1求1100之间所有整数的和,i=100,sum+=i;/*累加*/i+=1;/*计数器加1*/,Y(非0),N(0),i=1;sum=0;,printf(i=%d,sum=%dn,i,sum);,求1100之间整数和的程序,main()inti=1,sum=0;while(i=100)sum+=i;i+=1;printf(i=%d,sum=%dn,i,sum);,这是一个while语句,想一想,语句sum+=i;和语句i+=1;能否改变位置?为什么?,想一想,如果在while语句之前对变量sum赋初值为1,是否可以?程序的哪些地方应作相应的改动?,求1100之间整数和的程序运行过程,main()inti=1,sum=0;while(i=100)sum+=i;i+=1;printf(i=%d,sum=%dn,i,sum);,这是一个while语句,程序执行的过程和结果如下:,i=101,sum=5050,注意:循环结束后,变量i的值一定大于100。,想想这样的一段循环语句的执行结果:i=1;while(i=100)putchar(*);i+;,这个循环永远不会结束,因为循环控制变量i没有在循环体内被改变,i+;不属于循环体。,应该改为:,i=1;while(i=100)putchar(*);i+;,循环语句中一定要注意表达式的值是否能在循环执行过程中被改变,以免造成死循环。,5.2do-while语句及其循环结构,dowhile语句和格式及执行过程:格式:do语句while(表达式);执行过程:先执行语句(称之为循环体),然后计算表达式之值,若为非0(即条件成立),再执行语句(循环体)后计算表达式之值,如此多次重复执行循环体并判断条件;若表达式之值为0(即条件不成立),结束循环,继续向下执行。,dowhile语句的流程图,表达式,语句(循环体),Y(非0),N(0),注意:while循环语句与do-while循环语句的区别。,用do-while语句求100以内正整数的和,main()inti=1,sum=0;dosum+=i;i+=1;while(i=100);printf(i=%d,sum=%dn,i,sum);,i=101,sum=5050,从键盘上输入10个整数,求总和及平均值,main()intx,sum=0,i=1;floataver;while(i=10)scanf(%d,从键盘上输入若干个整数,求总和及平均值,输入-1结束,main()intx,sum=0,i=1;floataver;while()sum+=x;i+;scanf(%d,scanf(%d,x!=-1,5.3for语句,格式:for(表达式1;表达式2;表达式3)语句执行:(1)先求解表达式1的值。(2)再求解表达式2的值,若值为非0(条件成立),则执行语句(循环体)后执行下面的(3);若表达式2的值为0(条件不成立),则转向(5)。(3)求解表达式3的值。(4)转回执行(2)。(5)执行for语句后面的语句。,for语句执行流程图,表达式2,语句(循环体),Y(非0),N(0),表达式1,表达式3,for(表达式1;表达式2;表达式3)语句,求1100之间的整数之和(for语句),main()inti,sum;for(i=1,sum=0;i=100;i+)sum+=i;printf(i=%d,sum=%dn,i,sum);,i=101,sum=5050,求1100之间的整数之和(for语句),main()inti,sum;for(;i=100;i+)sum+=i;printf(i=%d,sum=%dn,i,sum);,i=101,sum=5050,表达式1可缺省,放在循环之前,但for语句中的第一个分号不能省略,i=1;sum=0;,求1100之间的整数之和(for语句),main()inti,sum;for(;i=100;)sum+=i;printf(i=%d,sum=%dn,i,sum);,i=101,sum=5050,表达式3可缺省,放在循环体之中,但for语句中的第二个分号不能省略,i=1;sum=0;,i+;,求1100之间的整数之和(for语句),main()inti,sum;for(i=1,sum=0;ij时结束循环(即i=j时继续循环)。最后输出s。,#includemain()inti,j;floats=0;for(i=1,j=100;i0,执行第4步,否则执行第7步4.i=a%105.t=t*10+i6.a=a/10,并返回第3步7.输出t,程序:,#includemain()longa,i,t=0;scanf(“%ld”,1、有以下程序main()inti;for(i=1;i0;y-)if(y%3=0)printf(%d,-y);程序的运行结果是A)741B)963C)852D)875421,2007-9,2007-9,4、以下程序的输出结果是()#includemain()intn=12345,d;while(n!=0)d=n%10;printf(%d,d);n/=10;5、有以下程序段,且变量已正确定义和赋值for(s=1.0,k=1;k=n;k+)s=s+1.0/(k*(k+1);printf(s=%fnn,s);请填空,使下面程序段的功能与之完全相同s=1.0;k=1;while(_)s=s+1.0/(k*(k+1);_;printf(s=%fnn,s);,2007-954321,2007-9k=nk+,6、以下程序的输出结果是()#includemain()inti;for(i=a;i0;x-)if(x%3)printf(%d,x-);continue;printf(%d.,-x);程序运行的结果是A)7,4,2,B)8,7,5,2,C)9,7,6,4,D)8,5,4,2,2008-4,8、以下不构成无限循环的语句或语句组是A)n=0;B)n=0;do+n;while(n=0);while(1)n+;C)n=10;D)for(n=0,i=1;i+)n+=i;while(n);n-;15、若有定义:intk;,以下程序段的输出结果是(#2#4)for(k=2;k10);printf(s=%dn,s);,2009-3,s=0,13、下列程序运行时,若输入labcedf2df输出为【】#includemain()chara=0,ch;while(ch=getch()!=n)if(a%2!=0,2009-3,1AbCeDf2dF,14、有以下程序#includemain()intc=0,k;for(k=1;k1);printf(%dn,a);,2009-9,5,17、有一下程序#includemain()intf,f1,f2,i;f1=0;f2=1;printf(%d%d,f1,f2);for(i=3;i=5;i+)f=f1+f2;printf(%d,f);f1=f2;f2=f;printf(n);程序运行后的输出结果是【01123】,2009-9,5.4循环嵌套,一个循环体中又包含了另一个完整的循环结构,叫做循环的嵌套。三种循环结构可以互相嵌套。循环嵌套的执行过程是:外循环执行一次,内循环执行一个全过程。,循环嵌套举例:输出一个图形,main()inti,j;for(i=1;i=4;i+)for(j=1;j=3;j+)printf(*);printf(n);,*,/*外循环控制输出图形的行数*/,/*内循环控制每行输出的数量*/,循环嵌套语句,第一个语句是循环语句,实现输出3个*号,第二个语句是简单语句,输出一个换行符,main()printf(*n);printf(*n);printf(*n);printf(*n);,main()inti,j;for(i=1;i=4;i+)printf(*n);,循环嵌套举例:输出一个图形,main()inti,j;for(i=1;i100。,continue语句的使用,输出17之间所有不能被3整除的整数。,main()intn;for(n=1;n=,/*分母加2*/,pi=3.141594,/*pi存放和,t存放项值*/,/*计算下一个项值*/,掌握在循环体中实现正负相间的技巧,判断整数m是否为素数,素数即为质数,如果一个整数只能被1或者它本身整除,这个数就称为是素数。判断素数的算法是:让m被2m-1之间所有的整数整除,如果m能被2m-1之中的任何一个整数整除,则提前结束循环,此时m一定不是素数;如果在2m-1之间不存在能被m整除的整数,则终止循环,此时循环变量的值一定大于或者等于m。,判断整数m是否为素数算法流程图,定义变量m(被判断数),i(循环变量)输入m的值,N,i=m,输出m是素数,Y,N,输出m不是素数,break;,i+;,for循环,不是素数,是素数,判断整数m是否为素数程序,main()intm,i;scanf(%d,for(i=2;i=m)printf(n%d是素数n,m);elseprintf(n%d不是素数n,m);,判断整数m是否为素数程序2,#includemain()intm,i,k;scanf(%d,for(i=2;ik)printf(n%d是素数n,m);elseprintf(n%d不是素数n,m);,判断整数m是否为素数程序3,main()intm,i,k,flag;scanf(%d,for(i=2;i=k;i+)if(m%i=0)flag=0;break;,if(!(flag=0)printf(n%d是素数n,m);elseprintf(n%d不是素数n,m);,/*定义变量flag作为标志变量*/,/*变量flag赋初值1*/,/*如果m是素数,flag赋0*/,例:求3150中所有素数的和。,算法分析:1.用变量a从3到150循环,每次值增加12.用变量i从2到a-1循环,每次值增加13.若a%i=0,结束i的循环,执行第4步4.若i=a,把a累加到s上。5.输出s的值,注意:此题中执行第4步时有两种情况。第一种:在第3步中发现了满足a%i=0的情况,直接跳出了i的循环,此时的i一定是在2到a-1中间的一个值,而且a不是素数。第二种:一直没有发现满足a%i=0的i,在i=a时,不再满足i循环的执行条件,i循环结束,此时的a是素数!,程序:,#includemain()inta,s=0,i;for(a=3;a=a)s=s+a;printf(“n%d”,s),1、有以下程序#includemain()inti,j,m=55;for(i=1;i=3;i+)for(j=3;j=1;i-)for(j=1;j=1;i-)sum=0;for(j=1;j=i;j+)sum+=i*j;printf(%dn,sum);,2008-9,1,4、以下程序段中的变量已正确定义for(i=0;i4;i+,i+)for(k=1;k3;k+);printf(*);程序段的输出结果是A)*B)*C)*D)*,2009-3,题库练习,while循环累和问题:1-1,32-1,48-2累积问题:47-2,63-2累和累积:2-3计算:37-2,45-2最大公约数:4-2素数:31-2/及%应用:5-1(评分死板),51-1,26-1,44-1,96-2,题库练习,dowhile循环累和及累积:68
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广西城市职业大学《幼儿舞蹈即兴创编(1)》2023-2024学年第一学期期末试卷
- 长沙民政职业技术学院《机械工程项目管理》2023-2024学年第一学期期末试卷
- 达州职业技术学院《合唱与指挥》2023-2024学年第一学期期末试卷
- 许昌学院《方案快速设计与表现实验》2023-2024学年第一学期期末试卷
- 昆山杜克大学《线性素描写生》2023-2024学年第一学期期末试卷
- 郑州信息科技职业学院《英语泛读(3)》2023-2024学年第一学期期末试卷
- 贵州航空职业技术学院《英语综合阅读一》2023-2024学年第一学期期末试卷
- 安徽医学高等专科学校《医疗保险国际比较》2023-2024学年第一学期期末试卷
- 中学生心理健康辅导培训
- 伦理风险防范体系-洞察及研究
- 完整版高中古诗文必背72篇【原文+注音+翻译】
- 反分裂反渗透教育主题班会
- 2024年甘肃省普通高校招生本科批(C段)历史类投档最低分数线
- 2024年福州第十一中学招聘笔试真题
- 【泉州:寒街孤影寻暖意 一抹亮色映霜花】中原地产2024年泉州楼市分析报告正式版
- 小学生反分裂课件
- 外科病房医院感染防控工作职责
- DB34∕T 3262.2-2018 普通公路养护预算 第二部分:定额
- 2025年省定远县第三批“曲阳雁归”工程公开招录50名村(社区)干部高频重点提升(共500题)附带答案详解
- 旅游学概论(李天元)课件
- 大数据技术原理与应用-林子雨版-课后习题答案(文档).文档
评论
0/150
提交评论