




已阅读5页,还剩42页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,第5章,循环结构程序设计,2,一、实现循环结构的控制语句二、循环嵌套三、循环结构程序举例,主要内容,3,一、实现循环结构的控制语句,while语句do-while语句for语句break、continue语句几种循环的比较,4,格式,while(表达式)语句,5.1while语句,举例,P79,求110的累加和。,#includestdio.hintmain()inti,sum;i=1;sum=0;while(i=10)sum=sum+i;i+;printf(sum=%5dn,sum);return0;,说明,1、循环体如果包含一个以上的语句,必须使用复合语句形式。2、在循环体中,必须有使循环条件趋向于不满足(假)的语句。3、先判断后执行。,1求1100的累加和.2求110的奇数和.3求N!,?,5,求1到10的奇数和,举例,#includestdio.hintmain()inti,sum;i=1;sum=0;while(i=10)sum=sum+i;i+=2;printf(sum=%5dn,sum);return0;,运行结果:,6,#includevoidmain()inti,sum=0;i=1;while(i=10)if(i%2=0)sum=sum+i;i+;printf(%dn,sum);,运行结果:,求1到10之间的偶数和,举例,7,举例,求N!,#includevoidmain()inti=1,n;floatfac=1;printf(请输入n:);scanf(%d,运行结果:,8,利用公式:sum=1-3+5-7+9-11求前10项的和。,#includevoidmain()ints,i,sum,t,n;i=0;n=1,sum=0,t=1,s=1;while(i10)sum=sum+t;n=n+2;s=-s;t=s*n;i+;printf(sum=%dn,sum);,s:变化的符号i:第i项n:第i项的绝对值t:第i项的值sum:和,举例,运行结果:,9,举例,例5.2设s=123n,求s不大于400000时最大的n。,#includeintmain()intn=1;longints=1;while(s=400000)n=n+1;s=s*n;printf(不大于400000时的最大n为:%dns值为:%ldn,n-1,s/n);return0;,运行结果:,前n项的乘积,81,10,举例,例5.3现有某班20名学生的C语言成绩,求该班学生的C语言的平均成绩。,运行结果:请输入学生成绩:23凵89凵67凵78凵94凵56凵34凵83凵90凵67凵48凵72凵81凵65凵74凵87凵73凵67凵90凵9820名学生的C语言平均成绩为:71.8,#includeintmain()floattotal=0,score,average;inti=1;printf(请输入学生成绩:);while(i=20)scanf(%f,total:前i名学生的成绩的和score:每一名学生的成绩average:平均成绩,81,11,格式,do循环体语句while(表达式);,5.2do-while语句,举例,P85,求110的累加和。,#includestdio.hintmain()inti,sum;i=1;sum=0;dosum=sum+i;i+;while(i=10);printf(sum=%5dn,sum);return0;,说明,1、循环体如果包含一个以上的语句,必须使用复合语句形式。2、在循环体中,必须有使循环条件趋向于不满足(假)的语句。3、先执行,后判断。,至少执行一次,12,举例,while和do-while循环的比较。,#includevoidmain()inti,sum=0;scanf(%d,#includevoidmain()inti,sum=0;scanf(%d,输入:1,输入:11,sum=55,sum=11,此程序的功能?,什么情况下两者结果相同?,13,格式,for(表达式1;表达式2;表达式3)语句,P87,for(循环变量赋初值;循环条件;循环变量增值)语句,执行过程,(1)先求解表达式1;(2)求解表达式2,若其值为真,则执行循环体语句,然后执行第(3)步;若为假,则结束循环,转到第(5)步;(3)求解表达式3;(4)转向步骤(2);(5)循环结束,执行for语句下面的一个语句。,5.3for语句,14,举例,求1100的累加和。,#includevoidmain()inti,sum;sum=0;for(i=1;i=100;i+)sum=sum+i;printf(sum=%5dn,sum);,?,1求150的累加和.2求1100的奇数和.3求N!,i=1;while(i=100)sum=sum+i;i+;,15,for(表达式1;表达式2;表达式3)语句,说明,三个表达式都可以省略。,?,结果?,16,说明,1,i=1;for(;i=10;i+)sum=sum+i;,2,for(i=1;i+)sum=sum+i;,?,3,for(i=1;i=10;)sum=sum+i;i+;,for(i=1;i=10;i+)sum=sum+i;,表达式1可以省略,但其后的分号不可以省略。,没有循环结束条件,构成了死循环,for(i=1;i=10;i+)sum=sum+i;,i=1while(1)sum=sum+i;i+;,17,说明,4,5,for(;)sum=sum+i;,6,表达式1和表达式3可以是与循环变量无关的表达式。,for(;i=10;)sum=sum+i;i+;,7,表达式2一般是关系表达式,也可以是数值或字符表达式。,while(i=10)sum=sum+i;i+;,while(1)sum=sum+i;,表达式1和表达式3可以同时省略,此时等同于while语句。,for(sum=0,i=1;i=100;i+)sum=sum+i;,建议:for语句中只放与循环控制有关的语句。,18,说明,1、三种循环语句在处理循环问题时,一般可以相互替代。,2、对于循环次数固定的问题,用for语句实现比较简单。,3、对于循环次数不确定的问题,可用while语句或do-while语句实现。,4、while语句:先判断,后执行。do-while语句:先执行,后判断。,几种循环语句的比较,19,格式,while(表达式1)if(表达式2)break;,5.4break/continue语句,举例,.sum=0;for(i=1;i5)break;sum=sum+i;printf(“sum=%5dn”,sum);.,while(表达式1)if(表达式2)conitue;,结束整个循环,结束本次循环,.sum=0;for(i=1;i=10;i+)if(i=5)continue;sum=sum+i;printf(“sum=%5dn”,sum);.,1到5的累加和,6到10的累加和,20,举例,例5.11分析下面程序的运行结果。P90,结束整个循环,#includeintmain()inti=0,a=0;while(i20)if(i%10=0)break;elsei+;i+=11;a+=i;printf(%dn,a);return0;,ii%10第1次执行循环00条件表达式i%10=0成立,执行break语句,跳出循环,运行结果:11,21,举例,例5.12输出100以内能被7整除的最大数。P91,nn%7第1次执行循环1002第2次执行循环991第3次执行循环980第4次执行循环时条件表达式n%7=0成立,执行break语句,跳出循环,运行结果:100以内能被7整除的最大数为:98,22,举例,例5.13分析下面程序的运行结果。P92,结束本次循环,#includestdio.hintmain()inti=0,s=0;doif(i%2)i+;continue;i+;s+=i;while(i7);printf(%dn,s);return0;,ii%2i+scontinue是否执行第1次执行循环0011否第2次执行循环1121是第3次执行循环2034否第4次执行循环3144是第5次执行循环4059否第6次执行循环5169是第7次执行循环60716否此时条件表达式17不成立,结束循环,运行结果:16,S=1+3+5+7,23,#includevoidmain()inti;for(i=1;i3)break;if(i%2)printf(*);elsecontinue;printf(#);printf($n);,分析如下程序的输出结果:,*#*#$,举例,24,举例,例5.14把100200之间的能被13整除的数输出。P92,#includestdio.hintmain()intn;for(n=100;n=200;n+)if(n%13!=0)continue;elseprintf(%d,n);printf(n);return0;,运行结果:104117130143156169182195,#includestdio.hintmain()intn;for(n=100;n=200;n+)if(n%13=0)printf(%d,n);printf(n);return0;,25,概念,一个循环体内又包含另一个完整的循环结构,称为循环嵌套。,举例,例5.15马克思曾经做过这样一道趣味数学题:有30个人在一家小饭馆里用餐,其中有男人、女人和小孩。每个男人花3先令,每个女人花2先令,每个小孩花1先令,共花去50先令。问男人、女人和小孩各几人(男人、女人和小孩均存在)?P83,#includestdio.hintmain()intman,women,child;for(man=1;man16;man+)for(women=1;women=23;women+)child=30-man-women;if(man*3+women*2+child*1=50)printf(man=%-6dwowen=%-6dchild=%-6dn,man,women,child);return0;,5.5循环嵌套,男人人数,最多15人(16*3=48),女人人数,最多23人(24*2=48),小孩人数=30-man-women,26,运行结果:man=1women=18chile=11man=2women=16chile=12man=3women=14chile=13man=4women=12chile=14man=5women=10chile=15man=6women=8chile=16man=7women=6chile=17man=8women=4chile=18man=9women=2chile=19,27,28,概念,一个循环体内又包含另一个完整的循环结构,称为循环嵌套。,1234246836912481216,举例,打印乘法口诀表。,#includevoidmain()inti,j;for(i=1;i=4;i+)for(j=1;j=4;j+)printf(%4d,i*j);printf(n);,i=1,j=11*1j=21*2j=31*3j=41*4i=2,j=12*1j=2i=3i=4,5.5循环嵌套,第六章循环结构程序设计,29,124369481216,#includevoidmain()inti,j;for(i=1;i=4;i+)for(j=1;j=i;j+)printf(%4d,i*j);printf(n);,5.5循环嵌套,思考1,第六章循环结构程序设计,30,#includevoidmain()inti,j;for(i=1;i=4;i+)for(j=1;j=5-i;j+)printf(%4d,i*j);printf(n);,5.5循环嵌套,思考2,1234246364,第六章循环结构程序设计,31,#includevoidmain()inti,j;for(i=1;i=4;i+)for(j=1;j=4-i;j+)printf(“%4d”,);for(j=5-i;j=4;j+)printf(“%4d”,i*j);printf(“n”);,5.5循环嵌套,思考3,4686912481216,第六章循环结构程序设计,32,#includevoidmain()inti,j;for(i=1;i=4;i+)for(j=1;j=i-1;j+)printf(“%4d”,);for(j=i;j=4;j+)printf(“%4d”,i*j);printf(“n”);,5.5循环嵌套,思考4,123446891216,第六章循环结构程序设计,33,举例,例5.16打印乘法口诀表。P95,#includestdio.hintmain()inti,j,result;for(i=1;i=9;i+)for(j=1;j=9;j+)result=i*j;/计算i行j列上的元素值printf(%d*%d=%-3dt,i,j,result);printf(n);return0;,resulti=1,j=11*1j=21*2j=31*3j=91*9i=2,j=12*1j=22*2j=92*9i=9,j=19*1j=29*2j=99*9,1*1=11*2=21*9=92*1=22*2=42*9=189*1=99*2=189*9=81,34,#includestdio.hintmain()inti,j,result;for(i=1;i=9;i+)for(j=1;j=9;j+)result=i*j;/计算i行j列上的元素值printf(%d*%d=%-3dt,i,j,result);printf(n);return0;,resulti=1,j=11*1j=21*2j=31*3j=91*9i=2,j=12*1j=22*2j=92*9i=9,j=19*1j=29*2j=99*9,35,举例,例5.17求Fibonacci数列的前40个数。按每行4个进行输出。,#includestdio.hintmain()intn;longf1,f2;f1=1;f2=1;printf(%10d%10d,f1,f2);for(n=1;n=3),P96,1123581321345589144,5.6程序举例,36,输出下列图形:,112123123412345123456123456712345678123456789,#includestdio.hintmain()inti,j;for(i=1;i=9;i+)for(j=1;j=i;j+)printf(%3d,j);printf(n);return0;,37,举例,例5.4从键盘输入一个非负整数,判断m是否是素数。P82,素数(质数):只能被1和它本身整除的数。,判别方法:57:若256之间的每一个数都不能整除57,则57为素数,否则57不是素数。m,k=m-1,i=2k:若每一个i的值都不能整除m,则m为素数,否则m不是素数。,k=m-1;k=m/2;(m+1)/2;k=sqrt(m);sqrt(m+1),flag=1;k=m-1;for(i=2;i=k+1)printf(%4d,m);n=n+1;if(n%10=0)printf(n);,?,41,#include/输出100到200之
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 临时保姆用工合同
- 2025-2030半自动折叠式涂胶机行业市场现状供需分析及重点企业投资评估规划分析研究报告
- 2025-2030化学锚行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030制冷剂行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030冷却牛肉市场行业市场现状供需分析及投资评估规划分析研究报告
- 会计文员合同样本
- 2025-2030全球泛铁路工务后市场现状调查与发展潜力评估研究报告
- 二年级数学下学期应用技能考试试卷
- 2025-2030全球及中国计费软件行业市场现状供需分析及投资评估规划分析研究报告
- 刀模采购合同样本
- 2025年徐州市专业技术人员公需课程 - 心理调适
- 《地理课堂教学技能训练与应用》课件
- 第六单元《电的本领》单元教学设计(教学设计)-2023-2024学年四年级下册科学青岛版
- 2025国网甘肃省电力公司建设分公司招聘劳务外包制30人易考易错模拟试题(共500题)试卷后附参考答案
- 2022年安徽省普通高校分类考试招生和对口招生文化素质测试英语试题
- 煤矿生产调度培训课件
- 2025年金刚石工具项目可行性研究报告
- 2024-2025学年七年级地理下册 7.3 撒哈拉以南的非洲说课稿 (新版)新人教版
- 医疗器械年度培训计划
- 10kv变压器安装施工方案
- 2025年贵州六盘水市水城文旅(集团)有限责任公司招聘笔试参考题库附带答案详解
评论
0/150
提交评论