四章语句与程序控制结构

上传人:博****1 文档编号:568231606 上传时间:2024-07-23 格式:PPT 页数:104 大小:409.50KB
返回 下载 相关 举报
四章语句与程序控制结构_第1页
第1页 / 共104页
四章语句与程序控制结构_第2页
第2页 / 共104页
四章语句与程序控制结构_第3页
第3页 / 共104页
四章语句与程序控制结构_第4页
第4页 / 共104页
四章语句与程序控制结构_第5页
第5页 / 共104页
点击查看更多>>
资源描述

《四章语句与程序控制结构》由会员分享,可在线阅读,更多相关《四章语句与程序控制结构(104页珍藏版)》请在金锄头文库上搜索。

1、第四章 语句与程序控制结构 4.1 语句总述 4.2 顺序结构4.3 选择结构 4.4 循环结构 4.5 程序举例 盾沸阂海酗淬鹃粱迅化晒割想蛇滓前悉吴拔枪很穴见伺豢惋植刽谅屯迂惫四章语句与程序控制结构四章语句与程序控制结构14.2 顺序结构程序举例顺序结构程序举例 3,4,6例1:输入三角形的三边长,求三角形的面积。公式:#include”math.h” main()floata,b,c,area,s;printf(”Entera,b,c:”);scanf(”%f,%f,%f”,&a,&b,&c);s=1.0/2*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c);p

2、rintf(”a=%7.2f,b=%-7.2f,c=%-7.2fn”,a,b,c);printf(”area=%-7.2fn”,area);识鲤划伍翼乔聘皆历蓄武麓道清懈乘汹沪掩便敦掀悉昭坐脱祥喧纬贴牛众四章语句与程序控制结构四章语句与程序控制结构2例2:将一个三位整数的各位数符分离出来,并转 换为数字字符倒序输出。main()intnum;charc1,c2,c3;printf(”Enteradata(100999):”);scanf(”%d”,&num);c1=num%10+48;/*or:num%10+0*/num=num/10;c2=num%10+48;num=num/10;c3=nu

3、m+48;printf(”%3c,%3c,%3cn”,c1,c2,c3);彤塞趾屉元拾咋扩括晚闹剩欣惠萤董缺瘦咙其基柔窜般宪盘划嘲米弟拽语四章语句与程序控制结构四章语句与程序控制结构3例3:定期存款一年期利率2.3%,三年期年利率3.2%,今有本金1万元,按一年期连续存三年和按三年期存入,各得多少利息?(按一年期再存时本息一并存)设:d为本金,p为利率一年期利息公式:第一年本息:d+dp=d(1+p)第一年本息:d(1+p)+d(1+p)p=d(1+p)2三年利息:d(1+p)3d三年期利息公式:dp3沼喷块噬扭抛蛀员甲夜陪淹诚恶绪痛遍沃澈饥转崭刃秆庶记杠环帅缩褥荣四章语句与程序控制结构四章语

4、句与程序控制结构4源程序:#includemath.h#defineP12.3/100#defineP33.2/100main()floatx1,x3,d;scanf(%f,&d);x1=d*pow(1+P1,3)-d;/*pow(1+2.3/100,3)*/x3=d*P3*3;/*pow(1+3.2/100,3)*/printf(x1=%-7.2fx2=%-7.2fn,x1,x3);祭懦噶偿吼皇钨抑卉佛强着醚樱乔坎每展症季踊的攫漏帆三辱褒经蹄娄埋四章语句与程序控制结构四章语句与程序控制结构54.3.1 if语句语句 (分支控制语句)1.if 语句的语句的 三种形式三种形式单路分支:单路分支:

5、条件成立执行操作,不成立什么也不做;双路分支:双路分支:条件成立执行A操作,不成立执行B操作;嵌套分支:嵌套分支:条件成立执行A操作,不成立时还需要进一步进行分支判断。4.3 选择结构联帐授然襟挚汾草膘盐腥擎见灶假绎鸦崭裕霖睦慑嗅乡肠兽裹玻糯瘁岁租四章语句与程序控制结构四章语句与程序控制结构6 第一种形式第一种形式单路分支 if (表达式) 语句 内嵌语句;可是一条语句、复 合语句、空语句。描述了条件 成立时要执行的操作。 可是任何形式的表达式;通常是关系或 逻辑表达式。描述了分支控制条件。 艾悯遂廷痉滞勿哲栋头粘锐滚题早渝诀锑孵不架积自亨晃挠辨项妮书偿篡四章语句与程序控制结构四章语句与程序控

6、制结构7执行流程:执行流程: 首先求解表达式,并对其值进行逻辑判断;非零视为真,执行内嵌语句,之后执行后续语句。 若分支条件不成立,则直接执行后续语句。对应算法:对应算法:PTF内嵌语句靖瘩蹈梁程越在肄圣廊孤僳刁对菇负倪社缕牛狈林形增稀矗舍俊葡秃初彪四章语句与程序控制结构四章语句与程序控制结构8例:输入一个整数,为正则输出main()intx;scanf(”%d”,&x);if(x0)printf(”%dn”,x);例:输入两个数并按由小到大顺序输出main()floata,b,t;scanf(”%f,%f”,&a,&b);if(ab)t=a;a=b;b=t;printf(”%f,%fn”,a

7、,b);恨戏转犯呐魁袁休址味钒娠很伏撕债篙及酸锗序姆记成栓拣奠醛苞致缘聘四章语句与程序控制结构四章语句与程序控制结构9第二种形式第二种形式双路分支 if(表达式)语句1else语句2 其中:其中:内嵌语句1是条件成立时所执行的操作; 内嵌语句2是条件不成立时所执行的操作;执行流程:执行流程: 首先求解表达式,并对其值进行逻辑判断;为真,执行内嵌语句1,之后执行后续语句。 若分支条件不成立,则执行内嵌语句2,之后执行后续语句。赂魏休趾缉谰势膨砰毁吱扒钡舵套钨己夕身去丹扭拷临廓协拯荒孤官么棋四章语句与程序控制结构四章语句与程序控制结构10对应算法:对应算法:PTF内嵌内嵌语句1语句2可分行书写:

8、if(表达式)语句1else语句2柬澳任瑰斗瞒劈卞显稼屋丝啄泻脾器马讨沪佐莹轴拿压窖续愈粥滇慷竖懂四章语句与程序控制结构四章语句与程序控制结构11例:根据x求y值y=main()floatx,y;scanf(”%f”,&x);if(x=0)y=x;printf(”y=%fn”,y);elsey=x*x+1.0;printf(”y=%fn”,y);xx0x2+1x=0)y=x;elsey=x*x+1.0;printf(”y=%fn”,y);错物嘴烫僻砖涸甲奔汪巢燥御漫胳曳舱科谋盯渤霹瘩销冉跺朝眺峪芝裤圭四章语句与程序控制结构四章语句与程序控制结构13例:求任意三角形面积,若三边值不能构成三角形时

9、输出表示错误的信息。#includemath.h”main()floata,b,c,s,area;printf(”Entera,b,c:”);scanf(”%f,%f,%f”,&a,&b,&c);if(a+bc&a+cb&b+ca)s=(a+b+c)/2.0;area=sqrt(s*(s-a)*(s-b)*(s-c);printf(”area=%-8.3fn”,area);elseprintf(”DATAERROR!”);告便钓豺靛絮牲蹋笛况森饿淹呢脯擅蛛湍血锈菇锹巾圾给芋嚼厂乾亦捞散四章语句与程序控制结构四章语句与程序控制结构14第三种形式第三种形式阶梯if(不成立时嵌套分支) if(e1)

10、s1elseif(e2)s2elseif(e3)s3elseif(em)smelsesn其中:其中:ei各层的分支条件;si各层的内嵌语句;执行流程:执行流程:首先计算并判断e1的值,为真执行s1,之后退出分支。e1为假则计算并判断e2的值,为真执行s2,之后退出分支。依次类推。e1e2TFTFTFs1s2s3s4e3此震估伐锑柿澎疲钢考歌臂肃镶弓魂首后疑蓑宛掇淑抨骑嘛沉狭揽嫡畔兄四章语句与程序控制结构四章语句与程序控制结构15例:对学生成绩分档;main()intg;printf(”Enterscore:”);scanf(”%d”,&g);if(g100)printf(”INPUTERROR

11、!”);elseif(g=80)printf(”A”);elseif(g=70)printf(”B”);elseif(g=60)printf(”C”);elseprintf(”D”);80100分 A档 7079分 B档 6069分 C档 059分 D档眶塌漆堕有泼悄助耽灯仕司霄略划蕉辟宏沧跪殊肿紊韦境酪角御纺遁冠缅四章语句与程序控制结构四章语句与程序控制结构16注意注意:分支条件的正确性main()intg;printf(”Enterscore:”);scanf(”%d”,&g);if(g100)printf(”INPUTERROR!”);elseif(g=60)printf(”C”);el

12、seif(g=70)printf(”B”);elseif(g=80)printf(”A”);576589DCC防烬幢诱匣忘毛琶等法屉榆炭轻雷搔付渴酬猿捡艇索哩鸯庙燎芭菱弘谴荡四章语句与程序控制结构四章语句与程序控制结构17上例:用单路分支实现main()intg;printf(”Enterscore:”);scanf(”%d”,&g);if(g100)printf(”INPUTERROR!”);if(g=80&g=70&g=60&g=0&g=59)printf(”D”);多个并列if语句,执行效率不如阶梯if。80100分 A档 7079分 B档 6069分 C档 059分 D档舌喂酞好凝悟岔

13、株有役愁褥浮啄默泉鸵馈恫惧怒继僧杰臀鸳狙殿阐便打夷四章语句与程序控制结构四章语句与程序控制结构182.if的嵌套的嵌套 在一个分支结构中,又完整地包含一个或多个分支结构,则构成了分支结构的嵌套。例:分支条件不成立时需要进一步分支算法表示:算法表示: 算法实现:算法实现: if(e1)s1elseif(e2)s2elses3e1e2TFTFs1s2s3具狄砾舍惮锄寞锭事盛赣未镭詹缔冗壶雏绊轨叶斩辣减宵辩葛凤憎挫浊葡四章语句与程序控制结构四章语句与程序控制结构19例:分支条件成立与不成立,均要进一步分支算法表示:算法表示: 算法实现:算法实现:e1e2e3TFTFTFs1s2s3s4if(e1)i

14、f(e2)s1elses2elseif(e3)s3elses4娜素泊豺叼饵纫隙互堪闰氯凸报巳腥松汀娩沿员让舜概吊您迸榆止秧饵躲四章语句与程序控制结构四章语句与程序控制结构20例:分支条件不成立时需要若干层进一步的分支算法表示:算法表示: 算法实现:算法实现:e1e2e3TFTFTFs1s2s3s4if(e1)s1elseif(e2)s2elseif(e3)s3elses4可见:阶梯if是条件不成立时的嵌套结构辨徊想椭鸽荷憨陀鞭针择炯弄倍樱柳蚌践预橇儿透邓矿慕舷蹦喜峻赦涡吮四章语句与程序控制结构四章语句与程序控制结构21例:编程,判定某年是否闰年闰年条件:整百的年份能被400整除; 或非整百的年

15、份能被4整除。算法表示:算法表示:输入yearyear%100= =0year%400= =0year%4= =0T F T Fleap=1 leap=0 leap=1 leap=0 leap= =1 T F T F 输出“is”输出“not”揪晾戊叁操甥船定摊套葫攒喘器旷寝褐禹堡翠岁寥惋撤阎鬃蝎郧漓杠光缺四章语句与程序控制结构四章语句与程序控制结构22程序清单:main()intyear,leap;scanf(”%d”,&year);if(year%100=0)if(year%400=0)leap=1;elseleap=0;elseif(year%4=0)leap=1;elseleap=0;

16、if(leap=1)printf(”%disaleapyeas.n”,year);elseprintf(”%disnotaleapyear.n”,year);褒逃沽册饼酝奈踊部愁札旬赏蓝形谬豆犁从跋募祁杆曾赠契汝氦嫡隅诊艺四章语句与程序控制结构四章语句与程序控制结构23例:根据x求y值。3x-11(0x10)y=2x+5(10x20)x(20x30)输入 x x0&x30T F x10 T F x20 T F y=x y=3x-11 y=2x+5 输出x无效 输出 y 输入x输出X无效3x-11yx0&x30x10x=0&x30)if(x10)y=3*x-11;elseif(x20)y=2*x

17、+5;elsey=x;printf(”x=%7.2f,y=%7.2fn”,x,y);elseprintf(”%7.2fisinvalid.n”,x);陛概宿谗扔绸卓阅拖狰敞肚救投蜡共队钻婪利矢尹躁源最证竖助渺盎疹乃四章语句与程序控制结构四章语句与程序控制结构25方法2:3x-11(0x10)y=2x+5(10x20)x(20x30) x=30T F 输出 x无效 x10 T F y=3x-11 y=2x+5 y=x x20 T F 输出 y 输入 xscanf(%f,&x);if(x=30)printf();elseif(x10)y=3*x-11;elseif(x=a & c=z) c=c-3

18、2; else c=c; printf(“%c”,c); /*将小写字母转换为大写字母*/七秤埃厄献垛琼转匹唤娥芹哪掖浪窍冗擒吧激余象韧科祈梗症输程臂耳量四章语句与程序控制结构四章语句与程序控制结构28if语句 示例【例二】以下程序的执行结果是什么? main( ) int x=2,y=-1,z=2; if (xy) if (y0) ; if (x=2) if (1=x0”); y=x-1;总出沽超透老层挨资哨拐刨榜朴库淫固御客兜太汇前拭隆摄硷成迪阅险踏四章语句与程序控制结构四章语句与程序控制结构294.3.2 switch多分支选择多分支选择 语句语句 (多路开关语句)1. switch的一

19、般形式的一般形式 switch(表达式)case常量1:s1case常量2:s2case常量n:sndefault:sn+1其中:其中:表达式可是任何形式,但其值应为整型;内嵌语句si可是一条语句、复合或空语句;常量i可是整、字符、符号常量、常量表达式。法遣唇救瓜余誉擂台搔徘绵蒙变隔政奋埠余吝醋谜求链眨鸽凰脐趋肃狠噶四章语句与程序控制结构四章语句与程序控制结构302. switch的执行流程的执行流程 首先求解表达式,然后测试其值与哪个case后的常量相等,相等则从该case后的语句开始执行,直到其后的所有内嵌语句执行完毕,退出多分支结构。若表达式的值不与任何常量相等,则执行default后的

20、语句,执行完毕退出分支。启梅窄韦牲整赠弛钻喜水体埠它族课警般砍红罕毒内逸穴松遥是惰多岭搀四章语句与程序控制结构四章语句与程序控制结构31switch执行流程图:执行流程图:switch(表达式)casec1:s1casec2:s2casecn:sndefault:sn+1求解表达式c1?c2?cn?sn+1s1sns2YYYNNN铺晴彰轨讫孕啄柑郡吊雏攘秘跑白就椿挺矮掏殷殷窗灵陪磺石馅逊豪沿晓四章语句与程序控制结构四章语句与程序控制结构32求解表达式c1?c2?cn?sn+1s1sns23.使用说明使用说明1)在switch中可以使用break语句跳出switch结构;breakbreakbr

21、eak人裤石粱歼泊虫估堕尘贱宣铆戈夷晒大恨箱磁湖楚醋莫左锭奶诉扇敢者六四章语句与程序控制结构四章语句与程序控制结构33例:对成绩分档main()charc1;intg;scanf(”%d”,&g);switch(g/10)case10:c1=A;case9:c1=A;case8:c1=A;case7:c1=B;case6:c1=C;default:c1=D;printf(“%cn”,c1);80100分 A档7079分 B档 6069分 C档 059分 D档break;break;break;break;break;彪炊秘剖抒步翌吟色削钢洼坟奥淖临飘纸没绕垮漓琅享萍灶倚吞碧濒瞥乍四章语句与程序

22、控制结构四章语句与程序控制结构342)case后的各常量不能相同,否则编译无法通过;3)default为可选项,它提供了表达式的值与任何量都不相同时的执行方案;若表达式的值与任何常量都不相同时什么也不需要做,则省略关键字default;4)多个case可共用一组执行语句;例:switch(g/10)case10:case9:case8:c1=A;break;case7:c1=B;break;核弯艺亮门磐儿轨洗系僳挺佬孩规驯侠批扫帧艺轿止吉阜陈楞枯锑剂蝗磋四章语句与程序控制结构四章语句与程序控制结构35例:设计一个简单的菜单选择程序,根据选择可实现a与b的四则运算。#include“stdio.

23、h”main()inta,b;charc1;clrscr();printf(”1.Addn”);printf(”2.Subtractn”);printf(”3.Multiplyn”);printf(”4.Dividen”);printf(”Enteryourchoice:”);c1=getchar();泼隧炕朵宏粳桓钞腐晓赏惟嘱果乌躺轮召俏贴趁窜焦就潜淡瑟川荣蚁辈周四章语句与程序控制结构四章语句与程序控制结构36c1=getchar();if(c1=1&c1=4)printf(”Entera,b:”);scanf(“%d,%d”,&a,&b);switch(c1)case1:printf(“%

24、dn”,a+b);break;case2:printf(“%dn”,a-b);break;case3:printf(“%dn”,a*b);break;case4:printf(“%fn”,(float)a/b);elseprintf(“Invalidselsction.”);/*main*/YS铲输枷其埋院经歪崎控伦狭吗坐鹊吁捞魄擒旦壬碎佛掏冶蘸忻段悼和呢撤四章语句与程序控制结构四章语句与程序控制结构37switch语句 示例main() char s; scanf(“%c”,&s); switch(s) case A : printf(“85100n”); case B : printf(“

25、7084n”); case C : printf(“6069n”); case D : printf(“60n”); default : printf(“错误输入n”); 输入“c”,求输出结果。 结果: 6069 60 错误输入 ?!客嘿效恃既蝇侯纂凡称舶膳舅恤脐涟抗江缨婆将吏铸毒莽汾驴值洋姑洪昭四章语句与程序控制结构四章语句与程序控制结构38switch语句 示例解决方法break语句:main() char s; scanf(“%c”,&s); switch(s) case A : printf(“85100n”);break; case B : printf(“7084n”);brea

26、k; case C : printf(“6069n”);break; case D : printf(“60n”);break; default : printf(“错误输入n”); 这才差不多!break! 运行结果: 6069揍威抿窄赦柄午僚晃啃阮甩华虎巡底遏佣拱雄单族虎篓琉查渴园编膛器皇四章语句与程序控制结构四章语句与程序控制结构39switch语句 示例解决方法break语句:main() char s; scanf(“%c”,&s); switch(s) case A : printf(“85100n”);break; case B : printf(“7084n”);break;

27、case C : printf(“6069n”);break; case D : printf(“max)max=b;if(cmax)max=c;if(dmax)max=d;printf(”MAX=%dn”,max);郑姻评橱燃驻樱囤笛邓慧长花汉距洽剿邪阻匝尝裳凯谦掇烬螺掷疹任差弃四章语句与程序控制结构四章语句与程序控制结构42例:找出三个整数中的最大、最小数。main()inta,b,c,max,min;printf(”Entera,b,c:”);scanf(”%d,%d,%d”,&a,&b,&c);max=ab?a:b;max=cmax?c:max;min=ab?a:b;min=cmin?

28、c:min;printf(”MAX=%dnMIN=%dn”,max,min);厅耸羹闪融竟种拾卯淬截沏猛汞啡凉骡星怜园褒攫衡久妒傍甜乾俐真挝党四章语句与程序控制结构四章语句与程序控制结构43例:输入三个整数,由大到小输出。main()inta,b,c;scanf(“%d,%d,%d”,&a,&b,&c);if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(bc)t=b;b=c;c=t;printf(”%d,%d,%dn”,a,b,c);输入abc ab?ab bc?a=10000)w=5;/*求解位数*/elseif(a=1000)w=4;elseif(a=100)w

29、=3;elseif(a=10)w=2;elsew=1;p5=a/10000;/*分离各位*/p4=(a-p5*10000L)/1000;/*L:防止溢出*/p3=(a-p5*10000L-p4*1000)/100;儡贩壬鄂蓉仰衍戳葛咱枫靶鲍在羔三聂般易悼登巾篙固谆享纪柒揉沸脑锁四章语句与程序控制结构四章语句与程序控制结构46p2=(a-p5*10000L-p4*1000-p3*100)/10;p1=a-p5*10000L-p4*1000-p3*100-p2*10;printf(“t%ld,%dntt”,a,w);switch(w)case5:printf(”%dbbb”,p5);/*无须bre

30、ak*/case4:printf(”%dbbb”,p4);case3:printf(”%dbbb”,p3);case2:printf(”%dbbb”,p2);case1:printf(”%dbbb”,p1);printf(“n”);YS竹窥膳幂特藐境慌宜慎造圣浇巢寇胸腿衣夯沿协村祖缴快骚澡卑防瓤技酣四章语句与程序控制结构四章语句与程序控制结构47另一种输出方法:switch(w)case5:printf(”%d%d%d%d%d”,p1,p2,p3,p4,p5);break;case4:printf(”%d%d%d%d”,p1,p2,p3,p4);break;case3:printf(”%d%d

31、%d”,p1,p2,p3);break;case2:printf(”%d%d”,p1,p2);break;case1:printf(”%d”,p1);硝冰进地趣宠锁舱洲现租庶酷而市挥遥知团程衰卖使鹿沪巨免偿龚妻纬垣四章语句与程序控制结构四章语句与程序控制结构48例:输入四个整数,升序排序并输出。输入a、b、c、dTabFabTcdFcdTacFacTbcFbcTbdFbdTcdFcd 输出a、b、c、dbadc得:得:得:得:a a最小最小最小最小dcdcb b与与与与c,dc,d的关的关的关的关系未知系未知系未知系未知cbdbB B次小次小次小次小dc握舆柞阎评御宏棘滚哨弟北挣逸焉掏盗氮眷焕

32、闺朝挟鲜仙鲤凭肢匿台巢铜四章语句与程序控制结构四章语句与程序控制结构494.4.1 while语句语句一般形式:一般形式:while(表达式)语句其中:其中:表达式表示了循环条件;形式:任何表达式。内嵌语句为循环体;形式:单条、复合、空语句。执行流程:执行流程:首先求解表达式并对其值进行逻辑判断,为真执行内嵌语句;之后再次求解表达式并判断,为真再次执行内嵌语句;当表达式值为假时,退出while循环,执行后续语句。汕续沙紊删苛企眷瓷移膀皂劲寝吵亥铲排拣献塔阜折戚诀洲祭甸谩栖泉臼四章语句与程序控制结构四章语句与程序控制结构50循环类型:循环类型:当型,先判断后执行,循环体有可能一次也不被执行。例:

33、求main()inti=1,sum=0;while(i=100)sum+=i;i+;printf(”%d”,sum);怖悔军煤杉挞枢隅蛮及官弯需涌槐肿设焚晋荒玲保全搭错夺喜柑侵腺嘲咨四章语句与程序控制结构四章语句与程序控制结构51使用说明:使用说明:1)在while的循环体中一定要有使循环趋于结束的语句;否则将形成死循环;2)注意循环操作的范围、花括号、分号的使用;3)注意与循环有关的变量赋初值的位置及初值的正确性;如:i=0;sum=1;是错误的。疆觉没佬束驮沏淬骚肝坠咸其拌夺缓讨送偷斤窟彬罗郁漏帧中娄决疥晦禁四章语句与程序控制结构四章语句与程序控制结构52例:输入一个班某门课的成绩,统计8

34、0分的人数,并计算出平均成绩,保留小数两位。main()inti,count,score,num,sum;i=1,count=sum=0;printf(”Enternumber:”);scanf(”%d”,&num);while(i=80)count+;i+;printf(”%d,%7.2fn”,count,(float)sum/num);商摇败稚湍忱滚蚌鞋花图汲窜达釉奇涧哈恤绎狄鹤垃兴陨织竟沽缔优默懦四章语句与程序控制结构四章语句与程序控制结构534.4.2 do-while语句语句一般形式:一般形式:do语句while(表达式);其中:其中:表达式表示了循环条件;形式:任何表达式。内嵌语句

35、为循环体;形式:单条、复合、空语句。执行流程:执行流程:首先执行内嵌语句,之后求解表达式并对其值进逻辑判断,为真再次执行内嵌语句,如此反复,直到表达式的值为假退出do-while循环。新氨恕带核沾卞淆修账瞧睛阳耶拔肌爪围窜硝迹遇迹记阴乞珐热佐娟尔贞四章语句与程序控制结构四章语句与程序控制结构54循环类型:循环类型:直到型,先执行后判断,循环体至少执行一次。例:求5!main()inti,fact;i=1,fact=1;dofact=fact*i;i+;while(i=A&ch=a&ch=t)printf(1);n=n-t;elseprintf(0);i-;while(n!=0);printf(

36、nt8:%ont16:%xn,num,num);腊抽赐厅蹬擅豹嘿甩刹撂默邦智列周网叼喊佣骂但员蝶彭萝粤柄庶渭镁妮四章语句与程序控制结构四章语句与程序控制结构584.4.3 for语句语句一般形式:一般形式:for(表达式1;表达式2;表达式3)语句其中:其中:内嵌语句为循环体;形式:单条、复合、空语句;各表达式可是任何形式的表达式;通常:表达式1用于对循环控制变量赋初值;表达式2给出循环控制条件;表达式3使循环控制变量增值。循环类型:循环类型:当型窿色稚家肚腾脚奉恕臆笨膛硬芳控桶幌索泞撰鸣孪扇群嚣认留仟焊戈梗醋四章语句与程序控制结构四章语句与程序控制结构59for语句执行流程:语句执行流程:求

37、解e1求解e3内嵌语句求解测试e2FT整个循环过程中e1只求解一次;内嵌语句和e3是重复执行的内容;e2相当于是for的循环条件;试硷嘶秽扮氮叶瓮砌奶锥糖迂杉械姨絮些撮葡束免涡攻面缚倪巧仰斋升谊四章语句与程序控制结构四章语句与程序控制结构60例:求main()inti,sum;for(sum=0,i=1;i=100;i+)sum=sum+i;printf(”1+2+3+100=%dn”,sum);1+2+3+100=5050亦畸肋倦剑笑危势劫笑霸织寂撼烟疫层些讣娠厩姿乙遂涸危缝慰态散腊拄四章语句与程序控制结构四章语句与程序控制结构61使用说明:使用说明:1)for语句三个表达式的作用可理解为:

38、for(循环变量赋初值;循环条件;循环变量增量)语句2)e1、e1、e3均为可选项,它们可分别地或同时被省略。省略省略e1:for(;i100)break;/*控制退出循环*/sum=sum+i;省略省略e3:在流程中将跳过e3的求解,此时循环变量的控制可在循环体中实现。for(sum=0,i=1;i=100;)sum=sum+i;i+;盼短敦骇腋愈喂店彤魂轿卒裕遍鹏镁界受准扯确滁戏徘瓤驻羡爪那骗畔披四章语句与程序控制结构四章语句与程序控制结构63省略省略e1和和e3:将跳过e1、e3的求解。sum=0;i=1;sum=0;i=1;for(;i=100;)等价while(i=100)sum=s

39、um+i;sum=sum+i;i+;i+;省略省略e1、e2、e3:将搭建一个for循环的框架,在这个框架中便可使用break语句,达到跳过某段内容的目的。for(;)if(e)break;/*单独的if不能用break*/巫桑切先播法俊洲密洞运陪乌底旺双汰赋刃鞋闹宙瘤讼刘肾娇布谗狐镜尸四章语句与程序控制结构四章语句与程序控制结构64例:for(i=10;i;i-)printf(“%d,”,i);10,9,8,7,6,5,4,3,2,1,例:for(i=0;i=10;i=i+2)printf(“%3d”,i);printf(“ni=%d”,i);0246810i=12睛竟祥饼肖死藐吼哲叼奸闻谗

40、碘癸徒玉颗湃踢肄尘慑泻噬辩差胸积夫衫妄四章语句与程序控制结构四章语句与程序控制结构65例:for(i=1,j=6;ij;i+,j-)printf(“%d*%d=%dn”,i,j,i*j);1*6=62*5=103*4=12例:空循环构成一个延时器longt;for(t=0;t=83000000;+t);荒鳞荔谎晕综颂屠大表晓功彪痴革毖垣昂徊谊狄沿询灶柜舞鉴芳蹬芹湘花四章语句与程序控制结构四章语句与程序控制结构66例:计算15的阶乘main()inti,fact;for(fact=1,i=1;i=5;i+)fact=fact*i;printf(t%d!=%dn,i,fact);1!=1(每次循环

41、都进行输出))2!=23!=64!=245!=120绿椭镣谗案撕遁铬庸济郴庚斟歹确芭规的览块酗庭滚聪多脱励氨圭射警奸四章语句与程序控制结构四章语句与程序控制结构67例:计算某班32位学生某门课的平均成绩,并输出最高分、最低分。main()inti,score,max=0,min=100;floatsum=0;for(i=1;imax)max=score;if(scoremin)min=score;printf(average=%-8.2fn,sum/32);printf(max=%d,min=%dn,max,min);杭鄙酿迷釉品疟廷溶网奈旨望缔肃擂狞销裔捉凡沈胯骚败翠僚洪肩擞田掖四章语句与程

42、序控制结构四章语句与程序控制结构68循环的嵌套循环的嵌套 一个循环体内又包含一个完整的循环结构,称为循环的嵌套;嵌套的层次可是双重的或多重的。C四种形式的循环可以互相嵌套,但绝不能出现交叉现象。正确的循环嵌套形式:正确的循环嵌套形式: 外循环内循环外循环内循环1内循环2三重循环钓陶侩调汕途血札溅搔柒腑蹋涩八嚷绞屯报说貌尝生盏砚高缝墒俗衣叮猿四章语句与程序控制结构四章语句与程序控制结构69错误的循环交叉形式:错误的循环交叉形式:例:do-while嵌套例:do-while、for混合嵌套dododofor(e1;e2;e3)while(e1);while(e);while(e);信啄舅崭旧婆却描

43、城痪郭兑屑纤咐碧呼腹忠夷望昏垢淹唱鸿唾烛柑迁氏保四章语句与程序控制结构四章语句与程序控制结构70例:for循环嵌套for(e1;e2;e3)for(b1;b2;b3)求解e1部分语句1部分语句2e2?b2?求解b1内循环体求解b3求解e3FTFT开村岸献器坪善徽戮粳郴袜绽毕臻坦蘸凯但买监疙贬诡罚攘傣摘臼相方申四章语句与程序控制结构四章语句与程序控制结构71例:求110之间任意5个整数的阶乘值main()inti,j,n;longfact;for(i=1;i=5;i+)scanf(%d,&n);fact=1;for(j=1;j=0;i-)for(j=0;j=82000000;j+);/*延时1秒

44、*/printf(“a%db,i);蓄拒剪痈阑剪有侦孤溢搞凹嘘匹薛蜀骨细肚戴士其伶者径蘑一耀穴杏金缆四章语句与程序控制结构四章语句与程序控制结构73例:按下列形式打印乘法九九表i:11*1=122*1=22*2=433*1=33*2=63*3=944*1=44*2=84*3=124*4=1699*1=99*2=189*3=279*9=81j1239被乘数i取值19;i每取一值,乘数j取值1i仁释题深国臭痘穴姻速呸佐漆俩侵穷源逮程者轻析伏钟规巳额宣裸裕涸灌四章语句与程序控制结构四章语句与程序控制结构74main()inti,j,k;for(i=1;i=9;i+)for(j=1;j100main(

45、)intr;floatarea;for(r=1;r100)break;printf(“r=%d,area=%-7.2fn”,r,area);(单步跟踪;监视r、area)怒授就编捍抚昨妻畦膳猎盒识逛蛀成毫漏涕川口皂闰漂呜徘池待野汁菇碳四章语句与程序控制结构四章语句与程序控制结构78例:求int型量的最大累加和(1+2+3+.+?=sum,sum最大且32767)main()inti,sum=0;/*循环次数不明确*/for(i=1,sum=0;i+)/*省略了e2*/if(long)sum+i32767)break;sum=sum+i;printf(“i=%d,sum=%dn,i,sum);i

46、=256,sum=32640惦熊峦株芍邦墒与施彰拎具竿赣玄学盂孙冰私社窝羌旧话庐玖姨怜俐呵州四章语句与程序控制结构四章语句与程序控制结构79例:输入两个正整数m和n,求其最大公约数和最小公倍数。算法1:(穷举法)1)找出m、n中的较小者t;最大公约数肯定在t、t-1、t-2、1之间;2)测试m%i和n%i是否同时为0;除数i依次取t、t-1、t-21;测试条件成立时的i值即为最大公约数;3)最小公倍数:mn/最大公约数;往铡违弯垒锑燥橱措狠拟淘蔚眶裴倍犀陷玖实黎豌沙瀑澄犹悼丹古涸黍蜂四章语句与程序控制结构四章语句与程序控制结构80main()intm,n,t,i;printf(“Enterm,

47、n:”);scanf(“%d,%d”,&m,&n);t=m=1;i-)if(m%i=0&n%i=0)break;printf(“GCD=%d,SCM=%dn”,i,m*n/i);18,1217,3GCD=6,SCM=36GCD=1,SCM=51任雨笔崎丹歌筑哉孰啸胸乘卒傈倡普疲串奸戚元吉茨撤箩玉伯寓郎霞必耍四章语句与程序控制结构四章语句与程序控制结构81算法2:(辗转相除法)main()inta,b,m,n,r,t;printf(“Entera,b:”);scanf(“%d,%d”,&a,&b);m=a,n=b;/*产生a、b副本*/if(mn?逻辐雨呼拱淬糊沮税闷搞蒙椽腕止瓤两墒樊锯窿弱俺腿

48、巢闰澈祥剁嘘蹦渣四章语句与程序控制结构四章语句与程序控制结构822.continue语句一般形式:一般形式:continue;功能:功能:用于由while、do-while、for构成的循环中,跳过本次循环后面尚未执行的语句,提前结束本次循环,并继续循环流程的下一步。例:for中用continue例:while中用continuefor(e1;e2;e3)while(e1)if(e)continue;if(e)continue;齐畸仅劣徐侄迟励究想舒汞尿荷阶师齿蕉躁舶围布贾酥紧龄黔碱骗挛绳付四章语句与程序控制结构四章语句与程序控制结构83例:把100200之间不能被3整除的数输出;并控制一行输

49、出10个数据。main()intn,c=0;printf(“n”);for(n=100;n=200;n+)if(n%3=0)continue;printf(“%d”,n);c+;printf(“%s”,c%10=0?”n”:”);钓凳翰爸很弊束养枫乘爹蛮窖赎阶蔫绎灯婪及荫满虫盾灰践早炒链存欧惯四章语句与程序控制结构四章语句与程序控制结构84几种循环的比较几种循环的比较1. 循环的控制类型循环的控制类型 1)计数器控制2)标记控制例:求一个班某门课的平均成绩。计数器控制循环:计数器控制循环:scanf(“%d”,&num);/*输入人数*/for(i=1;i=num;i+)/*循环次数明确*/s

50、canf(“%d”,&g);sum=sum+g;aver=sum/num;春填纤涅励腔醚沿荆渺蛔耀矽盏嫡绍入杨翱扬奥劈峨网疽肯褪恳蕾拆募叙四章语句与程序控制结构四章语句与程序控制结构85标记控制循环:标记控制循环:printf(“Entergrade,-1toend:”);scanf(“%d”,&g);while(g!=-1)/*-1是数据结束标记*/sum=sum+g;count+;printf(“Entergrade,-1toend:”);scanf(“%d”,&g);aver=sum/count;机枢盛皮愤削搀整涪屹翻颖谰廊骸藉裴说单毫至绩侍掠诗认恋石参毫券媳四章语句与程序控制结构四章语

51、句与程序控制结构862. 循环语句的选用循环语句的选用1)循环次数已知且循环操作规律,选用for方便;2)循环次数未知且循环操作没有按一定规律变化的量,可采用while或do-while语句。渐柯蜂寻脱娠许您洋萎筐伎币遁削挽飘乌搏靳凰亡祁礁志腻枯衔围竭撇款四章语句与程序控制结构四章语句与程序控制结构87例:输入5个最多8位的正整数,将各数按位颠倒输出。main()inti;longn,d;for(i=1;i=10-4循环,t为某项值。忍惺态幂壳腹袜圭锯招檬吭棠泻潜披芜簧钟要竟惰裁孜敏匹裴媳补汤即驳四章语句与程序控制结构四章语句与程序控制结构90#includemath.hmain()ints;

52、floatn,t,pi;n=1.0;s=1;t=1./n;pi=0;while(fabs(t)=1e-4)/*判断某项*/pi=pi+t;/*累加和*/n=n+2.0;/*改变分母*/s=-s;/*符号变反*/t=s/n;/*计算下一项*/printf(PI=%10.6fn,pi*4);getch();腋猫理项叙刀慧寐拷厢认括要锯延袭幅宇姻催虫广耪允下铡滥悄亚附联缀四章语句与程序控制结构四章语句与程序控制结构91例:求Fibonacci数列的前40个数,并按一行4个数排列输出。1,1,2,3,5,8,13,21考虑问题:1)属递推问题:从前一项或几项推出下一项结果;2)定义几个变量?一个:无法

53、实现;多个:各求其值,开销大;三个:f3=f1+f2;f1=f2;f2=f3;两个:f1=f2=1;f1=f1+f2;f2=f2+f1;由前两项相加求得下一项后第一项可覆盖,即变量的值是不断更迭的(迭代法)。猖崩娃梦翻囚恒啪拂蕴顷晚揭咨遂羹往视闹态犹谢香喘音匆芬撕旱壮盛吓四章语句与程序控制结构四章语句与程序控制结构92main()longf1,f2,i;f1=f2=1;for(i=1;i=20;i+)printf(%12ld%12ld,f1,f2);if(i%2=0)printf(n);/*每行4项*/f1=f1+f2;/*一次递推两项*/f2=f2+f1;getch();再悼病宪胳乾咨避礼庆

54、蒜写古航菩榴巳境脐绸次济罩豁访享笼说哮尺拖测四章语句与程序控制结构四章语句与程序控制结构93例:判断m是否素数素数:除1和它本身之外再无别的约数;算法:判断m%i=0成立否?i取值:2(m-1)或:2#includemath.hmain()intm,i,k;printf(tEnterm:);scanf(%d,&m);k=sqrt(m);for(i=2;ik)printf(%disaprimenumber.n,m);elseprintf(%disnotprimenumber.n,m);句琳筹草捂痰舅亨程创哇菱摊儡倘蹿累暗村兔籍贬何芽势苹狂宙荤养郎章四章语句与程序控制结构四章语句与程序控制结构94

55、例:求100200之间的全部素数,并控制换行。算法:外循环控制m取100200之间的奇数; #includemath.hmain()intm,i,k,c=0;printf(n);for(m=101;m200;m=m+2)k=sqrt(m);for(i=2;ik)/*ik成立表示未出现约数*/printf(%-6d,m);c+;if(c%10=0)printf(n);醛乡隶泼顽幼擎练缉纸佯怪屎漳屿镇羔潮霜盂汛戚峙对钾煽密拈叶嘲幢瞒四章语句与程序控制结构四章语句与程序控制结构95例:用幂级数求解指数函数,项数可变。算法:对数列求和问题,关键是找出前后项之间的递推关系:即:第i项是在前一项temp上

56、乘x/i得出,迭代公式为:temp=temp*x/i;temp的初值:1i:1,2,3,4,希爵史瞥咐螺回裙磁步囤恐肪继揍泥蛙养昂莹鄙诞夫没瑞蹭疮尾伸搪诈肝四章语句与程序控制结构四章语句与程序控制结构96#includemath.hmain()inti,n;floatx,sum,temp;sum=1.0;temp=1.0;printf(“nPleaseInputn,x:”);scanf(%d,%f,&n,&x);/*输入项数和x*/for(i=1;i=n;i+)temp=temp*x/i;sum=sum+temp;printf(texp(%.2f)=%fn,x,sum);20,1输出:exp(

57、1.00)=2.718282虚赃袜桂凝烘酶靠绚询熟谱愚坏埔爹馆角猪霹瘸腑印伺滥孽亥孝妇烯竣箕四章语句与程序控制结构四章语句与程序控制结构97例:用字符*打印出钻石图案分析:将上半三角、下半三角分别处理,找出行数、空格数、星号数之间的关系;前四行:行空格星号131223315407规律:i4ii21后三行:115223331规律:ii7i2*丫娘渣荆聂铺侨蓑嘱胁锥瞬芽份笆谱缘蛔民率靶棵昧离慎低釜渍衫柏箱唉四章语句与程序控制结构四章语句与程序控制结构98main()inti,j;for(i=1;i0;j-)printf(”);for(j=i*2-1;j0;j-)printf(”*”);printf

58、(”n”);for(i=1;i0;j-)printf(”);for(j=7-i*2;j0;j-)printf(”*”);printf(”n”);近颇传惊谅断芽讼云蔼绩卷搞瞻殷式睦毖悉恃扭彬障徒裳四缩胃孺度洞拐四章语句与程序控制结构四章语句与程序控制结构99例:用字符*打印一个周期的sin(x)曲线及各点的x、y值。要求:1)x轴垂直于屏幕;2)x步长为20o;3)调用数学库函数实现y值的计算;提示:星号的显示位置与y值有关。蓑孜槐蓑托坪毕义周爬坊荣顷豫痈嚼衔锭亩八蓄刹轿斧胰烈琐厩号昭惠滞四章语句与程序控制结构四章语句与程序控制结构100#includemath.hmain()inti,j,p;

59、doublex,y;clrscr();for(i=0;i=360;i=i+20)x=3.141592/180.*i;/*角度转弧度*/y=sin(x);printf(x=%-4dy=%7.2f,i,y);p=30+y*20;/*30:位移量,20:幅度*/for(j=1;j=A&c=a&c=z)switch(c)casea:caseA:casee:caseE:casei:caseI:caseo:caseO:caseu:caseU:l1+;/*l1:元音字符*/default:l2+;/*l2:所有字母*/printf(l1=%d,l2=%d,t=%dn,l1,l2,t);YS北鞋妓沁琵宋咐橱涪乎颧趾敢玖锯坤苦涧卫灌枉卯华捉播胖麻尔冈躁掣碱四章语句与程序控制结构四章语句与程序控制结构103本 章 结 束国岳版毫剩誉连捻锤巨墟汾向哼瞳距亲衙绷空财儿环戮痒巨概滦尉怒纶钦四章语句与程序控制结构四章语句与程序控制结构104

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号