第3章基本程序结构

上传人:人*** 文档编号:568771072 上传时间:2024-07-26 格式:PPT 页数:130 大小:585.50KB
返回 下载 相关 举报
第3章基本程序结构_第1页
第1页 / 共130页
第3章基本程序结构_第2页
第2页 / 共130页
第3章基本程序结构_第3页
第3页 / 共130页
第3章基本程序结构_第4页
第4页 / 共130页
第3章基本程序结构_第5页
第5页 / 共130页
点击查看更多>>
资源描述

《第3章基本程序结构》由会员分享,可在线阅读,更多相关《第3章基本程序结构(130页珍藏版)》请在金锄头文库上搜索。

1、第第3 3章章 基本程序结构基本程序结构w程序的3种基本结构w赋值语句w数据的输入/输出w顺序结构程序设计w选择结构程序设计w循环结构程序设计姨由丛湃续岂迈棱换牙冲孽镭轩荣脾掷洁狗巴笋命霸慰轴适郁钱帧庇藤卸第3章基本程序结构第3章基本程序结构3.1 3.1 程序的程序的3 3种基本结构种基本结构w结构化程序设计wC语言的语句驹蝇歧隶好啥褂茵研昨宅胆痛谈赶通埠韧瘦未冠兑孤匀当痰若桓漓纠背验第3章基本程序结构第3章基本程序结构3.1.1 3.1.1 结构化程序设计结构化程序设计w程序:由计算机语言组成的语句序列。w程序的三种基本结构:顺序结构、选择结构、循环结构。w结构程序设计思想:任何程序都可以

2、用顺序结构、选择结构、循环结构这3类结构来表示。由这3类基本结构组成的程序称为结构化程序。戎符掌凡烷死召雅冀搐弦掳桌柴荷筏掀脏幅缅孜灭跟碱铸卞畴专尝子嚼越第3章基本程序结构第3章基本程序结构3.1.1 3.1.1 结构化程序设计结构化程序设计w程序可表示为:程序数据结构算法其中:数据结构指数据类型及数据的组织形式; 算法是解决某一问题的方法,可用流 程图或自然语言来描述w下面我们用流程图的方式来表达3种基本结构擒圃税嘎信埠臂证卜蛹克筑里钳主哭遣棺跨奠梧遭弯蓖铲莫淋原苏雕铅眶第3章基本程序结构第3章基本程序结构3.1.1 3.1.1 结构化程序设计结构化程序设计w3种基本结构的传统流程图AaB(

3、a)顺序结构bPAB(b)选择结构ab成立不成立PA成立A成立P不成立(c1)当型循环 (c2)直到循环酌笋磕山敞匿殴衡汐常考耕猾语然搞唬肆辈斥嫉奥床侨妓参置勉躲乒码隧第3章基本程序结构第3章基本程序结构3.1.1 3.1.1 结构化程序设计结构化程序设计w3种新型(N-S)流程图AB(a)顺序结构(b)选择结构(c1)当型循环 (c2)直到循环P成立不成立AB当P成立AA直到P不成立翼裂契寿芭瘫获药奈虐告枉琵独蕊秆懦媒唯亚咸仑示辆彝妄阂乾残自途妆第3章基本程序结构第3章基本程序结构3.1.2 C3.1.2 C语言的语句语言的语句wC语言的语句共分为5类:1、控制语句 (1)选择结构控制语句。

4、 if()else、switch() (2)循环结构控制语句。 dowhile()、for()、while()、 break、continue (3)其它控制语句。 goto、return冻嫂菊绞涩捐函旱岂卯撤孩敲垢澈送没捞世旨到井讹吟洪绑佯厨哲摸僵久第3章基本程序结构第3章基本程序结构3.1.2 C3.1.2 C语言的语句语言的语句2、函数调用语句。 函数名(实参);如: printf(“How do you do!”);3、表达式语句。 x=5 是一个赋值表达式,而 x=5; 是一个赋值语句。注意:任何表达式后加一个分号都构成表达式语句。留箕碗哦硬诅荧诣慕捉红绍废膜邀芝政撕岂匪闺宗呀鳖襄垄

5、长摧罐卸盒盔第3章基本程序结构第3章基本程序结构3.1.2 C3.1.2 C语言的语句语言的语句4、空语句 ; 空语句仅由一个分号组成。空语句什么操作也不做,有时用做被转向点或循环体(此时表示循环体什么也不做)。5、复合语句。 复合语句是在程序体中由一对大括号括起来的一组语句构成,也称为分程序。 注意:复合语句中最后一条语句后面的分号不能省略 跟阳镭高丛程旋象骡韩铭嘱婴磅丙峰昆刘炉啦撵栽州泄银献构梁佐澳凭券第3章基本程序结构第3章基本程序结构3.1.2 C3.1.2 C语言的语句语言的语句如:main() if (xy) t=x; x=y; y=t; /* 这3句为复合语句 */ 注意:(1)

6、复合语句在语法上和单一语句相同,即单一语句可以出现的地方,也可以使用复合语句。 (2)复合语句可以嵌套。即复合语句中还可以出现复合语句。 (3)函数体也可以看成是一个复合语句。久遍企兰花柔比址歌矮焚卯劝砸担瘸疯坟钎烃奈话舒怪祖俄恍骤吁杜拄逗第3章基本程序结构第3章基本程序结构3.2 3.2 赋值语句赋值语句w赋值语句格式:变量=表达式;注意:1.赋值表达式与赋值语句是有区别的;表达式有值,而语句没值。如:if (a=b)0) 和 if(a=b;)0)2.x=y=0;与int x=y=0;是不同的。 int x=y=0不合法; x=y=0;等价于 y=0; x=y;(即x的值为0) 而在定义变量

7、时,变量名要用逗号隔开,没有则会认为是同一个标识符虑没姑杀菠氢伎抿樟琶异葬仙题泳败剑斯国桔叠喂院琳兰纶疥肋庙渺戍绘第3章基本程序结构第3章基本程序结构3.3 3.3 数据的输入与输出数据的输入与输出一基本概念:1.输入是指从输入设备(如键盘、扫描仪等)向计算机输入数据;2.输出是指从计算机向外部设备(如显示器、打印机等)输出数据。注意:1.这里的输入和输出都是针对计算机而言的。2.在使用C的标准库函数时,需用#include命令将相关的头文件包括到源程序中。苞炯啥三镑跪鞭窝桩嘿仪辉龋问掠殖挞国辕粘释壬圃绅秉行梳淤暑速虏奈第3章基本程序结构第3章基本程序结构3.3 3.3 数据的输入与输出数据的

8、输入与输出3.在使用标准的输入/输出库函数时,用到stdio.h文件,所以,一般在源程序的开头部分写上以下预编译命令: #include 或 #include “stdio.h” 其中:stdio是standard input & output的缩写。 由于printf和scanf使用频繁,因此可以不加头文件证盯理蕊辅张旭拽丽牢烫模递哗美屯宅乱口恋军回蜗享奄吩悉蜗沫予叛爵第3章基本程序结构第3章基本程序结构 二二 字符数据输入字符数据输入/ /输出函数输出函数一.字符输出函数 putcharputchar是单个字符输出函数,其一般格式: putchar(ch);功能:在显示器上输出字符数据ch

9、的值。如:putchar(x); /* 输出字符常量x */putchar(x); /* 输出字符变量x的值 */putchar(101);/* 输出字符常量A */putchar(n); /* 换行*/剿玲刻穗虏寸辐狠淹候当琐君肮歪损扰辜搏撩掌迟寓甲曳驭何伟我狡氯碴第3章基本程序结构第3章基本程序结构 二二 字符数据输入字符数据输入/ /输出函数输出函数说明:(1)ch可以是一个字符变量或常量,也可以是一个转义字符,若为转义字符则执行相应的控制功能。(2)putchar()函数用于单个字符输出,一次只能输出一个字符。(3)使用本函数前必须包含头文件stdio.h。霉奠她擎濒真畅卓适老污乾扫庞

10、希匝浇催有芋拾蹦泞策琵廷爸膀恕顿隶帧第3章基本程序结构第3章基本程序结构【例3.1】putchar()函数的使用 #include main() char c1=B,c2=O,c3=Y; putchar(c1); putchar(c2); putchar(c3); putchar(n); putchar(c1); putchar(n); putchar(c2); putchar(n); putchar(c3); putchar(n); 程序运行情况:BOYBOY稚快捉掳庞奄堑芹膀祖减蔫欢罪郊邻福阔裙说耪峦颓惶涝亲脖帅哲溺街懈第3章基本程序结构第3章基本程序结构2.字符输入函数 getchar(

11、)格式: getchar();功能: 从键盘上获得一个字符作为本函数的函数值。说明:(1)getchar函数只接受单个字符,数字也按照字符处理。输入多于一个字符时,接受第一个字符;(2)可以把输入的字符赋予一个字符型变量或整型吹乐刑扮烽虹沥绑忠码恬疲剂俘硒欲偷疽扳竖棚炕怔婶溶享矗鸥誓固虎赘第3章基本程序结构第3章基本程序结构 变量,构成赋值语句,也可以不赋给任何变量,作为表达式使用。如: char c; c=getchar(); putchar(getchar(); while(getchar()!=#)(3)使用本函数前必须包含头文件stdio.h。蛹暗氏庸倚后潞趁碳楷郸雁尸役虏擞循寇杖公斡

12、众相吓惑锡审殿两庞筛朽第3章基本程序结构第3章基本程序结构3.3.1 3.3.1 字符数据输入字符数据输入/ /输出函数输出函数【例3.2】getchar()函数的使用。#include #include main() main() char c; char c; printf( printf(“Please input two characters:nPlease input two characters:n”);); c=getchar(); c=getchar(); putchar(c); putchar(c); putchar( putchar(nn);); putchar(getch

13、ar(); putchar(getchar(); 程序运行情况:Please input two characters:Please input two characters:xy xy x xy y唁笨姨良补矩捶铡酵街菱愈爸份俞眯突夕商念峦阅挠檀居赴远弓穴冀魂滥第3章基本程序结构第3章基本程序结构注意:1.输入字符时,不要加单引号,直接输入2.输入多个字符时,字符间不能加任何分隔符像绎买抉昭贷涎撂尹豪镁切陛乖档胚苍寝唆涡仿钙椿揪神两抹油涣享身体第3章基本程序结构第3章基本程序结构三三 格式输出函数格式输出函数-printf-printfprintf函数可以按照用户指定的格式,把数据输出到显示

14、器屏幕上。 printf意为print format。1、printf函数的一般格式(1)格式: printf(“格式控制字符串”,输出列表);功能:按“格式控制字符串”指定的格式,输出输出列表中对应的值。【例3.3】已知矩形,长a=10,宽b=6,求矩形面积s。 main()main() int a=10,b=6,s; int a=10,b=6,s; s=a*b; s=a*b; printf( printf(“s=%dns=%dn”,s);,s); 程序运行情况:s=60s=60炙远躁吸歌冬巢胯击约细迭涩苛躇衣晌吝粳狂惩宠蚤京栅你匀珍鉴请廊踊第3章基本程序结构第3章基本程序结构w说明:格式控

15、制字符串包含3种字符格式说明符。以%开头的字符串,在%后跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。转义字符。 printf(“n”); /* 产生换行操作 */普通字符:除了上面两种字符之外的字符。 printf(“s=%dn”,s)中的“s=”将会原样输出。屿泌玩勘纽妇杜搀位喀腊碌配臼咆罗请椰昏镜闪娥篙坯毅爆鳖义焦并窥声第3章基本程序结构第3章基本程序结构如:inta=3,b=4;printf(“output:%d,%dn”,a,b+a);普通字符转义字符分隔符变量表达式格式说明符分隔符输出结果:output:3,7仍湍涅渠詹括鬃磅飞祁爬设债希死厌潭罐园励单凤狸湾罕样宽

16、亢渣聊墩假第3章基本程序结构第3章基本程序结构 (2) 输出列表输出列表属于可选内容。若输出数据多于一个,则相邻之间用逗号分隔。 printf(“How do you do!n”); printf(“a=%d b=%dn”,a,b);输出列表内容可以是表达式。 printf(“%d”,3*a+5);“格式控制字符串”中的格式字符,必须与“变量输出表”中输出项的数据类型一致,否则引起输出错误。 int a; printf(“%f”,a); 惧捐韭住陛诵惦蒋骏涡敏剪腰往蹋握妥绵例觉凤早歹船燃撰想刺廖云趣弧第3章基本程序结构第3章基本程序结构2、C语言的格式说明符 printf()格式字符如下表:格

17、式字符意义d,id,i以十进制数形式输出带符号整数(正数不输出符号)o o以八进制数形式输出无符号整数(不输出前缀0)x,Xx,X以十六进制数形式输出无符号整数(不输出前缀0x)u u以十进制数形式输出无符号整数f f以小数形式输出单、双精度实数e,Ee,E以指数形式输出单、双精度实数g,Gg,G以%f或%e中较短的输出宽度输出单、双精度实数,不输出无意义的0c c输出单个字符s s输出字符串噎沃监颓蓑嫁滓矽眼饺鞭矽拢棍阐化捧引嫡喧浦厉锰皿听毗舔值卷椿理戒第3章基本程序结构第3章基本程序结构printf()附加格式字符(如%m.nf、%-m.nf等)如下表:(1)格式字符d,以带符号的十进制整

18、数形式输出。允许形式:%d、%md、%-md、%ld等。含义如下: %d:按整型数据的实际长度输出。 格式字符意义- -结果左对齐,右边填空格m(m(正整数正整数) )数据最小宽度n(n(正整数正整数) )对实数表示输出n位小数,对字符串表示截取的字符个数字母字母l l用于长整型整数,可以加在格式符d、o、x、u前面前川岁屑夏椅桂漫拍俯澜拎蛰瓤掠逆搞骄厩辐陡防巴孜惊庭裙己腿丹段压第3章基本程序结构第3章基本程序结构%md:输出整数共m位,若m小于数的实际位数,则m无效,将按数据的实际长度输出。数据宽度小于m时,要求结果右对齐,左边补空格。%-md:数据宽度小于m时,负号“-”要求结果左对齐,右

19、边补空格。 %ld:字母l用于长整型数据输出,可以加在格式符d、o、x、u的前面。噎阂寞森坊园椽颂诗致贤蝶困蛆划吾励皿竿俺纶揖江钝瓦骏奈履谆瓷柒窑第3章基本程序结构第3章基本程序结构【例3.4】格式符的使用main()main() int n1=111; int n1=111; long n2=222222; long n2=222222; printf( printf(“n1=%d,n1=%4d,n1=%-n1=%d,n1=%4d,n1=%-4d,n1=%2dn4d,n1=%2dn”,n1,n1,n1,n1); ,n1,n1,n1,n1); printf(printf(“n2=%ld,n2=

20、%9ld,n2=%2n2=%ld,n2=%9ld,n2=%2ldnldn”,n2,n2,n2);,n2,n2,n2); 程序运行结果:n=111,n1=111,n1=111,n1=111n=111,n1=111,n1=111,n1=111n2=222222,n2=222222,n2=222222n2=222222,n2=222222,n2=222222亩捅褥共撮硬阮群扎汾毋而陋喻局设皖汐傀谤来宙呛伪笋炮母豁岔桃绽岩第3章基本程序结构第3章基本程序结构w整数其它输出格式%o:整数八进制无符号形式输出;%x:整数十六进制无符号形式输出;%u:对unsigned型数据,输出十进制无符号形式;(2)格

21、式字符f。以小数形式输出单、双精度实数。允许形式:%f、%m.nf、%-m.nf、%mf、%.nf等。其中:%f:按系统默认宽度输出实数。小数输出6位。单精度变量输出有效位7位,双精度输出有效位16位。%-m.nf:m表示输出最小宽度、n代表小数位数。惮陵毙遇崭氛稳讲笺瓜雹合琵仓何皑救峭妖挡舟使插曹靡返蠢铆御攻辆商第3章基本程序结构第3章基本程序结构【例3.5】输出实数的有效位数。main()main() float a=11111.111,b=33333.333; float a=11111.111,b=33333.333; printf( printf(“a+b=%fa+b=%f”,a+b

22、); ,a+b); 程序输出结果:x+y=44444.443359x+y=44444.443359公防序纠匹湃浸另杖崇浑驻胀囚酮娃撞苞配汹恶师效象萌矗刽匪淡柯惶翘第3章基本程序结构第3章基本程序结构%e:以标准指数形式输出。如输出形式: 3.33333e-03 %g:系统根据数值的大小,以%f或%e中较短的输出宽度自动选择%f或%e格式、且不输出无意义的零。如:float f=123.468;printf(“%f %e %gn”,f,f,f);输出: 123.468000 1.23468e+02 123.468俭怜淄淮韧巧调跪虽烤走联爸星继姐撼枉绍印钓羚肩即右收郴觅驴等蓑赢第3章基本程序结构第

23、3章基本程序结构(3)格式字符c,输出一个字符,其允许形式为%c。注意:一个整数,只要它的值在-128127之间,也可以直接用字符形式输出,在输出前,系统会将该整数作为ASCII码转换成相应的字符(若数字超过了该范围,则只输出该数据的低8位表示的数所对应的ASCII码符);反之,一个字符型数据也可以用整型形式输出。不过,输出的数只在-128127之间。刁而房功信锭秽虾冠碾祥升汰戮奈蓟被壬桥弊稼歪辞介膨锭京久贡袱姻瓶第3章基本程序结构第3章基本程序结构【例3.6】格式符的使用main()main() char ch= char ch=a a; ; int i=97; int i=97; prin

24、tf( printf(“ch=%c,i=%cch=%c,i=%c”,ch,i); /* ch,i,ch,i); /* ch,i以字符形式输出以字符形式输出*/*/ printf( printf(“nch=%d,i=%dnch=%d,i=%d”,ch,i); /* ch,i,ch,i); /* ch,i以字符形式输出以字符形式输出*/*/ 程序输出结果:ch=a,i=ach=a,i=ach=97,i=97ch=97,i=97掺炳猜笋区貌谤揖锈陷几赠辗非俘膛踩傻纠瘫肪蒙潜骄减拱调绊知诧逗素第3章基本程序结构第3章基本程序结构(4)格式字符s。输出一个字符串,允许形式有:%s、%m.ns等。 %s:

25、 输出一个字符串; %m.ns:m是正整数,允许输出的字符串宽度,n是对字符串截取的字符的个数。【例3.7】用格式符s输出字符串main()main() printf(%s,%3s,%-9sn,student,student,student); printf(%s,%3s,%-9sn,student,student,student); printf(%8.3s,%-8.3s,%3.4sn,student,student,student); printf(%8.3s,%-8.3s,%3.4sn,student,student,student); 程序输出结果:student,student,st

26、udentstudent,student,studentstu,stu,studstu,stu,stud若想在数的后面输出%,则可以使用如下的格式printf(printf(“%5.2f%5.2f%”,3.0/4);,3.0/4);釜蒂嫁胀字隆蜗借芋郴握寒理购候蚌甚赶辨稗昼队垄参谓战镀艳妖赶肋脯第3章基本程序结构第3章基本程序结构四四 格式输入函数格式输入函数scanfscanfscanf() 函数,它可以按照用户指定的格式从键盘上把数据输入到指定的变量中。1、scanf()函数的一般形式 scanf(“格式控制字符串”,变量地址表);功能:按“格式控制字符串”要求,从键盘上把数据输入到变量中

27、。(“格式控制字符串”同printf()函数的说明,变量地址表是由若干个地址列表组成的表列,可以是变量的地址或字符串的首地址)。如: int a,b,c; scanf(“%d%d%d”,&a,&b,&c); 窃抉火摊沂肌夸伺伍柠遭投舱搔判杭钮睁沙各请铃筹涵柬蛙斗铬挟箱皋让第3章基本程序结构第3章基本程序结构【例3.8】已知矩形长和宽,求其面积s。main()main() int a,b,s; int a,b,s; printf( printf(“Please input a,b:Please input a,b:”); ); scanf( scanf(“%d,%d%d,%d”,&a,&b);,

28、&a,&b); s=a*b; s=a*b; printf( printf(“s=%dns=%dn”,s); ,s); 程序输出结果:Please input a,b:Please input a,b:10,6 10,6 s=60s=60罚铝祥握曝粳骸刀谎五乌到靴诚牢跳阀纽亏疽脖仓舀褥滓泪郁亲援逆烁旦第3章基本程序结构第3章基本程序结构2、格式说明符 (1)格式字符。表示输入数据的类型,如下表所示: 格式字符字 符 意 义 d,i用来输入有符号的十进制整数o用来输入无符号的八进制整数x,X用来输入无符号的十六进制整数(大小写作用相同)u用来输入无符号的十进制整数c用来输入单个字符s用来输入字符串

29、f用来输入实数,可以用小数形式或指数形式输入E,e,G,g与f作用相同,e与f,g可以互相替换(大小写作用相同)沂沾漏夷抖守旁凌兰鸟玻苯蔓抖累异饼松等锦胎培浮绷替寄图别垒脱折钟第3章基本程序结构第3章基本程序结构(2)附加格式说明。宽度m:指定输入数据的列宽为m,即只接收输入数据中相应m位,赋给对应的变量,多余部分舍去。 scanf(“%2c%c”,&c1,&c2); printf(“c1=%c,c2=%cn”,c1,c2); 若输入abc,则系统将读取ab中的a给c1,读取c赋给c2。结果输出:c1=a,c2=c格式字符意义字母字母l l用于输入长整型数据(可用%ld、%lo、%lx、%lu

30、)以及double型数据(%lf、%le)字母字母h h用于输入短整型数据(可用%hd、%ho、%hx)域宽域宽m m指定输入数据所占宽度(列数),域宽应为正整数* *表示本输入项在读入后不赋给相应的变量掘浦摇伞众耽妹程侦泥纪叉逐毕隧蜘楚焕撂勉淳拉耽兢坪黔郴辊酗取篆蒋第3章基本程序结构第3章基本程序结构抑制符号*:该字符可以使对应的数据输入后,被抑制,不赋给任何变量。 scanf(“%2d%*2d%2d”,&x1,&x2); printf(“x1=%d,x2=%dn”,x1,x2); 若输入112233,则系统将读取11给x1;读取22,被抑制,舍去;赋给x2。读取33, 赋给x2。结果输出:

31、x1=11,x2=33字符l:常用格式有输入长整型数据(用%ld、%lo、%lx、%lu)以及double型数据(%lf、%le)搔招茬碧柬掐谗蛆摸涨癸阻纹刨蚁忘追茅仇朱宫屑谭阳惯凝拂皂铂袜干阮第3章基本程序结构第3章基本程序结构 字符h:常用格式有%hd、%ho、%hx(输入短整型数据)(3)数据输入格式 若相邻格式说明符之间无数据分隔符号(%d%d),则由键盘输入的数据间可以用空格分隔(至少一个),或用【Tab】键分隔,或者输入一个数据后按【Enter】键,然后输入下一个数据。如: scanf(“%d%d”,&x1,&x2); 若想给x1输入11,给x2输入33,正确的输入方式有: 113

32、3 或 11 33 迟办列逸碍东般逞栖静足桅洁苞醇琼宁斧工骆旭支雾忻狈醋踩芽喧络闽佩第3章基本程序结构第3章基本程序结构“格式控制字符串”中出现普通字符,包括转义字符,需要按原样输入。如:scanf(“%d,%d”,&x1,&x2);则输入格式为:11,33 scanf(“%d:%d”,&x1,&x2);则输入格式为:11:33输入数据时,遇到以下情况,该数据被认为输入结束:遇到空格,或者按回车键,或者按跳格键(Tab)指定的输入宽度结束时,如%5d,只取5列。帕娶谬灰奋凯香家愚则服惟遏换沏辊级那戈鹰重郎便奴声绎纵旁茄屹塔痔第3章基本程序结构第3章基本程序结构遇到非法输入。如输入数值型数据时,

33、遇到非数值符号。使用“%c”输入字符时,不要忽略空格的存在。如: scanf(“%c%c”,&c1,&c2); printf(“c1=%c,c2=%cn”,c1,c2); 若输入为:xy,则系统将空格赋给c1,字母x赋给c2。注意:若编程时需实现人机交互式效果,在设计数据输入时,可先用printf()函数输出提示信息,再用scanf()函数进行数据的输入。如: printf(“Please input two numbers(a,b):”); scanf(“%d,%d”,&x1,&x2);课姓肤缉误载强蔡景邵亚攒它锈蘸晋声苍狱砧汝勃晰趾屡阂纠牲撇拥槽缎第3章基本程序结构第3章基本程序结构w作业

34、4:P90:7,9,10披州貉悄贵爪巾义霸乖邦墙绩邹充恕日旗熬傍畜幌街社疆秆口勉巨匠鹏灰第3章基本程序结构第3章基本程序结构3.4 3.4 顺序结构程序设计顺序结构程序设计w顺序结构程序就是由顺序执行语句组成的,程序的执行是按照书写的顺序进行的,不发生流程转移,是最简单的C程序.顺序结构程序一般由以下几个部分组成。(1)编译预处理命令(在主函数main之前)。 (2)顺序结构程序的函数体。一般由4部分内容组成: 定义变量类型。 给变量提供数据。运算处理数据 输出结果服陵功外沤彤弄昼炼菌谋取豺亮组厉氰剂叼暮佬支恿痘酥徒睦啊可棠赡替第3章基本程序结构第3章基本程序结构3.4 3.4 顺序结构程序设

35、计顺序结构程序设计【例3.9】已知圆柱体底半径为r,高为h,求圆柱体体积V。定义变量r,h,v,pi=3.14159输入半径r和高hv=pi*r*r*h输出圆柱体体积main()main() float r,h,v,pi=3.14159; float r,h,v,pi=3.14159; printf( printf(“Please input radius & high(r h):Please input radius & high(r h):”);); scanf( scanf(“%f %f%f %f”,&r,&h);,&r,&h); v=pi*r*r*h; v=pi*r*r*h; prin

36、tf(printf(“radius=%7.2f,hign=%7.2f,vol=%7.2fnradius=%7.2f,hign=%7.2f,vol=%7.2fn”,r,h,v,r,h,v);); 皂抨羡荣桐拧冈翠睡是勃抗徒肘惮丧隙锭信莽之粕孝项件送探薯阑蓖束沦第3章基本程序结构第3章基本程序结构3.4 3.4 顺序结构程序设计顺序结构程序设计w程序运行结果:【例3.10】输入任意两个整数,求它们平均值及和的平方根。算法分析:需要三个整型变量放两个整数及其和,两个实型变量放平均值和平方根,两个整数需要键盘输入,求其和除2得平均值,然后对和求平方根(sqrt,math.h),最后输出这两个数值。Pl

37、ease input radius & high:Please input radius & high:1.01.02.0 2.0 Radius=Radius=1.00,high=1.00,high=2.00,vol=2.00,vol=6.286.28挛更喀越首瞒披洛沫慨涟枷坡梢劲溃他志项凉衬协宴凰芯盅瓶都跺溃琅蛰第3章基本程序结构第3章基本程序结构#include #include main()main() int x1,x2,sum; float aver,root; int x1,x2,sum; float aver,root; printf( printf(“Please input

38、two numbers(x1,x2):Please input two numbers(x1,x2):”);); scanf( scanf(“%d,%d%d,%d”,&x1,&x2);,&x1,&x2); sum=x1+x2; sum=x1+x2; aver=sum/2.0; aver=sum/2.0; root=sqrt(sum); root=sqrt(sum); printf( printf(“x1=%d,x2=%dnx1=%d,x2=%dn”,x1,x2);,x1,x2); printf( printf(“aver=%7.2f,root=%7.2fnaver=%7.2f,root=%7.

39、2fn”,aver,root);,aver,root); 妒怪桩蔗爽钵讲熟渤胎滨旅嗅锭咳裔帘制匿锣炕焉酣贮槽执缩呛煮尉醉缓第3章基本程序结构第3章基本程序结构3.4 3.4 顺序结构程序设计顺序结构程序设计程序运行结果:思考: 把例3-10中的语句“aver=sum/2.0;”改为“aver=sum/2”合适吗? 顺序结构程序由哪几部分内容组成?顺序结构程序的流程图特点?Please input two numbers:Please input two numbers:1,2 1,2 x1=1,x2=2x1=1,x2=2aver=aver=1.50,root=1.50,root=1.731.7

40、3耗砂父宦亭书菠翠捅伴螺紫氢凛织艘滓厄岭晤劫棉诡给韦穷已雄楷蒲休孔第3章基本程序结构第3章基本程序结构3.5 3.5 选择结构程序设计选择结构程序设计(131)(131)w顺序结构程序执行时,计算机按照程序书写顺序一条一条地顺序执行。而实际的工作中程序不会总是使用顺序结构的。在很多时候,执行语句的顺序依赖于输入的数据或中间运算结果。在这个情况下,必须根据某个变量或表达式(称为条件)的值作出选择,决定执行哪些语句而不执行哪些语句。这样的程序结构称为选择结构或分支结构。w在用C实现选择结构程序时,要考虑两个方面的问题,一是如何表示条件;二是用什么语句实现选择结构。w选择结构有分支语句(if语句)和

41、多分支语句(switch语句)井闲曳基辣硫读昏眯吟岂释斡镁父扳铬哗扁惨洼类躇楼鸯翱瓮靶陆卫吸摊第3章基本程序结构第3章基本程序结构3.5.1 3.5.1 关系运算符和关系表达式关系运算符和关系表达式wC语言中一般用关系表达式或逻辑表达式表示条件,也允许用其它表达式表示条件。w把两个量进行比较的运算符称为关系运算符。“比较”即是判定两个数据是否符合某种关系。1、关系运算符(1)C语言提供6种关系运算符: 、=、=、!=;小于、小于或等于、大于、大于或等于、等于、不等于。注意:在C语言中。“等于”关系运算符是两个等号“=”。锋使背屉亮辐窿快呈们贯藻屿孺珍详愿美怀败车疑花餐扎航媒韵续痉泣忆第3章基本

42、程序结构第3章基本程序结构3.5.1 3.5.1 关系运算符和关系表达式关系运算符和关系表达式 (2)优先级(运算次序):、=高于=、!=关系运算符优先级低于算术运算符,高于赋值运算符2、关系表达式 用关系运算符将两个表达式连接起来,进行关系运算的式子就是关系表达式。如: xy、x+1=z、(ab)!=(bc)。 关系表达式的值是逻辑值(真或假)。规定用整数1表示逻辑真,用整数0表示逻辑假。破俺忙捏琉饥邢另童瑶峦悔健穆谚搏警阴豺逐聊逸昨丝谜萌叼邯磁蚁虐册第3章基本程序结构第3章基本程序结构3.5.1 3.5.1 关系运算符和关系表达式关系运算符和关系表达式【例3.11】 35 53 5=3 5

43、!=3 5=3 32 a=3+2=5=2【例3.12】设x1=1,x2=2,x3=3,则表达式(x1x2)+x3是关系表达式吗?它的值是多少呢?为什么?分析:其值为4,因为(x1=1。若需要描述x=1且x=1)&(x2),!(x=1)&(x2)的值为“假”;!(x=b)|(x=y)可以写成:a=b|x=y(!a)|(ab)可以写成:!a|ab等等!ab!a!ba&ba|b110011100101011001001100龙尿罢船宗吗滞棘冰峰橇农污颇缎综庆坍捻怂区邯钾壁焚漆鸳扩狼磁颁滞第3章基本程序结构第3章基本程序结构3.5.2 3.5.2 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式2、逻辑表

44、达式 逻辑表达式的准确定义应是:用逻辑运算符将关系表达式或逻辑量连接起来的式子。但C将此概念扩展:用逻辑运算符将若干个表达式(C的任何表达式)连接起来,进行逻辑运算的式子,称为逻辑表达式。一般逻辑表达式用于描述多个条件的组合。如: 要描述x=1同时x=1)&(x2)说明:(1)数学式子“1=xb a=5&(b=2) (x=2)&a=b例3:求 53&2|8=0) y=x; else y=-x; printf(“y=%d”,y); Please input x:Please input x:33y=3y=3Please input x:Please input x:-6-6y=6y=6程序运行结

45、果:尊犊祖丛瘸象惦画眺武悟踩德亿往秸暖曲霖悬栖冀嘿甲肆三鞠铂焰粉孕羞第3章基本程序结构第3章基本程序结构3.5.3 if3.5.3 if语句和语句和switchswitch语句语句w用if语句可以构成选择结构。它根据给定的条件进行判断,以决定执行某个分支程序。C语言的if语句有3种形式:(1)if语句的形式 if形式 if(表达式)语句组 功能:若表达式的值为真,则执行其后的语句组,否则不执行该语句组。其N-S流程图如下:表达式真(非0)假(0)语句组逊烬防双挫淡畦兑被耘济伐惩淬坎钵休垄毫棵尚抑谨僻凄芹侨轿不愉羹眺第3章基本程序结构第3章基本程序结构3.5.3 if3.5.3 if语句和语句和

46、switchswitch语句语句【例3.15】对任意两个数,求出其中的最大数。main()main() int x,y,max; int x,y,max; printf( printf(“Please input two numbers:Please input two numbers:”);); scanf( scanf(“%d%d%d%d”,&x,&y);,&x,&y); max=x; max=x; if(maxy) max=y; if(maxy) max=y; printf( printf(“max=%dnmax=%dn”,max);,max); 程序运行结果:Please input

47、Please input two numbers:two numbers: 3 123 12max=12max=12输入数据给x,ymax=xTFmaxymax=y输出max通荐集衡栽晚泌瘫驭靛巧缕键铸逻掇销押冗吻栗胎室兹倾携隐冀洒壤泛狗第3章基本程序结构第3章基本程序结构3.5.3 if3.5.3 if语句和语句和switchswitch语句语句ifelse形式 if(表达式) else 功能:若表达式的值为真,则执行语句组1,否则执行语句组2。其N-S流程图如下:表达式真(非0)假(0)语句组1语句组2开庇仙聘诲笺倘涕孜黎瑶想梢梳踩府饰首乃十抵椰粟浅凤踞彝科挤痈萧夫第3章基本程序结构第3章

48、基本程序结构3.5.3 if3.5.3 if语句和语句和switchswitch语句语句【例3.16】对任意两个数,求出其中的最大数,使用ifelse形式。main()main() int x,y,max; int x,y,max; printf( printf(“Please input two numbers:Please input two numbers:”);); scanf( scanf(“%d%d%d%d”,&x,&y);,&x,&y); if(xy) if(xy) max=x; max=x; else else max=y; max=y; printf( printf(“max

49、=%dnmax=%dn”,max);,max); 程序运行结果:Please input Please input two numbers:two numbers: 3 123 12max=12max=12输入数据给x,ymax=yTFxymax=x输出max的值陌倍萎阂压苫颠矗仗玫灿怀彻汗迫靖傀妊锹隶祁奄勋很凋季奎宵语敌印稚第3章基本程序结构第3章基本程序结构3.5.3 if3.5.3 if语句和语句和switchswitch语句语句ifelse ifelse形式 if(表达式1) else if(表达式2) else if(表达式m) else 功能:由上而下,依次判断表达式的值,当某个表

50、达式的值为真时,就执行其对应的语句。执行结束后,跳出if选择语句之外的下一条语句继续执行,若所有的表达式全为假,则执行else后的语句组n。阅原藏林笔矢酸军踪瘁偿仪奋涉各墩亚颂腑窃犁机荚怀冒姆蛹今南杖帚精第3章基本程序结构第3章基本程序结构3.5.3 if3.5.3 if语句和语句和switchswitch语句语句【例3.17】求分段函数的值(符号函数)。main()main() int x,y; int x,y; printf( printf(“Please input: x=Please input: x=”);); scanf( scanf(“%d%d”,&x);,&x); if(x0)

51、 y=1; if(x0) y=1; else if(x= =0) y=0; else if(x= =0) y=0; else y=-1; else y=-1; printf( printf(“y=%dny=%dn”,y);,y); 程序运行结果:1(x0)Y=0(x=0)-1(x0) y=1; else y=-1; else y=0; printf(“y=%dn”,y);程序运行结果:1(x0)Y=0(x=0)-1(x0)Please input: x= Please input: x= 00y=0y=0Please input: x= Please input: x= 33y=1y=1定义变

52、量x,y输入数据给变量xx0TFy=0x0TFy=1y=-1输出y辉衡霜粉淑盟阶衰搅疫建勘烹闰堤九欢胎镀逗糜淌陋僧贴褂缘吹定扼每么第3章基本程序结构第3章基本程序结构(131)例例编程判断某年是否为闰年.#includemain() intyear;printf(inputayear:);scanf(%d,&year);if(year%4=0&year%100!=0)|year%400=0)printf(Theyearisaleapyear.n);elseprintf(Theyearisanon-leapyear.n);开东逸御坟峨窥趟锻挡割忙聪萤购媳毕裁沼户步骄笨汛俱廷方滓泉澳戊眺第3章基本

53、程序结构第3章基本程序结构3.5.3 if3.5.3 if语句和语句和switchswitch语句语句(3)条件运算符和条件表达式引入:if(ab)max=a;else max=b; 等价于 max=ab?a:b; 1)条件运算符“? :”是一个三元运算符,即有三个量参与运算。其表达式格式为: 表达式1?表达式2:表达式3求值规则:若表达式1的值为真,以表达式2的值作为该条件表达式的值,否则以表达式3的值作为该条件表达式的值。 2)优先级:只高于赋值运算符和逗号运算符稀腕恿嫩阀钓冒瓣殊逃砰租孟皖捧几热磨曲饥帆蝎订菜车苔嘲浚啊科肉臣第3章基本程序结构第3章基本程序结构3.5.3 if3.5.3

54、if语句和语句和switchswitch语句语句3)结合性:右结合。如: ab?a:cd?c:d 相当于 ab?a:(cd?c:d) 若a=1,b=2,c=3,d=4,则上面条件表达式的值为4。条件表达式还可以这样写: ab?(a=100):(b=200) ab?printf(“%d”,a):printf(“%d”,b); x?a:b xy?1:1.5等不同的形式。误姬墅封裤旧阵魄澜途豆妒蔽弊器老耙炯稀犀埃四轩超咙纸株聪舔卑折堤第3章基本程序结构第3章基本程序结构3.5.3 if3.5.3 if语句和语句和switchswitch语句语句【例3.19】从键盘输入一个字符,把小写字母转换为大写字

55、母。main() char ch; printf(“Please input a character:”); scanf(“%c”,&ch); ch=(ch=a&ch=z)?(ch-32):ch; printf(“ch=%cn”,ch);程序运行结果:Please input a character: Please input a character: aach=Ach=A或廊藕扇馁化庆瑟丽蒂摘欧莉趋踪菲拥躇胚前秸新命增锅微靡某奖斑算硫第3章基本程序结构第3章基本程序结构3.5.3 if3.5.3 if语句和语句和switchswitch语句语句2、switch语句If语句的嵌套,适用于多种情

56、况的选择判断,这种实现多路分支处理的程序结构,也称为多分支选择结构。显然,用嵌套的方法处理多分支结构,程序书写及阅读不很好。所以C提供了一种专门的实现多分支选择结构的语句:switch语句。该语句被称为多分支语句,也叫开关语句。使用该语句来实现多分支的选择结构比用if语句的嵌套要简单得多。 switch语句的一般格式为:吏好题奇键号急褪粥衰硬悦腆攘束密殆召淘酚劲萄涵影磷挞芭椎拄曙车衬第3章基本程序结构第3章基本程序结构3.5.3 if3.5.3 if语句和语句和switchswitch语句语句switch(表达式) case 常量表达式1: break; case 常量表达式2: break;

57、 case 常量表达式n: break; default: break; 该结构的执行过程如下描述:(1)当switch后面的括号中的“表达式”的值,与某个case后面的“常量表达式”的值相同时,就执行该case后面的语句组。蜜郝巩唐茂蓑闷粗兹鸳竿孺咒深恿廉岳陛乙占揖尿爽妥烯演虎盯耙佬孽漠第3章基本程序结构第3章基本程序结构3.5.3 if3.5.3 if语句和语句和switchswitch语句语句当执行到break语句时,跳出switch语句,转向执行switch语句的下一条语句。(2)若没有任何一个case后面的“常量表达式”的值与“表达式”的值相同,则执行default后面的语句组。然后

58、再执行switch语句外的语句。淘债咎烫能个真鳖芝膘秒氧发瓤瓷消信动焚妇九掂戏不米盘雁慎摔至雅建第3章基本程序结构第3章基本程序结构【例3.20】输入某学生的成绩,根据成绩的情况输出相应的评语。成绩在90分以上的输出评语“优秀”,在70-90分之间的为“良好”;成绩在60-70分之间的为“合格”;60分以下的输出“不及格”。分析:设表示成绩的变量为score,设计程序的算法步骤为: (1)输入学生的成绩score; (2)将成绩整除10,转化为switch语句中的表达式。(3)根据学生的成绩输出相应的评语。 1)先判断成绩是否在90分以上,若是则输出评语“优秀”; 2)再判断成绩是否在90-7

59、0之间,若是输出评语“良好”; 3)再判断成绩是否在70-60之间,若是输出评语“合格”; 4)否则,输出评语“不及格”。夜凑囚擅彦莲时殆绽延泳穿投庐沈漫拨杏敌藤瞻涩挥阂眨佬烹酚耽新料忘第3章基本程序结构第3章基本程序结构3.5.3 if3.5.3 if语句和语句和switchswitch语句语句程序:main() int score,grade; printf(“Input a score(0-100):”); scanf(“%d”,&score); grade=score/10;菏藏局猩煞儒塔写主岗蔓凉一揩肆妒赁茵绵睹更医匪询岗垦猾募诅抬封突第3章基本程序结构第3章基本程序结构3.5.3

60、if3.5.3 if语句和语句和switchswitch语句语句switch(grade) case 10: case 9: printf(“优秀n”);break; case 8: case 7: printf(“良好n”);break; case 6: printf(“合格n”);break; case 5: case 4: case 3: case 2: case 1: case 0: printf(“不合格n”);break; default: printf(“数据出界!n”); 程序运行结果:Input a score(0-100): Input a score(0-100): 95

61、95优秀优秀Input a score(0-100): Input a score(0-100): 6666合格合格Input a score(0-100): Input a score(0-100): 4545不及格不及格Input a score(0-100): Input a score(0-100): -20-20数据越界数据越界! !帛护蝶突勿课钞踩炼莹洲犊抵裔知芬关工俄备蝇紊停佛徒生线饺包诱搐驾第3章基本程序结构第3章基本程序结构3.5.3 if3.5.3 if语句和语句和switchswitch语句语句w说明:1)switch语句后面的“表达式”,可以是int、char或枚举中的

62、一种。2)每个case后面“常量表达式”的值,应该各不相同。3)case后面的常量表达式起语句标号的作用,系统一旦找到对应标号,就从这个标号开始顺序往下执行。若不想进行其它判断,必须在每个分支语句的末尾加上break语句,以便跳出switch语句,以免再执行其它的分支。4)各case及default子句的先后顺序,不影响程序执行结果。5)多个case子句,可共用统一语句组。6)default子句可以省略不写(除非有必要)。黍盒裕痕篙凤愉谦俊洲露椭喉北酝叼汐悟吴珍雹萎孪呕筷藩尺肥滇邯专体第3章基本程序结构第3章基本程序结构3.6 3.6 循环结构程序设计循环结构程序设计一概述:一概述:引入问题:

63、什么是循环?为什么要引入循环?什引入问题:什么是循环?为什么要引入循环?什么问题可以用循环来解决?么问题可以用循环来解决?如:日常生活中,我们经常会做一些重复的事情。如:如:日常生活中,我们经常会做一些重复的事情。如:4000米赛跑,每个人跑步的时候,都会在心里默默地数米赛跑,每个人跑步的时候,都会在心里默默地数自己跑了多少圈,裁判员也会记下运动员所跑的圈数。自己跑了多少圈,裁判员也会记下运动员所跑的圈数。由于操场只有由于操场只有400米,所以运动员必须在跑完米,所以运动员必须在跑完10圈之后,圈之后,才可以停下来。整个跑步的过程就是一个重复执行才可以停下来。整个跑步的过程就是一个重复执行10

64、次次的循环,裁判员就是一个计数器,循环结束的条件就是的循环,裁判员就是一个计数器,循环结束的条件就是跑完跑完10圈。圈。穆标皱结卜人伦寸昏协互维湛通溜往饥色络捷料梆变衷窍卸恢了趋衍肮狗第3章基本程序结构第3章基本程序结构3.6 3.6 循环结构程序设计循环结构程序设计在编写程序的时候,有时也需要进行重复的操作,如:求若干在编写程序的时候,有时也需要进行重复的操作,如:求若干个数的和;输入或输出若干个数据等操作。这时若使用顺序个数的和;输入或输出若干个数据等操作。这时若使用顺序结构的语句来编写,就会浪费大量的时间,而且还会降低程结构的语句来编写,就会浪费大量的时间,而且还会降低程序的可读性,使人

65、难以理解,因此像这样序的可读性,使人难以理解,因此像这样具有一定规律性的具有一定规律性的可重复操作的问题,都可以采用循环语句来解决。可重复操作的问题,都可以采用循环语句来解决。 如:s=1+2+3+4+100根据已有的知识,可以用“1+2+100”直接赋值来求解,要把其中的每一项都写出来,显然不太好办。我们想,如果只写一组语句,令它执行100次,这样既书写简单,又增强了程序的结构性,下面学习循环结构语句正是解决这样的问题。 二实现循环的语句: (1)用goto语句和if语句构成循环。(2)用for语句。 (3)用do-while语句。 (4)用while语句。泥邓政灰怜穗宾车颈鸣跋舒遣挠遭刹宏

66、矫蒲蓉讣协逸玲衍活渭耿扒溢苗慑第3章基本程序结构第3章基本程序结构3.6.1 goto3.6.1 goto语句和语句和gotogoto语句语句构成的循环构成的循环1.goto1.goto语句(无条件转向语句)语句(无条件转向语句)格式:格式:goto goto 语句标号语句标号; ; 功能功能 :使系统转向标号所在的语句行执行。:使系统转向标号所在的语句行执行。说说明明:(1 1)标标号号是是一一个个标标识识符符, ,这这个个标标识识符符加加上上一一个个“: :”,用用来来标标识某个语句。识某个语句。(2 2)标标号号必必须须与与gotogoto语语句句同同处处于于一一个个函函数数中中, ,但

67、但可可以以不不在在同同一一个个循循环层中。环层中。(3 3)gotogoto语语句句不不是是循循环环语语句句,与与if if 语语句句连连用用才才可可以以构构成成循循环环。也也可以不构成循环,当满足某一条件时可以不构成循环,当满足某一条件时, , 程序转跳到别处运行。程序转跳到别处运行。(4 4)结构化程序设计不提倡用)结构化程序设计不提倡用gotogoto语句语句, ,因为它会使程序结构无规因为它会使程序结构无规律,不易读。所以它也不是必需的语句,但有时律,不易读。所以它也不是必需的语句,但有时, , 用用gotogoto语句也语句也比较方便。比较方便。特别是从多重循环的内层直接跳到外层时。

68、特别是从多重循环的内层直接跳到外层时。难鸥沏娠砌豌艘淫晤毯李利趴景神此失陕床喘浊厚埔枷砒宗擦监匙谭轿蜂第3章基本程序结构第3章基本程序结构【例【例3-21 3-21 】 使用goto语句实现求解1100累加和 main() int sum=0,n=1 ;/* 初始化,循环开始前的准备工作 */loop: sum += n; /* 累加求和 */ n+; /* 指向下一项 */ if (n=100) goto loop; /* 转到loop标示的行,执行对应语句*/ printf(“sum=%dn”, sum); /* 输出结果*/ 程序运行结果:sum=5050sum=5050霞臂有阎讨积侵愧

69、膀茹姨靠晰阂麦闲褂补冕扦慈瘴部匆垛刮椅依愉淫菇搭第3章基本程序结构第3章基本程序结构3.6.1 goto3.6.1 goto语句和语句和gotogoto语句语句构成的循环构成的循环w分析分析:1、首先要设置一个累加器sum,其初值为0,也叫加法器;2、利用sum =sum+ n来累加;3、n依次取1、2、100。 n被称为是循环变量,随着循环的进行,它的值在变化。(也被称为“指针“,因其值一直指向被加的项数;又称为“计数器“,表示已累加的项数。) 算法步骤:(1) 循环前的初始化:sun =0, n=1(2) 循环体:求累加和: sum=sum+n n指向下一位:n=n+1;(3)循环结束,输

70、出结果。注意:(1)初学者容易轻视初始化,导致结果面目全非。 (2)循环结束时n=101 。 想亭漠趴鹤壬啮荷益鹃式社虽捐修响极撕铅埃鄂富尤旋率承湛段二倦祥内第3章基本程序结构第3章基本程序结构3.6.2 while3.6.2 while语句、语句、do-whiledo-while循循环语句和环语句和forfor语句语句w1 1、当型循环、当型循环whilewhile语句语句 1) while语句的格式: while( while(表达式表达式) ) 语句组语句组其中表达式是循环条件,语句组为循环体。 2) 执行过程执行过程: 当条件表达式为真时,执行一次循环体,再检查条件表达式是否为真,为真

71、时,再执行循环体,直到有一次执行循环体后条件表达式的值为假时终止。然后执行循环体外的语句。当一开始条件表达式就为假时,循环体根本就不执行。其执行过程如图3-6所示。响辞羹央屠如陈夜阅荒苹隐沾簇痰蛊抠莽计翁冉钨倘离穿悠颅惭斋垄痈逞第3章基本程序结构第3章基本程序结构3.6.2 while3.6.2 while语句、语句、do-whiledo-while循循环语句和环语句和forfor语句语句w【例3-22】用while语句求 。用 N-S结构流程图表示算法,见图: main()main() int n=1,sum=0; int n=1,sum=0; while(n=100) while(n=10

72、0) sum=sum+n; sum=sum+n; n+; n+; printf(sum=%dn,sum); printf(sum=%dn,sum); 运行结果:当表达式非0语句组sum=5050sum=5050sum=0n=1当n=100sum=sum+nn+输出sum的值炒疚译中蕊喂墓灰锌纶金蘸劈党甄橇父男馋钥的宪倦班样刚贤犯哗挣疏乞第3章基本程序结构第3章基本程序结构3.6.2 while3.6.2 while语句、语句、do-whiledo-while循循环语句和环语句和forfor语句语句循环体有多个语句时, 要用括号和把它们括起来。分析步骤:分析步骤:(1)初始化:sum初值为0,n

73、初值为1; (2)循环条件:当n=100时 ,继续循环累加;(3)循环体:累加sum=sum+n; 指向下一项 n=n+1; (4)n=101时循环结束;(5)输出 sum 。股惫伍卖凯铭布早炙峻牛奇哺更症誓绪盔玩驭镁掇锥服烦盏恐嫉医沸莆漳第3章基本程序结构第3章基本程序结构3.6.2 while3.6.2 while语句、语句、do-whiledo-while循循环语句和环语句和forfor语句语句【例3-23】用公式 求 的近似值,直到最后一项的绝对值小于10-6为止。N-SN-S流程图见右流程图见右: : #include #include main()main() int s; int

74、 s; float n,t,pi; float n,t,pi; t=1;pi=0;n=1.0;s=1; t=1;pi=0;n=1.0;s=1; while(fabs(t)1e-6) while(fabs(t)1e-6) pi=pi+t; pi=pi+t; n=n+2; n=n+2; s=-s; s=-s; t=s/n; t=s/n;t=1,pi=0,n=1,s=1当|t|=10-6pi=pi+tn=n+2s=-st=s/npi=pi*4输出pi陋诞育岸沤亩姻惋捕祥乘锥缺彩迫摹筷孵肠闯枫拴博菌坡量睡唬傣配灾诗第3章基本程序结构第3章基本程序结构3.6.2 while3.6.2 while语句、语

75、句、do-whiledo-while循循环语句和环语句和forfor语句语句pi=pi*4;pi=pi*4; printf( printf(“pi=%10.6fnpi=%10.6fn”,pi);,pi); 程序运行结果:pi= 3.141594pi= 3.141594舷穴宛汀促悄昔堆蝎映装蕉茂喜哪慧敝恢购搞壬抚器憾停皂送帝囤亲苍面第3章基本程序结构第3章基本程序结构例3:求两个正整数的最大公约数算法:辗转相除法abr=m%n24168168080循环结束所求(1)a对b求余为r,a-b,b-r(2)若b不等于0,继续(1)否则a为最大公约数禁匠荣涸影朴指手釉孪锰灾吝儡塑扫仗唾千僧温砸迂述眨艘场

76、候遍硒奋夜第3章基本程序结构第3章基本程序结构程序:main() int a,b,r; scanf(“%d%d”,&a,&b); while(b!=0) r=a%b; a=b; b=r; printf(“It is %dn”,a);思考:如何求两个正整数的最小公倍数?畔切摩钻跃同牌署拔宿斋柞阁祁尖宅眠捌桩吏彬汝涵驾出糟盏记霓卉冒亩第3章基本程序结构第3章基本程序结构例4:猜数游戏利用C语言的库函数rand()%100产生一个100以内的随机数,由用户猜测,若所猜的数大了,则给出“big”提示信息;若所猜的数小了,则给出“small”提示信息;若猜中了,则退出。按ALT+F5看结果,根据猜数的次

77、数,给出相应的评语,如:“verygood”,“good”,“normal”等。分析:猜数的过程就是一个循环过程,每猜一个数计数器就加1,并输出相关信息,直到猜中为止,循环结束之后使用条件语句,根据计数器的数值给出评语。举婶亢因畴权拇帅砌糖戏饭截恿验矿侥肋蒙猴播犬榷咏椎沧莲镰滥烹垦熬第3章基本程序结构第3章基本程序结构程序:#includemain()intx,count,n;x=rand()%100;printf(“pleaseinputanumber(099):”);scanf(“%d”,&n);count=1;while(n!=x)if(nx)printf(“big!continuein

78、put:n”);if(nx)printf(“small!continueinput:n”);scanf(“%d”,&n);count+;if(count5&count10)printf(“normaln”);厘彤孝黔属惧趣尸特聚添练院公铀略本汪苗名渗栽武呐腿酬灯荣幌赣瓮钩第3章基本程序结构第3章基本程序结构课堂练习1.语句while(!e)中的条件!e等价于()A.e=0B.e!=1C.e!=0D.e2.下面程序的输出结果为()main()intx=1,y=2;while(x=3)printf(“%d”,y);x+;y+;if(y=4)printf(“end”);领探婚鳃称珠吁么宛客距扣坍取披

79、繁隋代暗贷挟绥里膛阿削宠验括钱囤拉第3章基本程序结构第3章基本程序结构3.6.2 while3.6.2 while语句、语句、do-whiledo-while循循环语句和环语句和forfor语句语句3、直到型循环do-while语句 格式 do 循环体语句; while( 表达式 ); / *本行的分号不能缺省*/ 这个循环与while循环的不同之处仅在于:它先执行循环中的语句,然后再判断表达式是否为真, 如果为真则继续循环;如果为假, 则终止循环。因此, do-while循环至少要执行一次循环语句。冯舶嫌芬蜕实踪阁恋孜泛躇恿砒甥喜驼栖卧峭泄忿驰祥忆贴撒主谁皇肮雨第3章基本程序结构第3章基本程

80、序结构3.6.2 while3.6.2 while语句、语句、do-whiledo-while循循环语句和环语句和forfor语句语句【例3-24】用do-while语句求 。用 N-S结构流程图表示算法:main()main() int n=1,sum=0; int n=1,sum=0; do do sum=sum+n; sum=sum+n; n+; n+; while(n=100); while(n100sum=sum+nn+输出sum的值晌萌匙呆纫索呈夜畦馋吼祁溶哲函抡酒百得私软僵袱压唬臃庚年赃兴晌忍第3章基本程序结构第3章基本程序结构while,do-while比较程序程序1main(

81、)int sum=0,i; scanf(“%d”,&i);while(i=10)sum+=i; i+;printf(“%d”,sum);程序2main()intsum=0,i;scanf(“%d”,&i);dosum+=i;i+;while(i=10);printf(“%d”,sum);箔柒栏闯茶际奈戎朽礁悍九臃送欧尸格报铆眩葬妒栓菏哺牲德疙伟胁戚曙第3章基本程序结构第3章基本程序结构由运行结果可得出结论:由运行结果可得出结论: while后表达式若第一次判断就为假时,两程序得后表达式若第一次判断就为假时,两程序得到不同的结果,若为真,则结果相同,故两者区到不同的结果,若为真,则结果相同,故两

82、者区别为:别为:while语句的循环体可能一次都不执行,语句的循环体可能一次都不执行,而而do-while语句中的循环体至少要执行一次。语句中的循环体至少要执行一次。do-while语句比较适用于:不论条件是否成立,先执行1次循环体语句组的情况。幢惯烈赤丫街谗天锥兰青嘴实季嫁鹿笨较沿仔尔淀败宛垄缚孤股放暗搁颈第3章基本程序结构第3章基本程序结构3.6.2 while3.6.2 while语句、语句、do-whiledo-while循循环语句和环语句和forfor语句语句4 4、forfor语句语句在C语言中,for语句使用最为灵活,它完全可以取代 while 语句。1)一般格式: for( f

83、or(表达式表达式11; 表达式表达式22; 表达式表达式3)3) 语句组语句组表达式1:给循环控制变量赋初值;表达式2:循环条件,是一个逻辑表达式,它决定什么时候退出循环;表达式3:循环变量增值,规定循环控制变量每循环一次后按什么方式变化。这三个部分之间用“;”分开。药喷谴帜刽弟挪眩峦壹廉贬初妓情寂躯著楚焊差擦纲浴讫湾渊弯拆殊有贤第3章基本程序结构第3章基本程序结构3.6.2 while3.6.2 while语句、语句、do-whiledo-while循循环语句和环语句和forfor语句语句 for语句的格式还可以直观地描述为:for(for(变量赋初值;循环继续条件;循环变量增值) 语句组

84、 使用中括号:“ “,表明其内的项是可以缺省的。2)for语句的执行过程(1)求解“变量赋初值”表达式。(2)求解“循环继续条件”表达式。如果其值非0,执行(3);否则,转向(4)。(3)执行循环体语句组,并求解“循环变量增值”表达式,然后转向(2)。(4)执行for语句的下一条语句。 歧敝个胀冠观测挛准淤柏乱垢臃秸秸辟贤瓶陷焙木勋陕勘特瘸蔓恍近贬掂第3章基本程序结构第3章基本程序结构3.6.2 while3.6.2 while语句、语句、do-whiledo-while循循环语句和环语句和forfor语句语句(114)(114) 其执行过程可用图3-8表示:【例3-25】用for语句求mai

85、n()main() int n ,sum=0; int n ,sum=0; for(n=1; n=100; n+) for(n=1; n100时,结束循环;(5)输出结果。 这3种循环语句,语句功能相同,可以互相代替,但for语句结构简洁,使用起来灵活、方便,不仅可用于循环次数已知的情况,也可用于循环次数未知、但给出了循环继续条件的情况。沙雀聪侨餐皂速匪炸硅联暖霸妈衣乔纠趟曹袄生谅病蝎企跺洒挥侍拐憋其第3章基本程序结构第3章基本程序结构3.6.2 while3.6.2 while语句、语句、do-whiledo-while循循环语句和环语句和forfor语句语句 比较一下可以看出: for(n

86、=1; n=100; n+) sum=sum+n; 相当于: n=1; while(n=100) sum=sum+n; n+; 其实,while循环是for循环的一种简化形式(缺省“变量赋初值”和“循环变量增值”表达式)。 酉侣渔窘臭赐拾场瘟俘否仙北馅渴检垮轮攀诡民叔蓄酉径嗅勺扭踏笺骤攒第3章基本程序结构第3章基本程序结构3.6.2 while3.6.2 while语句、语句、do-whiledo-while循循环语句和环语句和forfor语句语句【例【例3-263-26】求n的阶乘n!分析:n!=1*2*n;这类似于求1+2+3+100; main()main() int i, n; int

87、 i, n; long fact=1; long fact=1; /*/*将累乘器将累乘器factfact初始化为初始化为1*/1*/ printf( printf(“Please input n: Please input n: ”); ); scanf( scanf(“%d%d”,&n);,&n); for(i=1; i=n; i+) for(i=1; i=n; i+) fact *= i; fact *= i; /* /*实现累乘实现累乘*/*/ printf(%d ! = %ldn, n, fact); printf(%d ! = %ldn, n, fact); 程序运行情况: 思考思

88、考 :累乘器fact的初始化值可以为0吗? Please input n: Please input n: 666!=7206!=720强厨桃戮茨美抚啥换拱哨鹅干已笛益闸滴旺橡蜗乒吵衍扩泪溺作逗秃竖焚第3章基本程序结构第3章基本程序结构3.6.2 while3.6.2 while语句、语句、do-whiledo-while循循环语句和环语句和forfor语句语句说明:(1)“变量赋初值”、“循环继续条件”和“循环变量增值”部分均可缺省,甚至全部缺省,但其间的分号不能省略。(2)当循环体语句组由多条语句构成时,要使用大括号,即复合语句。 (3)“循环变量赋初值”表达式,可以是逗号表达式,既可以是

89、给循环变量赋初值,也可以是与循环变量无关的其它表达式。例如,求和的例子可写为: n=1;n=1;for( sum=0 ; n=100 ;n+) sum += n ;for( sum=0 ; n=100 ;n+) sum += n ; 或 for( sum=0, n=1; n=100 ; n+) sum += n ;for( sum=0, n=1; n=100 ; n+) sum += n ;(4)“循环继续条件”一般是关系(或逻辑)表达式外,也允许是其它表达式。溺坎债昧闷喇馋獭嵌触幢赋鞍教秆缝见吐休坦铅翻今苑其松旬美挪惰校贷第3章基本程序结构第3章基本程序结构3.6.2 while3.6.2

90、while语句、语句、do-whiledo-while循循环语句和环语句和forfor语句语句4 4循环语句的嵌套结构循环语句的嵌套结构 如果一个循环语句的循环体中又包含一个循环语句,就称为循环的嵌套,或称多重循环。前面学习的三种循环语句,每一种语句的循环体部分都可以再含有循环语句。 循环的嵌套,按照嵌套层数,可以分别称作二重循环、三重循环等。处于内部的循环叫作内循环,处于外部的循环叫作外循环。我们主要讨论学习二重循环。纲雪堵根酿隶专野龚有宴直虑雄铭琳斩早憋炒逆浴怂舅浸逆帝堤赊辱抛轮第3章基本程序结构第3章基本程序结构二重循环的执行过程: 从最外层开始执行,外循环变量每取一个值,内循环就执行一

91、遍循环,内循环结束,回到外循环 ;外循环变量取下一个值,内循环又开始执行下一遍循环;如此继续,直到外循环结束,整个循环才结束。吏寸东登搬转漾芒猜晃菱揽此茨妇束郝庆劫欢要吞桑舍囤滩键点玛输拌羔第3章基本程序结构第3章基本程序结构3.6.2 while3.6.2 while语句、语句、do-whiledo-while循循环语句和环语句和forfor语句语句【例【例3-273-27】 打印如下图形: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *分析:这是一个简单的二维图形:5行,8列。用

92、二重循环设计程序正好合适。这里循环次数已知,使用for语句循环方便。用变量i表示行号,取值范围1到5;变量j表示列号,取值范围1到8。 因为打印图形是按行打印,先打印第一行,再打印第二行,所以应该由内循环完成行的打印。对某一行i,有循环: for ( j=1 ; j= 8 ; j+ ) printf (”*”) ; 实现对i行的打印,打印出第i行的:“* * * * * * * * “ 。 所以j就是内循环变量了。外循环i是控制行号的,i是外循环变量。 外循环控制行外循环控制行内循环控制列内循环控制列唉淹距仕播衫蛀栓星纲任山阁秸罩躬豫林钒较崭锤届拖持迂瀑骋酪何将男第3章基本程序结构第3章基本程

93、序结构3.6.2 while3.6.2 while语句、语句、do-whiledo-while循循环语句和环语句和forfor语句语句(131)(131)main()main() int i,j ; int i,j ; for (i=1;i= 5;i+ ) for (i=1;i= 5;i+ ) for (j=1;j= 8;j+) for (j=1;j= 8;j+) printf( printf(”* *”) ;) ; printf( printf(“nn”); ); 思思考考:(1)printf(“n”); 的作用是什么?是打印这个图形所是必需的吗?(2)内循环中的大括号: ,也也是必需的吗?

94、其作用是什么? 幸柳默愚炽事磕秩雕履受沤主哆责额挖另卷作朔鸟珍顶骑酵涩巡赚仲执透第3章基本程序结构第3章基本程序结构实训实训9(10)打印输出下面的图形:*分析:共4行,第i行共i个“*”。可以使用循环嵌套实现。同样,循环次数已知,使用for语句循环方便。用变量i表示行号,取值范围1到4;变量j表示列号,取值范围1到i。程序代码如右:main()inti,j;for(i=0;i=3;i+)for(j=0;j=i;j+)printf(*);printf(n);棚乳债部酉松滇靖为敞拟粉细蟹夷拔酶吉磁瓷息钳疗苯毋羊催惋漱走柬滦第3章基本程序结构第3章基本程序结构实训实训9(11)打印输出下面的图形:

95、*分析:共4行,4列。第i行有4-i个空格,i个“*”。同样,循环次数已知,使用for语句循环嵌套实现方便。外循环变量i(表示行号),取值范围1到4;内循环1变量j取值范围1到4-i,输出空格;内循环2变量取值范围1i,输出“*”。程序代码如右:main()inti,j,k;for(i=1;i=4;i+)for(j=1;j=4-i;j+)printf();for(k=1;k=i;k+)printf(*);printf(n);么阵竞的斑幌常放费卯女绢耐连科贷弄史掳障扑宜靖哇匈撵娇至血觉眩字第3章基本程序结构第3章基本程序结构打印输出下面的图形:*分析:此图形共有7行,每行有*号个数:1,3,5,

96、7,5,3,1.空格个数:4,3,2,1,2,3,4可将该图形分为上、下两部分:上面4行,下面3行分别用两个循环的嵌套来实现。程序代码如右:可不可以上下两部分用一个循环嵌套完成?main()inti,j,k;for(i=0;i=3;i+)for(j=0;j=2-i;j+)printf(“);for(k=0;k=2*i;k+)printf(“*”);printf(“n”);爬帧均裕驱屁击潞皖检跃纱悼缆悉试鹿豫绘后释沽误谗瑟丁滩硕绥谣耪褂第3章基本程序结构第3章基本程序结构for(i=0;i=2;i+)for(j=0;j=i;j+)printf(“);for(k=0;k=5-2*i;k+)prin

97、tf(“*”);printf(“n”);迹娶扒座粕瞪郴赂何题疫鸦凄皆掖将贯卞害远幢粱补登慧夕岩兽房晾采绰第3章基本程序结构第3章基本程序结构例5:输出九九乘法表分析:九九乘法表共九行,每行分别有1列,2列,9列;输出效果应为:1*1=11*2=22*2=4:1*9=92*9=189*9=81分析:i:1,2,3,9j:1;1,2;1,2,3,9尝菲哄撞莆氢冈菇镍焊阑恒澳霹茸夺波伐茬吨少妹拯赁串协夫枕挝倔筏渠第3章基本程序结构第3章基本程序结构main()int i,j; for(i=1;i=9;i+) for(j=1;j=i;j+) prinf(“%d*%d=%dt”,j,i,i*j); pr

98、intf(“n”); 减僧静归厢软硝桅蒸淹韦某的回亢抠跋拨郊祸豫疚含榜叹战斧够渴坐虞啃第3章基本程序结构第3章基本程序结构练习:根据n值,求1+(1+2)+(1+2+3)+(1+2+3+n)的和。饥薪雁剔趋其耍眨旧姚建旷洪属痪昂蜀贩间阿腔毯菩嚷狞商峡抖弱抱憋净第3章基本程序结构第3章基本程序结构3.6.2 while3.6.2 while语句、语句、do-whiledo-while循循环语句和环语句和forfor语句语句5 5、breakbreak和和continuecontinue语句语句 为了使循环控制更加方便,语言提供了break语句和 continue语句。 1)格式: break;

99、continue; 2)功能:break和continue语句对循环控制的影响如下图所示。 (1)break:强行结束循环,转向执行循环语句的下一条语句。 (2)continue:对于for循环,跳过循环体其余语句,转向循环变量增值表达式的计算;对于while和do-while循环,跳过循环体其余语句,但转向循环继续条件的判定。说明:说明:(1)break能用于循环语句和switch语句中,continue只能用于循环语句中(2)循环嵌套时,break只能向外跳一层。 (3)通常,break语句和continue语句是和if语句连用的。 约差雁誊鲤楼粳借毒靠苏美所热所卒丈竟陵撵湖冰耀蚁乒凿拢橇

100、绣吊郴胀第3章基本程序结构第3章基本程序结构3.6.2 while3.6.2 while语句、语句、do-whiledo-while循循环语句和环语句和forfor语句语句(a)break语句(b)continue语句返回毅殆唯寂凶册脑弥超疑焙货眩落少厅舱钞左臀昭贼瞩懈褐宣列霖赖冲荣痛第3章基本程序结构第3章基本程序结构3.6.2 while3.6.2 while语句、语句、do-whiledo-while循循环语句和环语句和forfor语句语句【例例3-283-28】 continue 语句的使用 main()main() int n; int n;for( n=1for( n=1;n=20

101、;n+) n=20;n+) ifif(n%3=0n%3=0) continue; /* n continue; /* n可以被可以被3 3整除时,继续下一次循环的判断整除时,继续下一次循环的判断*/*/printf(%3dn, n); /* nprintf(%3dn, n); /* n不可以被不可以被3 3整除时,输出整除时,输出*/*/ 该程序输出了120之间不可以被3整除的数。程序运行结果: 1 12 24 45 57 78 810101111131314141616171719192020药甥吕前磕靡厩争复搂翔圃次完癣依毋斌厚削综扦镑埂函那掂扩浓妖请矫第3章基本程序结构第3章基本程序结构

102、3.6.2 while3.6.2 while语句、语句、do-whiledo-while循循环语句和环语句和forfor语句语句【例【例3-293-29(1 1)】判断一个数是否是)】判断一个数是否是素数。 所谓素数n是指,除1和n之外,不能被 2(n-1)之间的任何整数整除。 判断某数n是否是素数的算法:根据素数的定义,用2(n-1)之间的每一个数去整除n,如果都不能被整除,则表示该数是一个素数 漠无咖柿涝抄沸懦瑰倪盟珐圾讲半汲即捏蹲却帽字腔裕泡万贿咬洲舅臀杰第3章基本程序结构第3章基本程序结构main()intn,i;scanf(%d,&n);for(i=2;i=n)printf(%dis

103、aprimen,n);elseprintf(%disnotaprimen,n);隔悬综编唇房沦摹敖擅蔡赞剿匝赴隆崖俱馒濒颧威迷嚷睹寥邀崎庄捎鸵满第3章基本程序结构第3章基本程序结构上面程序可优化为:#includemain()intn,i,k;scanf(%d,&n);k=sqrt(n);for(i=2;i=k+1)printf(%disaprimen,n);elseprintf(%disnotaprimen,n);斜毛闺农虹牺迢蛾抑撅庭厄腺途恍订入毒蚕疵蚜订缸波醉税钝搁佰价驳翔第3章基本程序结构第3章基本程序结构3.6.2 while3.6.2 while语句、语句、do-whiledo-w

104、hile循循环语句和环语句和forfor语句语句【例【例3-293-29(2 2)】)】输出100200之间的全部素数。 分析:分析:(1)内循环设计出判断某一个数n是否是素数的算法; (2)判断某数n是否是素数的算法:根据素数的定义,用2(n-1)之间的每一个数去整除n,如果都不能被整除,则表示该数是一个素数; (3)外循环: 被判断数n ,从101 循环到199; 程序代码如下: main() int i,n; 揉亏婉搪窿酌莹蚀戚忌妖札破皇断慧牌糜翻疆稻瘫蕊御肢踩悦折推玖坪氟第3章基本程序结构第3章基本程序结构3.6.2 while3.6.2 while语句、语句、do-whiledo-w

105、hile循循环语句和环语句和forfor语句语句 for( n=101 ;n 200;n+=2)/* for( n=101 ;n 200;n+=2)/*外循环:为内循环提供一个整数外循环:为内循环提供一个整数n */n */ for( i=2;i = n-1;i+ ) /* for( i=2;i= n ) /* n if( i = n ) /* n是素数时,输出是素数时,输出.n */.n */ printf( printf(“%5d%5d”,n); ,n); 程序运行结果: 外循环控制变量n的初值从101开始、增量为2,这样做节省了一半的循环次数。本例还可以有其他更好的设计方法。101 10

106、3 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199嗣盐乾叭急谎虹炬穆忙荔捅抿想晓邱甸赂啄斤侈村睬峻臂殉犀捻蛇板降山第3章基本程序结构第3章基本程序结构作业:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13,求出这个数列的前20项之和.鞘课猾潍稗珠牺处碾委杜病恨染扣皿办帝斌跳忆翻惰草弃冈挛党灸观檬团第3章基本程序

107、结构第3章基本程序结构本章小结本章小结本章内容较多,知识点也多,主要是介绍C语言程序三种基本结构的实现方法。1、顺序结构:介绍了顺序执行语句,包括输入输出函数的使用,赋值语句。顺序结构的程序组成等。本节初学程序设计,常见的错误有: (1)顺序设计的思路不清楚,先后逻辑次序、条理不清楚。 (2)表达式与计算公式不一致; (3)输入/输出格式说明符与输入/输出变量的类型不一致。尽管顺序结构程序设计简单,但学习开始时应该注意培养良好的程序设计习惯。首先分析所给的问题,明确要求,找出解决问题的途径(即算法)。然后安排分配合适的变量,再一步一步的写出处理步骤,最后输出结果。算法设计是自顶向下进行,复杂的

108、算法要逐步求精 。用N-S流程图设计算法比较方便。 定嘻严臂差皇根严塞紊岿烙竖狠瑟辽诅吱癌夕再密封浊沛坝思状实货古贮第3章基本程序结构第3章基本程序结构本章小结本章小结2、选择结构: 选择结构是根据“条件”来决定选择哪一组语句。我们学习了二分支和多分支,分支的嵌套。本节的关键点是分支结构的产生和条件表达式的确立。编程前,首先对要解决的问题进行逻辑分析,再确立每个分支点的判定条件,并确定每个分支各自的出入通道,要把各种情况所对应的处理语句都列出来。不能“混流”。狂寥足醚垛撵码近诸傣初吴墟岭婿杏刃估怪码剐军喜悟涌匀沪酉寸榷姐坦第3章基本程序结构第3章基本程序结构本章小结本章小结3、循环结构:循环结

109、构的程序设计比前面两个要复杂一些,循环结构的思想是利用计算机高速处理运算的特性,以完成大量有规则的重复性运算。设计循环结构要根据具体的问题,确定三方面的内容: (1)循环前的准备:确定循环变量,循环初值、循环结束条件(即终值)。这些内容看起来没什么,其实也是关键点,很重要:循环变量选择的合适,可以使程序结构简洁,易于设计;循环初值、终值的确定不能有丝毫大意,否则循环的结果将会“差之毫厘,误之千里”。 (2)设计循环体: 四种循环相比,for语句使用最方便,goto型循环不提倡用。用 while和do-while循环时,循环体中一定要包括有使循环趋于结束的语句,以保证循环正常结束。 (3)循环后的处理:根据需要安排。 设计循环结构的程序段时,可以根据实际问题的需要,选择合适或自己喜欢的循环语句。 狱符拧糖揪首拈在滓晕着赫如瓜值掠犀稠半简茄秉烤掷选归系和腾届隙炉第3章基本程序结构第3章基本程序结构

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

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

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