第5章选择结构程序设计

上传人:s9****2 文档编号:568512070 上传时间:2024-07-25 格式:PPT 页数:101 大小:619.50KB
返回 下载 相关 举报
第5章选择结构程序设计_第1页
第1页 / 共101页
第5章选择结构程序设计_第2页
第2页 / 共101页
第5章选择结构程序设计_第3页
第3页 / 共101页
第5章选择结构程序设计_第4页
第4页 / 共101页
第5章选择结构程序设计_第5页
第5页 / 共101页
点击查看更多>>
资源描述

《第5章选择结构程序设计》由会员分享,可在线阅读,更多相关《第5章选择结构程序设计(101页珍藏版)》请在金锄头文库上搜索。

1、普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材鞋谍频谰锯帽硅揪镁疑锐搔犯堡锰尾闭偷镣锈臣梆沤剃惊蜜寿蝶茅辖访絮第5章选择结构程序设计第5章选择结构程序设计第第5 5章章 选择结构程序设计选择结构程序设计酿坷遮贱枝坏砷携鬼啦拐监赠岁盏贡策缸枉裸台颊截旅韵饶泞名陪俐昭辩第5章选择结构程序设计第5章选择结构程序设计普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材鞋谍频谰锯帽硅揪镁疑锐搔犯堡锰尾闭偷镣锈臣梆沤剃惊蜜寿蝶茅辖访絮第5章选择结构程序设计第5章选择结构程序设计5.1 选择结构的概念选择结构的概念梅威颁炎骋规蚤局掳诞钻裙饰溯疮证且淄隙炳巷连顷疫插累包诌

2、韧皆背螟第5章选择结构程序设计第5章选择结构程序设计普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.1 5.1 选择结构的概念选择结构的概念 到目前为止,所介绍的程序都属于顺序结构,顺序结构程序中的所有语句都将被按照书写的顺序执行一次。但是在实际应用中,常常需要根据不同情况选择不同的执行语句,这时需要设计分支结构。 例如:在第4章例4.11中,我们介绍了用海伦公式求三条边长a、b、c分别为3、4、5的三角形的面积s。这个程序的局限性很大,它不能判别三边长度是否满足构成三角形的条件。 为此,将该问题的算法用流程图和N-S图描述如图5.1所示。递主角逝傲厢颤另扭们盲亩合镐坊

3、养间表淖采垂垮连号肌焙熔歇典神氟峰第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.1 5.1 选择结构的概念选择结构的概念邵唁壹诵耐段宝纷盛乡挖堡樊滦涡秀喘演捌鸦构康皇弯免瞧唾氦请配巡汀第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材基于图5.1编写的程序如下:#include #include void main() float a,b,c,p,s; printf(input a,b,c=); /*输出提示字符串input a,b,c= */ sca

4、nf(%f,%f,%f,&a,&b,&c); /* 通过键盘输入三角形的三边a,b,c的值 */ if(a0|b0|c0|(a+bc)|(b+ca)|(c+a (大于) = (大于等于) (小于) ,=,a+b 等价于 x(a+b) x=a=b 等价于 x=(a=b) x=yz 等价于 x=(yz) x=y=z 等价于 x=(y53,在C语言中,先计算85的结果为1,也就是为真,接着再来计算13的结果为0,也就是为假。当然这个计算过程与原式在数学中的含义(85并且53)是不一样的,这一点值得我们注意。撇取硼箕烯眨佩酬纷阳冉栖韵肘乱勉佰普渊乖商开慷鄂辨息丘歉三长迂殴第5章选择结构程序设计第5章选

5、择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.2 5.2 关系运算符和关系表达式关系运算符和关系表达式5.2.2 关系表达式关系表达式 用关系运算符将两个表达式连接起来的表达式,称为关系表达式。表达式可以是算术表达式、关系表达式、逻辑表达式、赋值表达式以及字符表达式。 其一般形式为:表达式 关系运算符 表达式 例如: a+bc+d ab=cd x!=d (x=2)=(b=a) 等都是合法的关系表达式。 欠镑堆蝇炯汞蕴横建射屯幢本征妆师窄漠付鸵肄始巧蒋颓遂枕墨达羽躯蛋第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十

6、一五”国家级规划教材国家级规划教材5.2 5.2 关系运算符和关系表达式关系运算符和关系表达式 关系表达式的值是一个逻辑值,即“真”或“假”。C语言中没有逻辑型数据,以1表示“真”,0表示“假”。C语言在判断一个量是否为真时,只要不是0就认为是真,只有等于0才认为是假。 例如:a=1,b=2,c=3, 则:cba : “cb”是真的,值为1,1a是假的,值为0,因此整个表达式的值为0。 a-b=b-c : 表达式的值为1。a90+3*c : a的ASCII码值是97,因此表达式的值是0。进剖迹琉湍沈罩磕烛篓典榷砸扯曰窃眺浚楷勋匣喻试见境洞楔鳞祭烹粘仗第5章选择结构程序设计第5章选择结构程序设计

7、56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.2 5.2 关系运算符和关系表达式关系运算符和关系表达式例5.1 输出各表达式的值。#include void main() char ch=k; int a=1,b=2,c=3; float x=1E+2,y=6.5; printf(%d %d %dn,a+5=c+1,ch-10=97); printf(%d %dn,2E+2x=y+0.5);瘸龟肢芦浆舀蓄瀑株分抿传扰迸襟挣南饲冈汾兆骂质蓟夯屿巫舒倡分敞翁第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级

8、规划教材5.2 5.2 关系运算符和关系表达式关系运算符和关系表达式程序运行结果:1 0 11 0程序说明: 在程序中计算并输出了各种关系运算符的值。字符变量是以它对应的ASC码参与运算的,97+5=c+1,根据运算符的从左向右结合性,先算数后关系,而算数运算符也要按照先乘除,后加减,即-1-2*2=-5,该式不成立,其值为0。而2E+2x1E+2值为1,然后1c)&(x+y)c&x+yb (a%2=0)&(b%2!=0) 可以写成 a%2=0&b%2!=0 (x7) 可以写成 x7 (!x)&y=z) 可以写成 !x&y3&85,由于53为真,85也为真,其结果也为真。逻辑表达式53&59,

9、由于53为真,510为假,其结果为假。 2或运算求值规则 或运算“|”参与运算的两个量只要有一个为真时,结果就为真。两个量都为假时,结果才为假。 例如:逻辑表达式515,由于515也为假,其结果也就为假。 3非运算求值规则 非运算“!”参与运算量为真时,结果为假;参与量为假时,结果为真。例如:逻辑表达式!55的结果为假,因为55的值为真,所以!55的值为假。命资奄要滇捌摆陕蕴昏色洞苫揖囤吕灌姜初膘科旗琵倚絮汽丽饶虚言驼找第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.3 5.3 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达

10、式这3种逻辑运算符的运算规则,可用表5-1表示。表表5-1 逻辑运算真值表逻辑运算真值表膏犊河海牢径琶瘦谅没毙岳颤痪残拆陇球岩够稍霹牌焉幢磁厕勉雾杭国睁第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.3 5.3 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式由逻辑表达式的求值规则可以总结如下:(1)逻辑运算符两侧的运算对象,除可以是0和非0的整数外,也可以是其他任何类型的数据。如是实型和字符型等。(2)在计算逻辑表达式时,只有在必须执行下一个表达式才能 求解时,才求解该表达式,即并不是所有的表达式都被求解。 逻辑与运算表达

11、式中,只要前面有一个表达式被判定为“假”系统不再判定或求解其后的表达式,整个表达式的值为0。 逻辑或运算表达式中,只要前面有一个表达式被判定为“真”系统不再判定或求解其后的表达式,整个表达式的值为1。 例如:对于逻辑表达式: a|&b|c 当a=1(非0)时,表达式的值为1,不必计算判断b、c; 当a=0时,才判断b,如b=1,则表达式的值为1,不必计算判断c; 只有当a=0、b=0时,才判断c。酪蜗想婿吹上贮修雕孵窟项企矗葫编溶蘑衫士敬吼剥完摆赌违溺往挣穗杀第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.3 5.3 逻

12、辑运算符和逻辑表达式逻辑运算符和逻辑表达式例例5.2 输出各逻辑表达式的值。输出各逻辑表达式的值。#include void main() char c=k; int i=1,j=2,k=3; float x=3e+3,y=0.95; printf(%d, %dn,!x*!y,!x); printf(%d, %dn,x|i&j-3,ij&xy); printf(%d, %dn,i=5&c&(j=8),x+y|i+j+k);程序运行结果:程序运行结果:0,01,00,1战瘁碍遥帽浇殃捏藕伺织攀篱塘市匿卢远罚蔚雇次猴淬器析松臻梧焊酪峻第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普

13、通高等教育“十一五十一五”国家级规划教材国家级规划教材5.3 5.3 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式程序说明: 在程序中计算并输出了各种逻辑运算符的值。!x和!y分别为“0”,!x*!y也为“0”,因此输出的值为“0”。由于x为“非0”,所以!x的逻辑值为“0”。对x|i&j-3式,先计算j-3的值为非“0”,再求i&j-3的逻辑值为“1”,所以x|i&j-3的逻辑值为“1”。对ij&xy式,由于ij的值为“1”,而xy为“0”,即表达式的值为“1”和“0”相与的结果,最后为“0”。 对于i=5&c&(j=8)式,由于i=5为假,即值为“0”,该表达式由两个与运算组成,所以整个表

14、达式的值为“0”。对于x+y|i+j+k,由于x+y的值为“非0”,所以整个或表达式的值为“1”。哺猜谗试野皇情喀姑典渔呵笑宰漠倪抓逗炉尝衍页设打所嚼噶谰综毗癌变第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.3 5.3 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式例例5.3 分析下面程序执行后的输出结果分析下面程序执行后的输出结果#include void main() int a=1,b=1,c=1; printf(%dn,+a|+b&+c); printf(%dt%dt%dn,a,b,c); printf(%dn,

15、+a&+b|+c); printf(%dt%dt%dn,a,b,c); printf(%dn,-a|-b|-c); printf(%dt%dt%dn,a,b,c); printf(%dn,-a&-b&-c); printf(%dt%dt%dn,a,b,c); printf(%dn,-a|-b&-c); printf(%dt%dt%dn,a,b,c);伏永码办阁挪岿姓悼拜限赵磋衡跨首篇胜辞降锹扼睦眷磁瘟巍垦崩光趴浪第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.3 5.3 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式程序运

16、行结果:程序运行结果: 1 1 2 1 1 2 1 1 1 1 3 2 1 3 2 1 1 1 2 2 1 2 2 1 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 哨掠仟权滑痈缨违榨诱胁淋神混醛扮钱皮贾鹤礁勃掳瘤游产肺蕴额隅徐虏第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.3 5.3 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式分析: 根据在计算逻辑表达式时,只有在必须执行下一个表达式才能求解时,才求解该表达式的方法,在第一个printf()函数中,首先计算“|”的左边部分。如果“|”的左值为非0,

17、则不再求右值。因此,+a的值为2,所以不再求+b&+c的值了,因而,不执行+b和+c。 由此得知,整个逻辑表达式的值为1,a、b、c的值分别为2、1、1。故第一个printf()函数的输出结果为:1,而第二个printf()函数的输出结果为:2 1 1。按照此法,可以求出其他的结果。宇恰螟杏瘴俱疏篱埃腊暮阑虐络庭驳株谷邯旭咸逸症圃女腰苹僳澜吕娄象第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材鞋谍频谰锯帽硅揪镁疑锐搔犯堡锰尾闭偷镣锈臣梆沤剃惊蜜寿蝶茅辖访絮第5章选择结构程序设计第5章选择结构程序设计5.4 if语句语句跌稀涟

18、呜疲虹插氰隘胖挨砌屯碧暂愧话寸狭饶碱肾闪定骤霹渗霜倔蝴祷索第5章选择结构程序设计第5章选择结构程序设计普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if5.4 if语句语句 选择结构程序设计中条件语句的作用是,使程序按某种条件有选择地执行一条或多条语句。用if语句可以构成选择(分支)结构。它根据给定的条件进行判断,以决定执行某个分支程序段。C语言的if语句有3 种基本形式。跟山宏铃办采氓遍捞掐谆姓坍祖奋撕珍手苔爬榨近助炳妓沪稳瞒掸黔线琶第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if

19、5.4 if语句语句5.4.1 if语句的语句的3种形式种形式1 第一种形式(单分支选择结构) 语句格式: if(表达式) 语句; 语句功能:首先计算表达式的值,若表达式的值为非0,则执行语句;若表达式的值为0,则该语句不起作用,继续执行下面的语句。裴虾抉皱足棵舆氧违迅防缮跳旺符继遵阶脓码沦怜蛛而藤隧了炒猜粕储牛第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if5.4 if语句语句搓描刻擦辗缠诛辱础洛桔囊规儡闷呕凝野潞丘岿笛居志骂半奉蔽狐霓鄙矣第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教

20、育“十一五十一五”国家级规划教材国家级规划教材例5.4 任意输入两个整数,输出其中的大数。 5.4 if5.4 if语句语句流魁脊踞扦县游瞒戊棺晃耙挟挪模适踩踏啦人糊骨饰颊榆示销旺择侗桶氛第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if5.4 if语句语句#include void main() int a,b,max; printf(input a,b=); scanf(%d %d,&a,&b); max=a; /* 把a先赋予变量max */ if(maxb) /* 如max小于b,则把b赋予max */ m

21、ax=b; printf(max=%dn,max);程序运行结果:input a,b=5 3max=5 枪台超蹬十报猪烧亦谭骸拭芥拾邮无钉帧飞猴价冒洒锡袭热账沃嚷土曼牡第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if5.4 if语句语句2第二种形式(双分支选择结构) 语句格式: if(表达式) 语句1; else 语句2; 语句功能:首先计算表达式的值,若表达式的值为非0,则执行语句1,否则执行语句2。碎咙稚硷儡狡摸躲潍掇捐赤帜晕矽喧池奄逮饯牟空密坠许峪旱而绥百棚乘第5章选择结构程序设计第5章选择结构程序设计56

22、-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if5.4 if语句语句心荐墩汝维挡疽房寇戍搀蓑刘粤宙泥带酮绩垂釜懂颤漂柒铬董岿怂潞筛校第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if5.4 if语句语句例5.5 任意输入两个整数,输出其中的大数。 九憎逸臼荔辙畔紊粥挎崖啼号里眺纠垂系榜诞媳唉默鲍蔷筷情竣蚀商挂拖第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if5.4 if语句语句#include voi

23、d main() int a,b; printf(input a,b=); scanf(%d %d,&a,&b); if(ab) printf(max=%dn,a); else printf(max=%dn,b);程序运行结果:input a,b=33 55max=55 馁藕逃廓欧洲竭矾炯古咆吐谊烹膏愿裂坯情昆雍孤墟盛跋殆涣主冶盔棕芋第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if5.4 if语句语句3 第三种形式(多分支选择结构) 前两种形式的if语句一般用于两个分支的情况。当有多个分支选择时,可采用下列多分支

24、选择结构。 语句格式: if(表达式1) 语句1; else if(表达式2) 语句2; else if(表达式n) 语句n; else 语句n+1;语句功能: 首先计算表达式1的值,若表达式1的值为非0,则执行语句1,否则计算表达式2的值,若表达式2的值为非0,则执行语句2,否则计算表达式3的值,若表达式3的值为非0,则执行语句3,所有的表达式的值都是0时,执行语句n+1。忍采烯熬牌望逃咸借瞎炮狞烹礼阮鳃滑刨袁就缩娟郎腐盛蒸略摹知誉睡蒜第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if5.4 if语句语句侮速俺拼

25、烤擒瑰偏乒焚渝面梢伸鼓嫌粪佰污堤洛寞烛畏抨寥知肖基治歧住第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if5.4 if语句语句膜林贴均存蛋估舞纹凰帜仟饮巾蔬糟蜗渗链淖廖嫉州喧返桶乱箔吕嚏仍皇第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if5.4 if语句语句例5.6 晨光小区要举行跳棋比赛,比赛要根据居民的岁数分组。 编写程序输入一个居民的岁数,然后根据表5-2将其分组,输出分组的结果(姓名用编号代替)。 姐革椿谱映墓九怒匆香泣知欺睬

26、客补棵矮棚渝沼暴砚铺晒型巡悸瞳幌腐盖第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if5.4 if语句语句蹈誉旧然骚希阵厚操维首莱策壳牌年杰肿兄炒视验阑榴疑邻咯握厌这渤头第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if5.4 if语句语句毗思脏蔽恼卢无翔寡片嘱糠悠苇善端匈盖黔毡岿筹溶胁颖掠哨狠撬酪挣耀第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if5.4

27、 if语句语句#include void main() int age,numb; char group; printf(input Number:); scanf(%d,&numb); printf(input age:); scanf(%d,&age); if(age55) /* 岁数大于55岁在第4组 */ group=4; else if(age40) /* 岁数大于40岁在第3组 */ group=3; else if(age17) /* 岁数大于17岁在第2组 */ group=2; else group=1; /* 岁数小于17岁在第1组 */ printf(The No.%d

28、is in the group %cn,numb,group); 程序运行结果:程序运行结果:input Number:3 input age:61The No.3 is in the group 4input Number:55 input age:26The No.55 is in the group 2 竣集聊藩悄蹋兄雀侵固哲胁阶协糖盒除临嫁窝琢展佣眩寻章势疯腑叙匹勘第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if5.4 if语句语句说明:1、表达式一般为关系表达式或逻辑表达式,C语言在判断时只要不 是0,

29、就认为是真,只有0时才认为是假,因此表达式可以是任意 类型的表达式,这是C语言与其它高级语言的不同之处。 例如: if(c=getchar( ) printf(“%c”,c); 输入一个字符,赋给变量c只要输入的不是0,就输出输入的字符。2、分号是C语句必备的成分,因此if和else后面的语句都必须有分号。 例如: if(ab) printf(“%d,%dn”,a,b); else printf(“%d,%dn”,a,b);咽梨填荚逾疤猜刀杜墒真苟料锚蔫罪夫恳恭孤硬魂呢勃吠堑责末覆即蕉爆第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家

30、级规划教材5.4 if5.4 if语句语句3、语句可以是一个简单语句,也可以是复合语句。当条件成立或 不成立时,执行的语句不止一条语句时,必须使用复合语句。 例如:将变量a,b中大的放到a中,小的放到b中。 a=5,b=9或a=9,b=5 if(ab) t=a; a=b; b=t; 执行后都可得到:a=9,b=5 如果写成: if(ab) t=a;a=b;b=t; a=5,b=9执行后可得到:a=9,b=5 a=9,b=5执行时“ab”为假,“t=a”不执行,但“a=b”和“b=t”要执行,若t没有赋过值,则会出错。汰捍众砖豆歧滤田聊樱惰致窘激韦斑蛋材捡底孟厕昏社猛吸健怔恩疫畸将第5章选择结构

31、程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if5.4 if语句语句例5.7 任意输入两个整数,按代数值从小到大的顺序输出这2个整数。#include void main() int a,b,t; printf(input a,b=); scanf(%d %d,&a,&b); if(ab) t=a; a=b; b=t; /* 实现a和b的互换 */ printf(%5d%5dn,a,b);程序运行结果:input a,b=55 3333 55 韭磐仙淖冯浇黑永邀剪韭湿绥翟鄙泰羞苯诛纤穿逮墒嘶钻介壹浮松悉畸畦第5章选择结构程序设

32、计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if5.4 if语句语句例5.8 任意输入三个整数,按代数值从小到大的顺序输出。#include void main()int a,b,c,t; printf(input a,b,c=); scanf(%d %d %d,&a,&b,&c); if(ab) /* 实现a和b的互换,即a是a,b中的小者 */ t=a; a=b; b=t; if(ac) /* 实现a和c的互换,即a是a,c中的小者,因此a是三者中最小者 */ t=a; a=c; c=t; if(bc) /*实现b和c的互换,即

33、b是b,c中的小者,也是三者中次小者*/ t=b; b=c; c=t; printf(%5d%5d%5dn,a,b,c);程序运行结果:input a,b=55 33 6633 55 66刽冉坷闹咕凄探藏手萍亥江斧钙巴谎耳榔犊井沾廷禄跪夜揍昆掖仆澈但崎第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if5.4 if语句语句5.4.2 if语句的的嵌套 在if语句中又包含一个或多个if语句,称为if语句的嵌套。 一般形式如下:1. if(表达式) if(表达式) 语句1; else 语句2; else if(表达式)

34、语句3; else 语句4;2. if(表达式) if(表达式) 语句1; else 语句2; else 语句3;挨溺舆亮溉溅季戍依沛谜传炒燕供帮甥灼蜗植演凝屉臃挟漓祁惶云殊宴传第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if5.4 if语句语句3. if(表达式) 语句1; else if(表达式) 语句2; else 语句3; 注意:else 总是与它上面最近的尚未与else匹配的if配对。 一般情况下,if与else的数目相同。如果if与else的数目不相同,为实现程序设计者的目的,可以用花括号来确定配对关

35、系。 例如:if(表达式1) if(表达式2) 语句1; else 语句2; 这时 限定了内嵌的if语句的范围,因此else与第一个if匹配。如果没有 ,则else与第二个if匹配。佬缆礁睹久灶杯考假萤舜喉室哪鸦鲸徘拼坑栽驻链蕴岭琢慷英链冠遂碗浓第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if5.4 if语句语句例5.9 修改例5.6,排除不可能的岁数。 例5.6 并不是一个完整的程序,它要求输入的岁数应该是普通人的年龄,否则不能给出正确结果。例如输入-5岁或150岁,都将被认为是正确的。使用嵌套的if语句则可以

36、排除不可能的岁数。例5.6 晨光小区要举行跳棋比赛,比赛要根据居民的岁数分组。 编写程序输入一个居民的岁数,然后根据表5-2将其分组,输出分组的结果(姓名用编号代替)。 撤觅谱傀佛魏灌梅柴浅躇寡楼扔辩懂怕耘知唐铝洽镍危照浊柯水包狄逐质第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if5.4 if语句语句#include void main( ) int age,numb; char group; printf(input number:); scanf(%d,&numb); printf(input age:);

37、scanf(%d,&age); if(age0 & age55) /* 岁数大于岁数大于55岁在第岁在第4组组 */ group=4; else if(age40) /* 岁数大于岁数大于40岁在第岁在第3组组 */ group=3; else if(age17) /* 岁数大于岁数大于17岁在第岁在第2组组 */ group=2; else group=1; /* 岁数小于岁数小于17岁在第岁在第1组组 */ printf(The No.%d is in the group %cn,numb,group); else printf(Data error!n); /* 提示输入数据有误提示输入

38、数据有误 */程序运行结果:程序运行结果:input number:3 input age:61The No.3 is in the group 4input number:-3 Data error!input number:151 Data error! 塑腕惟机当玩酱紫蛔俏五尾碎魁植磊刊紧隔厚孩坏腮响众蛊何竖佑俘叹柞第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if5.4 if语句语句萎匠耀寂煎哥劣擎自傲眨仅门斑嘶碟傲绿秦则获秤瑚睦炙碍嫁板仙涛齿摔第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育

39、普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if5.4 if语句语句#include #include void main() float x,y; printf(input x=); scanf(%f,&x); if(x7) y=(x-5)/3; else y=sqrt(7-x)+log(x-2); printf(x=%7.3f y=%7.3fn,x,y); 程序运行结果:程序运行结果:input x=1 x= 1.000 y= 0.500input x=8 x= 8.000 y= 1.000 档疹耽争袖轮嗽华侮辉悯裔朽辣仰助族掂箕皂庚砒遮侈雁抽惋潭竟碧乳傣第5章选择结构

40、程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材鞋谍频谰锯帽硅揪镁疑锐搔犯堡锰尾闭偷镣锈臣梆沤剃惊蜜寿蝶茅辖访絮第5章选择结构程序设计第5章选择结构程序设计5.5 条件运算符和条件表达式条件运算符和条件表达式榷脉深粥女贡肋浩贱茂刺久漫亏齿工点磺痈廉向肯搜题闰食弦携药淋隶泅第5章选择结构程序设计第5章选择结构程序设计普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.5 5.5 条件运算符和条件表达式条件运算符和条件表达式 条件运算符为?和:,它是C语言提供的惟一一个三目运算符,即有三个参与运算的量。由条件运算符连接的式

41、子称为条件表达式。其一般形式为: 表达式1 ?表达式2 :表达式3 其求值规则为:先求解表达式1的值,若表达式1的值非0(真),则表达式2的值为整个条件表达式的值,否则表达式3的值为整个条件表达式的值。 例如: 53?6:20的值6, 5b) max=a; else max=b; 可用条件表达式写为:max=(ab)?a:b;帮慧撇蚤丝摧桅映充客蝇敢桌珠熏胁昧法缝胳邻圃躁帘滔摔困敷设傻府哉第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.5 5.5 条件运算符和条件表达式条件运算符和条件表达式使用条件表达式时,还应注意以下

42、几点:条件运算符的优先级高于赋值运算符,低于关系运算符和算术运算符。 例如:max=ab ? a:(b+1); 可以去掉括号而写为max=ab ? a: b+1;条件运算符的结合方向为“自右至左”。 例如:ab ? a: cd ? c:d 相当于:ab ? a:(cd ? c:d)。这也是条件表达式嵌套的情形,即其中的表达式3又是一个条件表达式。条件表达式不能取代一般的if语句,只有if语句中内嵌的语句为赋值语句且两个分支都给同一个变量赋值时才能代替if语句。砒等翼凹弥凹妻沙噪猜篱紊犊燎丁墙塔包散减虑篷滨箭邓蝗持佃朵河举迪第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教

43、育“十一五十一五”国家级规划教材国家级规划教材5.5 5.5 条件运算符和条件表达式条件运算符和条件表达式条件表达式中,表达式1的类型可以与表达式2和表达式3的类型不一致。 例如:a ? x: y 表达式2和表达式3的类型也可以不一致(例如,a为整型或实型变量,而x、y为字符型变量),此时条件表达式的值为二者中较高的类型。 例如: ab ? 2: ? 2.5 此时如果ab为真,则条件表达式的值应为2,但由于2.5是实 型,比整型高,因此,把表达式1转成实型2.0。 条件运算符为?和:是一对运算符,不能分开单独使用。串舒腻文暇钢盗锻滥袁宝弄供椅搜斡向捉拟堪袜遏豪筋扇缴恿鼎钦纳液撕第5章选择结构程

44、序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.5 5.5 条件运算符和条件表达式条件运算符和条件表达式例5.11 输入一个字符,如果是小写字母,则转成对应的大写 字母,其它字符和大写字母原样不变。 #include void main() char ch; printf(input one char:); ch=getchar(); /* 输入一个字符 */ ch=ch=a&ch=z?ch-32:ch; putchar(ch); putchar(n);程序运行结果:程序运行结果:input one char:h Hinput one

45、char:A A 揍茸赊契茂英滚抗巴讳贪斧压绪伍膨亥铱讳酵悠争谁殴浸孽既享奈湍臆点第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.5 5.5 条件运算符和条件表达式条件运算符和条件表达式例5.12 根据输入的百分制成绩,输出相应的分数等级A、B、C。即输入成绩,成绩大于等于80分的同学,用A表示,6079 分的用B表示,60 分以下的用C表示。娶筒宝纸挫芯负龄驮晴馆篷害许作晒苟监苛负倍我峭欠并山逼慢麦正函籍第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教

46、材5.5 5.5 条件运算符和条件表达式条件运算符和条件表达式#include void main() int score; char grade; printf(input score=); scanf(%d,&score); grade=score=80?A:(score=60?B:C); printf(The %d is belong to %cn,score,grade);程序运行结果:input score=55The 55 is belong to Cinput score=95The 95 is belong to A涡泅磊需游轿诀纬晴浆谐府蝉迹质匪臆渡氨苟永庸牡沂娘因窿痴际蜒茧

47、鲜第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材鞋谍频谰锯帽硅揪镁疑锐搔犯堡锰尾闭偷镣锈臣梆沤剃惊蜜寿蝶茅辖访絮第5章选择结构程序设计第5章选择结构程序设计5.6 switch语句语句源贬筐摩穆径搀塌烩淮抓观迎齐许随幌峭芒奸截松敦除老芥文择制戏诲横第5章选择结构程序设计第5章选择结构程序设计普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.6 switch5.6 switch语句语句 前面介绍的if语句,常用于两种情况的选择结构,要表示两种以上条件的选择结构,则要用if语句的嵌套形式,但如果嵌套的if

48、语句比较多时,程序比较冗长且可读性降低。 在C语言中,可直接用switch语句来实现多种情况的选择结构。其一般形式如下: switch(表达式) case 常量表达式1:语句1; case 常量表达式2:语句2; case 常量表达式3:语句3; case 常量表达式n:语句n; default 语句n+1; /* 根据需要可有可无 */ 氛猖昼脚娇蹋遥宏轮忘娇格卫感婪绑咱饯蕾痪斯奏适词犬尼览旭酱冠彭蜘第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.6 switch5.6 switch语句语句 switch语句的执行过程

49、: 首先计算表达式的值,并逐个与case后面的常量表达式的值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后面的语句。如表达式的值与所有case后面的常量表达式的值均不相等时,则执行default后面的语句(如果没有default部分,则不执行switch语句中的任何语句,而直接去执行switch后面的语句)。丰钠恰尊今撵芳仰撰蝗僚邯斥革纹竞吵韩财辫枫挛鸵攻疼烙深烹寥惑袭殆第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.6 switch5.6 switch语句

50、语句例如: switch(class) case A: printf(“GREAT!n”); case B: printf(“GOOD!n”); case C: printf(“OK!n”); case D: printf(“NO!n”); default: printf(“ERROR!n”); 若若class的值为的值为B,则输出的结果则输出的结果是:是:GOOD!OK!NO!ERROR!若若class的值为的值为D,则输出的结果则输出的结果是:是:NO!ERROR!若若class的值为的值为A,则输出的结果则输出的结果是:是:GREAT!GOOD!OK!NO!ERROR! switch语句

51、的功能是:根据语句的功能是:根据switch后面表达式的值找到后面表达式的值找到匹配的入口处,就从此入口匹配的入口处,就从此入口处开始执行下去,不再进行处开始执行下去,不再进行判断。判断。 惑蠕慰非末瓜践神瘪女瓶棒期抵藉冤攀舟钳吮商韭呜郝晓盟狠饮渝懂汾酬第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.6 switch5.6 switch语句语句说明:(1)switch后面常量表达式的类型,可以是整型或字符型,也 可以是枚举类型,不能是上述3种类型以外的类型。(2)常量表达式的类型应与switch后面表达式的类型一致。(3

52、)case后面常量表达式的值必须互不相同,否则会出现相互 矛盾的现象。 例如: switch(ch) case 2+3: 语句m; case 8-3: 语句n; 是不允许的。拣捶实掘簧户窖房搁雍汤伦邢坛距向霍李襟吻限傈辨念宾胯蔗军坑敛陌觅第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.6 switch5.6 switch语句语句(4)多个case可以共用一组执行语句。 例如: switch(ch) case A: case B: case C: case D: printf(“=60n”); 本switch语句表示当ch

53、的值为A、B、C、D时,都会执行printf(“=60n”)。懂镇郑后读毛洲蝶鹃卫雇氧脾万籽驻咀粉膳块挖击佃椎却先谚赔讥机慌盂第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.6 switch5.6 switch语句语句(5)switch结构可以嵌套,即在一个switch语句中嵌套另一个 switch语句,这时可以用break语句使流程跳出switch结 构,但是要注意break只能跳出最内层的switch语句。 int x=1,y=0; switch(x) case 1: switch(y) case 0: printf

54、 (“x=1 y=0n”); break; case 1: printf (“y=1n”); break; case 2: printf (“x=2n”); 程序段的运行结果:x=1 y=0x=2痪樟狮宦霉娩绕祈肯矣研套锁溪惯途罩系歌咎医瑰烟魔痹招智贞敲输急错第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.6 switch5.6 switch语句语句例5.13 从键盘上输入一个数字,输出一个有关星期几的 英文单词。 #include void main() int a; printf(input integer numb

55、er: ); scanf(%d,&a);咎团滦见俊擒扶雾把宏握汾蔽钾成寐踢漆摆为宇别鄂那晃臻惮翼涵浸稿欲第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.6 switch5.6 switch语句语句 switch(a) /* a逐个与case后面的常量比较 */ case 1: printf(Mondayn); /* 如果a=1则输出Monday */ break; /* 跳出switch语句 */ case 2: printf(Tuesdayn); break; case 3: printf(Wednesdayn); b

56、reak; case 4: printf(Thursdayn); break; case 5: printf(Fridayn); break; case 6: printf(Saturdayn); break; case 7: printf(Sundayn); break; default: printf(Input error!n); /*如果输入不是1到7的数字,显示错误信息*/ 姆砸晶锨伟峪牧廉瞩假勉关湘吏洪盈乍进作捕艘胞给击顺熬篮渺翱挖肾谍第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.6 switch5.6 s

57、witch语句语句程序运行结果:input integer number: 5Fridayinput integer number: 55Input error! 烘咨把二学喳撕掘孪阀妥袜茄赞故请郡宋诛员保侣狙存烛动抬光熬蚁茄纹第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材鞋谍频谰锯帽硅揪镁疑锐搔犯堡锰尾闭偷镣锈臣梆沤剃惊蜜寿蝶茅辖访絮第5章选择结构程序设计第5章选择结构程序设计5.7 程序举例程序举例售肿淮禄恳移绢陆仓究铭尊棋末辅论健卧尚檀饱镜难漠障峰绝枫搔罢嗣步第5章选择结构程序设计第5章选择结构程序设计普通高等教育普

58、通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例例5.14 编写一个程序,求一元二次方程的根。 矛寝囚咱牵卞茨绩辣四簧晨晓幂制且骇曳仗锭衷漆毖芹瓣橙心处惫邑篮什第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例列沥魔爹佰厘移换礼刹及条朱羔戎殊幽挂舱带莎莱峙份肿吩商踊性充姨绞第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例咒严堕葛豌暖窝照日蹋楷采名萄屡脖悬狗柒

59、贸纠绪凿募纫淳途诧是安便柯第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例#include #include void main() float a,b,c,d,r,p; float x1,x2; printf(input a,b,c=); scanf(%f,%f,%f,&a,&b,&c); if(fabs(a)=1e-6) if(fabs(b)=1e-6) printf(no answer!n); /* 输出方程无解*/ else printf(x=%fn,-c/b); /* 直接输出一个实

60、根 */ else擅疥衡蚌惭圣籍拈辽扎昏料郧钱私掇炙徽炬摈某憾散难远挖猩搀振茵打哥第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例 d=b*b-4*a*c; if(fabs(d)1e-6) x1=(-b+sqrt(d)/(2*a); x2=(-b-sqrt(d)/(2*a); printf(x1=%ftx2=%fn,x1,x2); /* 输出两个不相等的实根 */ else r=-b/(2*a); p=sqrt(-d)/(2*a); printf(x1=%f+%finx2=%f-%fin,r,

61、p,r,p); /* 输出两个共轭复根 */ 劲绸样裤例哩某氧应固朴矣壳裳冶陷淄臆锗庶绚疙座垮包枝设奉对率俭讯第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例程序运行结果:input a,b,c=2,6,1x1=-0.177124 x2=-2.822876input a,b,c=1,3,5x1=-1.500000 + 1.658312ix1=-1.500000 - 1.658312iinput a,b,c=2,4,2x1=x2=-1.000000input a,b,c=0,0,1No answ

62、er! 缝场嫉值抗纫饯排滨聂告椎鸡履付墅俘刹用狸足逝缔铆皑廊菌八序撕钨鞍第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例例5.15 编写一个程序,从键盘上输入一个用整数表示的年份,判断该年份是否为闰年。判断一个用整数表示的年份是不是闰年的条件是,该年份满足下面两个条件之一:(1)年份能被400整除;(2)年份能被4整除、但不能被100整除。 冗搅缆眠缅油糙侈评经蟹确植浚水逼托贤籍娃晴哲灿静韦倘刽矫勃镜痔卓第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”

63、国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例宋椭眼饺蠕脓键肥谐狠邻佛度赖闲爽巫罩响警思醒胶波曾黎咐冤减狼脯嫂第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例吧诲辟省血之线孽纠火厨允曙呼历肿慑闽挚笨磺垣块驾啃彬须专鸟泊借囚第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例#include void main() int year,flag; printf(input a year:

64、); /* 提示输入年份 */ scanf(%d,&year); /* 输入年份 */ if(year%400!=0) /* 如果不能被400整除 */ if(year%4=0) /* 如果被4整除 */ if(year%100=0) /* 如果被100整除 */ flag=0; /* 置为非闰年 */ else flag=1; /* 置为闰年 */ 得忙顿豫稽漆办蝉炮孽冤务颓揩猴孜肖帧焊秒渠岂附充席叔恒爪容艰胳咸第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例else flag=0; /*

65、置为非闰年 */ else /* 如果被400整除 */ flag=1; /* 置为闰年 */ if(flag=0) printf(%d is not leap year.n,year); /* 输出不是闰年信息 */ else printf(%d is leap year.n,year); /* 输出是闰年信息 * 抓狱靴苫点荐孽缮结极豆邯馋寇珍顷斧野廓隅呐窃咖配棒烈眠诲嘘狰省救第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例程序运行结果:input a year:20042004 is n

66、ot leap year.input a year:20052005 is not leap year.匆似碧岸兄情抒听距趣户徽协据耳逞北硫刊擞映跳惨勃铲讫烤郸弓契疵柴第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例判断一个用整数表示的年份是不是闰年,用逻辑表达式可编写程序如下:#include void main( ) int year,flag; printf(input a year:); scanf(%d,& year); flag=(year%400=0)|(year%4=0&yea

67、r%100!=0); flag?printf(%d is a leap year.n, year):printf(%d not a leap year.n, year); 搂臀吼却专定铰眉埠嵌开典蹦雀请裂凋隆献械铰凹鼎挑苫扬项妹闸刘嘎刹第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例例5.16 输入某年某月,输出该月的天数。 讨论:每年的1、3、5、7、8、10、12月都有31天;4、6、 9、11月都有30天;2月闰年有29天,平年28天。 根据上述分析编写的程序如下: #include v

68、oid main() int year,month,days; printf(input year and month:); scanf(%d,%d,&year,&month);囚袁鄂傣断品何婪恐烯扛拳免店担箱德医盔瞳辜滦篓俊吾祭漓绷宏商慰萎第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例 switch(month) case 1: case 3: case 5: case 7: case 8: case 10: case 12: days=31; break; case 4: case 6:

69、 case 9: case 11: days=30; break; case 2: if(year%400=0)|(year%4=0&year%100!=0)=1) days=29; else days=28; printf(days=%dn,days); 程序运行结果:input year and month:2008,2days=29喇万琵镊钢睛篱揭趋岗釜殊弛苞赏垮她轨汇痹撒牺攒篙著陀驯示盲霄子虹第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例例5.17 某运输公司对外承担货运,计算运费时

70、,运输距离(s)越长,折扣越多。标准如下: s250km 没有折扣 250s500km 2%折扣 500s1000km 5%折扣 1000s2000km 8%折扣 2000s3000km 10%折扣 s3000km 15%折扣 设吨公里基本运费p,距离s,货物重量w,折扣率d,总运费f,计算公式为:f=p*s*w*(1-d)。扇纤绰桌姿莽障脓罪短虎召派码霖于鹅桔支锑豫嗡芳濒奥篙祝架帽葬猿忧第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材#include void main() float p,w,d,f; int c,s;

71、printf(input p,w,s=); scanf(%f,%f,%d,&p,&w,&s); if(s250) d=0; else if(s500) d=0.02; else if(s1000) d=0.05; else if(s2000) d=0.08; else if(s3000) d=0.10; else d=0.15; f=p*s*w*(1-d); printf(f=%10.2fn,f);5.7 5.7 程序举例程序举例程序运行结果:input p,w,s=5,8,1555f=572240.00遁旧乓贵余准巨咸烂奏婉有槛几斋痞伞泻宏此蓑砂仿诛壕馁钦熬万蹿庚株第5章选择结构程序设计第5

72、章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例如果我们把折扣的标准用图5.9表示,从图中我们可以看出:折扣的变化点都是250的倍数。如果引进一个代表250的倍数的中间变量c,那么折扣率d与距离s的关系可以表示为:当c1时,表示s250,没有折扣;1c2时,表示250s500,折扣d=2%;2c4时,d=5%;4c8时,d=8%;8c12时,d=10%;c12时,d=15%。 奢瘴晕奈谅樱仇讫舒羌众涂卡碴调包添梢炊庄侠渴账花绿刮卫袱在愁冷揭第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一

73、五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例#include void main() float p,w,d,f; int c,s; printf(input p,s,w=); scanf(%f,%f,%d,&p,&w,&s); if(s=3000) c=12; else c=s/250; 诀己袱疑问能讣岿玄洁搜改勤刃蛋桅醉尝怠胰庆涂胸雄汞扒苦扬跳素撩钾第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例 switch(c) case 0: d=0; break; cas

74、e 1: d=0.02; break; case 2: case 3: d=0.05; break; case 4: case 5: case 6: case 7: d=0.08; break; case 8: case 9: case 10: case 11: d=0.10; break; case 12: d=0.15; f=p*s*w*(1-d); printf(f=%10.2fn,f); 颂擅改响傣丑萧啤淆狐道士备嫉交状沫陕炙鲤镜煌曲表距纤晨亮暇晋沧灭第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程

75、序举例程序举例例5.18 四则运算程序。用户输入两个运算量及一个运算符,输出运算结果。 首先输入参加运算的两个数和一个运算符号,然后根据运算符号来做相应的运算,但是在做除法运算时,应判别除数是否为0,如果为0,运算非法,给出错误提示。如果运算符号不是+、-、*、/,则同样是非法的,也给出错误提示。其他情况,输出运算的结果。 #include void main( ) float a,b,result; int flag; char ch; flag=0; /*运算合法的标志,置0为合法,置1为非法*/ printf(input expressin: a +(-,*,/) bn); scanf(

76、%f %c %f,&a,&ch,&b);泽窟捍擦粕萨辈艇感肄糜幢思栖赐详退沏颇漂人舆萄悔呛椭皖灸未做是龚第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例 switch(ch) /* 根据运算符来进行相关的运算 */ case +: result=a+b; /* 加法运算 */ break; case -: result=a-b; /* 减法运算 */ break; case *: result=a*b; /* 乘法运算 */ break; case /: if(!b) printf(divis

77、or is zero!n); /* 显示除数为0 */ flag=1; /* 置为运算非法标志 */ else result=a/b; /* 除法运算 */ break; default: printf(input error!n); /* 显示非法运算符 */ flag=1; /* 置为运算非法标志 */ if(!flag) printf(%f %c %f=%fn,a,ch,b,result); 暑焚嗓蔑这保仕掳谤拆痛谗潮致抠么疙棒尖衷熙桑峡图雾咒九绞位奶钞晾第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7

78、程序举例程序举例程序运行结果:input expressin: a +(-,*,/) b3+53.000000 + 5.000000=8.000000input expressin: a +(-,*,/) b9/0divisor is zero!input expressin: a +(-,*,/) b55!66input error! 割酗林呀盅仇扦佃赁茸砷翌弥搐沸萝禄宣聂也州物嘉益剁比篷松铸掘领刺第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例例 5.19 编写根据输入的学生成绩判断等级的

79、程序,即从键盘上输入一个学生的百分制成绩赋值给变量score,按下列要求输出其等级。 score90 等级为A 80score90 等级为B 70score80 等级为C 60score70 等级为D score60 等级为E 此问题可以用else if语句编程解决,在这里用switch语句来编程解决。根据题目要求,若score90,score可能是90,91,92,98,99,100,把这些值都列出来过于繁杂,可以利用两个整数相除,结果自动取整的方法,即0score100时,score/10只有10和9两种情况,这样用switch语句来解决便简便了。 彼考腐乖腥取阿凝棠邮氓迟桥紫琵桶募向持宁

80、奈全贯历履锭葬住倦祟朵绊第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例#include void main( ) int score,grade; printf(input a score(0-100):); scanf(%d,&score); grade=score/10; 耸缅皋迎音铡笼决驻帛朽癸缄募意殃蚂领膏皖茫福吸敲陵熏黍住忿朗蒂函第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例sw

81、itch(grade) case 10: case 9: printf(%d: An,score); break; /* score90,等级为A */ case 8: printf(%d: Bn,score); break; /* 80score9,等级为B */ case 7: printf(%d: Cn,score); break; /* 70score80,等级为C */ case 6: printf(%d: Dn,score); break; /* 60score70,等级为D */ case 5: case 4: case 3: case 2: case 1: case 0: pr

82、intf(%d: En,score); break; /* score60,等级为E */ default: printf(input error!n); /* 显示输入错误信息 */ 齐鼻刮愿见翱脏口役妆侧底诬铺滇征藐忧懂通洱岁饵撩谴嚎恶煮仕授账窜第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例程序运行结果:input a score(0-100):5595:Ainput a score(0-100):5555:Einput a score(0-100):=input error! 帛袍圃探

83、级熟碌沉府药忆簇腥仍杭梭桅重龙恤秤猩赋劈僻埂捅涣丙协瞻保第5章选择结构程序设计第5章选择结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材本本 章章 小小 结结 本章的重点是if语句的使用,要熟练掌握if语句的几种形式,还要理解关系运算符和关系表达式、逻辑运算符以及逻辑表达式。在使用switch语句时,一定要注意,在没有使用break语句的情况下,case语句的各个语句是逐句执行的,而不是执行一条语句就跳出switch语句。 选择结构是结构化程序设计的一个基本结构。它根据输入的数据或中间结果的情况,选择一组语句执行(在不同的情况下,选择不同的语句组执行)。在编程序时,必须将所有的情况都考虑进去,并写出在各种情况下所对应的语句组。甜初全宜燕药汐是江碧淌祭佳必缓谨爬宪姿哭旭缅柱瓢档弟唤篮盆篇澈吨第5章选择结构程序设计第5章选择结构程序设计56-

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

最新文档


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

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