




免费预览已结束,剩余34页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章,循环结构设计,2,(1)goto语句和if语句构成的循环结构。(2)while语句构成的循环结构。(3)do-while语句构成的循环结构。(4)for语句构成的循环结构。,循环结构,循环结构又称重复结构,是按照一定的条件重复执行某段语句的程序控制结构。,3,while语句,一般形式为:while(表达式)循环体,while语句用来构造“当型”循环,多用于解决循环次数事先不确定的问题。,【例5.1】编程实现1+2+3+100。,#includestdio.hmain()inti,sum=0;i=1;while(i=100)sum+=i;i+;printf(%dn,sum);,循环的初始值,循环的条件,循环变量的增量,具有唯一真值的表达式,循环体,5,【例5.2】一个简单的印数程序。#includestdio.hmain()intnumber=0;while(number=1)number+;printf(%dn,number);,number,0,1,1,2,2,6,#includestdio.hmain()intnumber=0;while(number+=1)printf(*%dn,number);printf(*%dn,number);,【例5.3】第二个印数程序,number,0,1,2,*1,0,1,*2,2,3,*3,循环体的构成不一样,有一个延时效应,while(number=1)number+;printf(%dn,number);,while(number=a,elseq+;,scanf(%c,charch;,scanf(%c,intz=s=q=0;,8,【例2】输入一正文,统计正文包含的行数,字数和字符数。,分析:,字符数:,对每个输入的字符(不包含EOF)进行计数,行数:,以n为结束标志的一串字符,,字数:,假定识别符为空格字符、换行字符n或制表字符t,对n计数,标志,如果c是空格字符、换行字符n或制表字符t,则将标志符置为0,表示c字符不在字中,否则,如果标志符为0(表示c是字的第一个字符)则将字数加1,并修改标志为1(表示当前字符c是一个字中的字符)。,pleaseinputn:,while(c=getchar()!=EOF)+nc;if(c=n)+nl;if(c=|c=n|c=t)state=OUT;elseif(state=OUT)+nw;state=IN;,pleaseinputn:,#defineIN1#defineOUT0,if(c=n)+nl;if(c=|c=n|c=t)state=OUT;elseif(state=OUT)+nw;state=IN;,pleaseinputn:,#defineIN1#defineOUT0,#includestdio.h,voidmain()intc,nl,nw,nc,state;state=OUT;nl=nw=nc=0;printf(inputatextendofctrl+z:n);,while(c=getchar()!=EOF)+nc;if(c=n)+nl;,11,【例5.6】搬砖问题。(36块砖,36人搬;男搬4,女搬3,两个小孩抬一砖。要求一次全搬完,问男、女、小孩各若干)设计搬砖问题的程序。,分析:男人(men)的可能取值范围为:0-8;女人(women)的可能取值范围为:0-11;,对于men:men=0;while(men=8)找出满足题意的women,children;men+;,找每一个women下的children:,children=36-women-men,women=0;while(women=11)找出满足题意的children;women+;,if(4*men+3*women+children/2.0=36),#includestdio.hmain()intmen=0,women,children;while(men=8)women=0;,while(women=1e-6)t=sign/n;pi+=t;n+=2;sign=-sign;pi=pi*4;printf(pi=%fn,pi);,14,do-while语句,do-while语句的一般格式是:do循环体while();,功能:先执行一次循环体,再判断表达式的真假。若表达式为真(非0)则继续执行循环体,一直到表达式为假(0)时退出循环结构。,15,【例4】用do-while语句实现1+2+3+100,main()inti,sum=0;i=1;dosum=sum+i;i+;while(i=100);printf(%dn,sum);,while后面的“;”号不能少,16,【例5】while和do-while循环的比较。main()(2)main()intsum=0,i;intsum=0,i;scanf(%d,运行结果如下:运行结果如下:11sum=55sum=55,运行一次:再运行一次:1111sum=0sum=11,for语句,for语句的一般形式:,for(表达式1;表达式2;表达式3)循环体,【例5.10】求自然数列前n项的和。,for语句,#includestdio.hmain()inti,sum=0;i=1;while(i=100)sum+=i;i+;printf(%dn,sum);,main()inti,sum=0;scanf(%d,for语句,【例5.11】从键盘上输入10个数,求其平均值。,main()inti;floatf,sum;for(i=1,sum=0;i11;i+)scanf(%f,for语句,【例5.12】试求2000-2050年间的闰年。,inty;,(y%4=0,if,(,),for语句的几种特殊情况进行说明:,(1)对于for语句的一般格式for(p1;p2;p3)中,p1可以省略,但分号不能省略。,for(;i100)break;,(3)P3后面没有分号,也可以省略。,for(i=1,sum=0;i=100;)sum+=i;,i=1;for(;i=100;i+)sum+=i;,for(i=1,sum=0;i=3,1,1,f1,f2,f,f1,f2,3,f,f1,f2,f,?,2,5,8,f=f1+f2;,f1=f2;,f2=f;,for(i=3;i=n;i+),intf,f1=1,f2=1,i,n;,#includestdio.hmain()longintf,f1=1,f2=1;inti,n;scanf(%d,for(i=3;i=n;i+)f=f1+f2;f1=f2;f2=f;printf(%8ld,f);if(i%6=0)printf(n);return0;,应用举例,【例5.14】相传,印度舍罕时期有个宰相名字叫达依尔,达依尔见国王很自负,整天被一群溜须拍马的大臣们包围,百无聊赖,特别需要一种新的方式来排遣郁闷的心情他就向国王舍罕推荐了一种游戏,这种游戏就是现在的国际象棋,国王对这种新奇的游戏很快就产生了浓厚的兴趣,高兴之余,他便问达依尔,你对我这么衷心耿耿,希望我用什么来褒奖你呢?达依尔回答说:“国王只要在国际象棋的棋盘上的第一个格子上放一粒麦子,第二个格子上放上2粒,第三个格子上放上4粒,依次类推,每格是前一格的2倍,一直放到64格,我就感恩不尽了”。“好吧!”国王哈哈大笑,慷慨地答应了达依尔的请求。然而等到麦子成熟时,国王才发现,按照与达依尔的约定,全印度的麦子竟然连棋盘一半的格子数目都不够。国王很纳闷,怎么也算不清这笔帐。(1立方的小麦大约1.42108粒),sum+=t;,t*=2;,sum=0.0,t=1.0;,for(n=0;n64;n+),main()intn;doublev,sum=0.0,t=1.0;for(n=0;n64;n+)sum+=t;t*=2;printf(sum=%e,sum);v=sum/1.42e8;printf(v=%e,v);,*,现实的问题,如何打印下列图形,*,*,printf(*n);,printf(*n);,循环的嵌套,在一个循环内又完整地包含另一个循环,称为循环的嵌套。,printf(%cn,*);,for(i=1;i=5;i+),for(j=1;j=5;j+),printf(n);,循环嵌套的应用举例,【例5.15】计算下式的结果,n由终端输入。,for(sum=0,i=1;i=n;i+),t=1;,for(j=1;j=i;j+)t*=i;,sum+=t;,for(i=1;i=n;i+)sum+=i;,t*=2;,sum+=t;,for(t=1,i=0;in;i+),main()inti,j,n;longsum,term;scanf(%d,编程实现求下列数据的和(n从键盘输入):,n,【例5.15】求整数3100中的素数。,main()inti,n,num;for(n=3,num=0;n=100;n+)i=2;while(in,字符三角形,【例5.17】输入一个字母,输出由这个字母决定其高度的字符“金字塔”。例如输入小写字母d,则输出下列左边图形,如果输入大写字母D,则输出右边图形。aAabaABAabcbaABCBAabcdcbaABCDCBA,for(c2=top;c2=top;-c2)printf(%c,c2);printf(n);,voidmain()charc,c1,c2,top;inti;,top=isupper(c=getchar()?A:(islower(c)?a:0);,if(top)for(c1=top;c1=c1+1;-i)putchar();,【例7】输出如下格式的九九乘法口诀表。,*12345678911234567892468101214161839121518212427416202428323652530354045636424854749566386472981,main(void)inti,j;printf(%4c,*);for(i=1;i=9;+i)printf(%4d,i);printf(n);for(i=1;i=9;+i)printf(%4d,i);,for(j=1;j=i)printf(%4d,i*j);elseprintf(%4c,);printf(n);return0;,break语句,在循环结构中执行到break语句时,循环将无条件终止,程序跳出循环结构。,【例5.22】下列程序的功能是:从键盘上输入任意个数,求其平均值,当输入值为0时,计算结束。仔细阅读程序,体会break的使用。,main()inti;floatf,sum;for(i=0,sum=0.0;i+)scanf(%f,【例5.19】用break语句打印直角三角形的九九乘法表。,main()inti,j;for(i=1;i=9;i+)for(j=1;j=9;j+)if(in按上述策略联系进行4次(k=1,2,3,4)分配,如果每次分配时均妈祖其中的条件,并写最后剩下11个苹果(戈迪5个小孩的苹果),则试探的n即为原来的苹果数x。,main()intn,flag,x,k,a,b,c,d,e;n=11;flag=1;while(flag)x=n;flag=0;for(k=1;k=4,程序的运行结果如下:输出总的苹果数为59A=30B=10C=5D=3E=11,5.7.3密码问题,在报文通信中,为使报文保密,发报人往往要按照一定的规律将其加密,收报人再按约定的规律解密(即将其译会原文)最简单的加密方法是,将报文中的每一个英文字母转换为其后的第k个字母。例如当k=5时,字母a转换为f,B被转换为G。由此可以看出,这种转换是很方便的,只需改字母的ASCII码值加5(k的值为5)即可。在转换过程中,如果某大写字母其后的第k个字母已经超出大写字母Z,或某小写字母其后第k个字母已经超出小写字母z,则将循环到字母表的开始位置。例如,大写字母V转换为A,大写字母Z转换为E,小写字母v转换为a,小写字母z转换为e等。,【例5.24】从键盘输入一行字符,将其中的英文字母进行加密(非英文字母不需要加密)。,voidmain()charc;intk
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年专升本艺术概论考试模拟试卷:艺术与科技融合探讨艺术与科技融合的商业模式试题
- 2025年小学语文毕业升学考试模拟试卷(趣味知识拓展训练)
- 2025年中学教师资格考试《综合素质》核心考点特训题库(含答案)-教育创新与发展篇
- 2025年注册会计师考试《会计》金融工具会计处理经例题解析试题试卷
- 2025年小学教师综合素质职业道德论述题库及答案
- 2025年教师资格证考试《综合素质》心理辅导案例分析试题集及答案
- 2025年专升本艺术概论考试模拟卷:艺术科技融合案例分析试题
- 2025年小学语文毕业升学考试全真模拟卷(课外阅读与知识积累拓展试题)
- 2025年统计学期末考试题库:统计调查实施中的教育质量评估数据分析试题集
- 2025福建厦门市集美区后溪中心幼儿园招聘考试备考试题及答案解析
- 郑州市第四中学新初一分班(摸底)语文模拟试题(5套带答案)
- 2-第二章-各向异性材料的应力-应变关系
- 医院防爆反恐应急预案
- 云南省安全员C证考试题库及答案
- 死亡待遇申请表
- 集中供热管网系统一次网的调节方法
- 无线充电技术在汽车上的应用
- 马工程《刑法学(下册)》教学课件 第17章 危害国家安全罪
- 11科室临床路径、单病种管理目录
- 《廉洁从业》企业文化培训课件
- 综合性文稿写作名师优质课赛课一等奖市公开课获奖课件
评论
0/150
提交评论