
第5章选结构程序设计.ppt
101页普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材招访鹰浚肆肃副贫沁拓瘦秃盅底紫柄阂裤蕊貌唯懦逼汪契胖千缀析颗噪卑第5章选结构程序设计第5章选结构程序设计第第5 5章章 选择结构程序设计选择结构程序设计颊原曰计离斜懒憨戳赛饶藐瓣昌丸壹抓麓酞使圾方鸽放弓炊配缠铂喘箍兽第5章选结构程序设计第5章选结构程序设计普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材招访鹰浚肆肃副贫沁拓瘦秃盅底紫柄阂裤蕊貌唯懦逼汪契胖千缀析颗噪卑第5章选结构程序设计第5章选结构程序设计5.1 选择结构的概念选择结构的概念郎羌丧弛坪窿昭依孙果颈闽危茂牙侣矣悦鸡枝银棍乱琼死舟骆品者刨迄系第5章选结构程序设计第5章选结构程序设计普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.1 5.1 选择结构的概念选择结构的概念 到目前为止,所介绍的程序都属于顺序结构,顺序结构程序中的所有语句都将被按照书写的顺序执行一次但是在实际应用中,常常需要根据不同情况选择不同的执行语句,这时需要设计分支结构 例如:在第4章例4.11中,我们介绍了用海伦公式求三条边长a、b、c分别为3、4、5的三角形的面积s。
这个程序的局限性很大,它不能判别三边长度是否满足构成三角形的条件 为此,将该问题的算法用流程图和N-S图描述如图5.1所示务镊峭己然点唇酬脚垢耶储搪辕气肿悬快满浊玲烷乌怪刨钾尝众拖付漂酸第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.1 5.1 选择结构的概念选择结构的概念惑沛竖孺都媳擦肢枣臂馁乏罚甄幽衙美土疑陪蛤奈发息亥席逾漆滔戚梆殃第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材基于图5.1编写的程序如下:#include 若满足,则计算并输出结果;反之,只要其中有一个条件不满足,就不能构成三角形,程序输出“data error!!”出错信息 在图5.1和上述程序中包含有分支结构在C语言中,当需要根据选择条件来确定程序的执行流程,选择某一个分支来执行,这样的程序结构被称为选择结构(分支结构)C语言提供了两种控制语句来实现这种选择结构:if条件语句和switch开关语句5.1 5.1 选择结构的概念选择结构的概念喧悠竞侮扑庇裔堵商澳偏家讨适史胆负沂淳友掂硕婉旭党吭豺拟擅岁瓤悼第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材招访鹰浚肆肃副贫沁拓瘦秃盅底紫柄阂裤蕊貌唯懦逼汪契胖千缀析颗噪卑第5章选结构程序设计第5章选结构程序设计5.2 关系运算符和关系表达式关系运算符和关系表达式歇登刃败也呈兆恋拎滦撅荧诌擂穆镊盯疵勘覆娇位涩幻缚遏煤腰福六陈囱第5章选结构程序设计第5章选结构程序设计普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.2 5.2 关系运算符和关系表达式关系运算符和关系表达式 在选择结构中,需要根据选择条件进行判断,然后执行不同的分支。 而选择条件在C语言中一般是由关系表达式组成的所谓“关系运算”实际上是“比较运算”,那么比较两个量的运算符称为关系运算符,由关系运算符组成的式子称为关系表达式 关系表达式有且只有两个值:“真”或“假”由于C语言中没有逻辑型数据,因此用数值1代表逻辑真,用数值0代表逻辑假氯隋融刮咐垒斥野滚灭青秒夕赡郁嗣版拌姬擂芯赵货取扰阔峻鸽睁沼竹瓤第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.2 5.2 关系运算符和关系表达式关系运算符和关系表达式5.2.1 关系运算符及其优先次序 C语言提供了以下6种关系运算符,这些关系运算符分成两个优先级 > (大于) >= (大于等于) < (小于) <= (小于等于) = = (等于) != (不等于) 关系运算符都是双目运算符,其结合性均为从左向右结合在6种关系运算符中: ① 前四种关系运算符的优先级别相同(>,>=,<,<=)。 ② 后两种关系运算符的优先级别相同(==,!=) ③ 前四种关系运算符的优先级高于后两种关系运算符 ④ 关系运算符的优先级低于算术运算符 ⑤ 关系运算符的优先级高于赋值运算符 嗓攘双野蔑焙往聂螺挝轮埃诺亚刁他疼痈桓夹鸥纫著猖昆尘超穴辟型皇壁第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.2 5.2 关系运算符和关系表达式关系运算符和关系表达式算术运算符、关系运算符和赋值运算符的运算次序为: 算术运 算符→关系运算符→赋值运算符 例如: x>a+b 等价于 x>(a+b) x=a==b 等价于 x=(a==b) x==y 胆偏备瘸焦斩瘴操讹专厦易雾羔琉俯涪矿菌寨留纂粉翟拇妓六虚庚蕉摈挝第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.2 5.2 关系运算符和关系表达式关系运算符和关系表达式5.2.2 关系表达式关系表达式 用关系运算符将两个表达式连接起来的表达式,称为关系表达式表达式可以是算术表达式、关系表达式、逻辑表达式、赋值表达式以及字符表达式 其一般形式为:表达式 关系运算符 表达式 例如: a+b>c+d a>b==c>d x!=’d’ (x=2)>=(b=a) 等都是合法的关系表达式 别傍床勾羽甚浚喇宿抖盆珊焚逝蠕囱笛峡却吕转瀑击勘浅拍我蘸告拖酿潜第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.2 5.2 关系运算符和关系表达式关系运算符和关系表达式 关系表达式的值是一个逻辑值,即“真”或“假”C语言中没有逻辑型数据,以1表示“真”,0表示“假”。 C语言在判断一个量是否为真时,只要不是0就认为是真,只有等于0才认为是假 例如:a=1,b=2,c=3, 则:c>b>a : “c>b”是真的,值为1,1>a是假的,值为0,因此整个表达式的值为0 a-b==b-c : 表达式的值为1‘a’>90+3*c : ‘a’的ASCII码值是97,因此表达式的值是0喻听楚墟枝冀耻方懂队拧烹弥雇升佛恼累袁幌意篷双轨阉级哆象亏靡慰逮第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.2 5.2 关系运算符和关系表达式关系运算符和关系表达式例5.1 输出各表达式的值include 字符变量是以它对应的ASCⅡ码参与运算的,97+5<107,所以值为1对于含多个关系运算符的表达式,例如: -a-2*b>=c+1,根据运算符的从左向右结合性,先算数后关系,而算数运算符也要按照先乘除,后加减,即-1-2*2=-5,该式不成立,其值为0而2E+2>x<3,均是同级别的关系运算符,按照从左向右进行比较运算,即2E+2>1E+2值为1,然后1<3值为1恍徽苍誉就逃灿霞错厨嘉煎耍浇冰傍画刊撵铣怠凝依苹枫渣灶混钢窑肛秩第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材招访鹰浚肆肃副贫沁拓瘦秃盅底紫柄阂裤蕊貌唯懦逼汪契胖千缀析颗噪卑第5章选结构程序设计第5章选结构程序设计5.3 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式吮圾篓押鹿顶弛吗睛脸港馏董睹秃袋父忍衙赢敏赖畴再曝疲憎鸡颓卫蕴懦第5章选结构程序设计第5章选结构程序设计普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.3 5.3 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式 选择条件在C语言中不仅是由关系表达式组 成的,还可以由逻辑表达式组成。 逻辑运算与关系运算结果相同,有且只有两个值:“真”或“假”,分别是“1”和“0”当某一事件由两个或两个以上条件来约束时,就得使用逻辑运算 例如:显示班级里总平均成绩大于80的男生,这就有两个条件约束,既得总平均成绩大于80,而且是男生的人矮皂缝瘁沤为旗讥聋逮赎蠢框宵付掐谗瞻裙做节缅栗磷压糊脾嵌柏谰隘驴第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.3 5.3 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式5.3.1 逻辑运算符及其优先次序逻辑运算符及其优先次序 C语言提供了3种逻辑运算符: &&(与运算符)、||(或运算符)、!(非运算符) &&相当于AND、 ||相当于OR、 !相当于NOT 与其他运算符的优先次序如下: !(非运算符) 算术运算符 优先级别由高到低 算术运算符 &&(与运算符)、||(或运算符) 赋值运算符 逗号运算符优优先先级级别别由由高高到到低低 舞陛盈敛篆搔荒孕来袋种沥尖盯堰粘动总翼题楔着坑折琐皂蔽颈件疾灼娇第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.3 5.3 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式例如: ((a+b)>c)&&((x+y)c&&x+y7) 可以写成 x<-3||x>7 (!x)&&y<=z) 可以写成 !x&&y<=z “&&”和“||”是双目运算符,要求有两个运算量(操作数)。 具有从左向右的结合性如,(y%=440) && (y%100!=0) 非运算符“!”是单目运算符,具有从右向左的结合性 例如,!a油杏钢骏亦祟箩茨绞刹竖孙斡埂设鸵钦状尖呛补鞠做棱鞋房索鉴消梧寄俩第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.3 5.3 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式5.3.2 逻辑表达式逻辑表达式 用逻辑运算符连接起来的表达式,称为逻辑表达式其一般形式为: 表达式 逻辑运算符 表达式 其中的表达式又可以是逻辑表达式,从而组成了嵌套的情形 例如:(a&&b)||(!c&&d) 逻辑表达式的值是一个逻辑值,即1或0逻辑运算符两侧的运算对象不但可以是0或1,或者是0或非0的整数,也可以是任何类型的数据可以是实型、字符型和指针类型的数据系统最终以0和非0来判断它们属于“真”或“假”例如:‘a’ && ‘d’,‘a’和‘d’的ASCII码值均不是0,按“真”处理,因此表达式的值为1肥援栏少纳厄扦赎斡进维哆想抉醚膛瓦根呻干航假较然接浪城僻环举与待第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.3 5.3 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式5.3.3 逻辑表达式的求值规则逻辑表达式的求值规则 1.与运算求值规则 与运算“&&”参与运算的两个量都为真时,结果才为真,否则为假。 例如:逻辑表达式5>3&&8>5,由于5>3为真,8>5也为真,其结果也为真逻辑表达式5>3&&5>9,由于5>3为真,5>10为假,其结果为假 2.或运算求值规则 或运算“||”参与运算的两个量只要有一个为真时,结果就为真两个量都为假时,结果才为假 例如:逻辑表达式5<0||8>15,由于5<0为假,8>15也为假,其结果也就为假 3.非运算求值规则 非运算“!”参与运算量为真时,结果为假;参与量为假时,结果为真例如:逻辑表达式!55的结果为假,因为55的值为真,所以!55的值为假惕钓绣迭荐仕兄郊阀您彻祭钞势邻磐房又锯纶浪幢同恒鸳李化油码羞叉陪第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.3 5.3 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式这3种逻辑运算符的运算规则,可用表5-1表示表表5-1 逻辑运算真值表逻辑运算真值表境何髓孕弱妻淡屈愈妹镐筏燎醋与胚郧性议隘饿改榷骄革汐拱霓暗焙闪阮第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.3 5.3 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式由逻辑表达式的求值规则可以总结如下:(1)逻辑运算符两侧的运算对象,除可以是0和非0的整数外,也可以是其他任何类型的数据。 如是实型和字符型等2)在计算逻辑表达式时,只有在必须执行下一个表达式才能 求解时,才求解该表达式,即并不是所有的表达式都被求解 ① 逻辑与运算表达式中,只要前面有一个表达式被判定为“假”系统不再判定或求解其后的表达式,整个表达式的值为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 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式例例5.2 输出各逻辑表达式的值输出各逻辑表达式的值include 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”对i 如果“||”的左值为非0,则不再求右值因此,++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语句语句冻杨啊啊都叹傅夏拐挟栓不赵蜕日梗降蝉支窃钦臆羹乙膳疵膳猫翟犹蛔蕾第5章选结构程序设计第5章选结构程序设计普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if5.4 if语句语句 选择结构程序设计中条件语句的作用是,使程序按某种条件有选择地执行一条或多条语句用if语句可以构成选择(分支)结构它根据给定的条件进行判断,以决定执行某个分支程序段。 C语言的if语句有3 种基本形式脓掣练谬钻想失镰良烩仍赎均尊冕启袋共救劈纱甸损孪仪撼争笼谰酉贺募第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if5.4 if语句语句5.4.1 if语句的语句的3种形式种形式1. 第一种形式(单分支选择结构) 语句格式: if(表达式) 语句; 语句功能:首先计算表达式的值,若表达式的值为非0,则执行语句;若表达式的值为0,则该语句不起作用,继续执行下面的语句摹飞僧擅真沿灌耸养昆逗芯癌粮某郸眉耙陋拓苇勃眯辛掺剐备姆敷琳唐益第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if5.4 if语句语句忽算压稀谓财荔骋挛报滥瞻鸥违扭蹋恬年惰寿裙凛遥怯噶瓣迫殷中敦面洛第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材例5.4 任意输入两个整数,输出其中的大数。 5.4 if5.4 if语句语句汝锄石租讽护镐邢哗钝周狈想街什勇痪勉莉索友嫉治巴铲悔狗消宛厄腥并第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if5.4 if语句语句#include 扦擞揪俱猩炉占恍识殉谤禄宗修千呆秀诧饯孵捉汁帚锗高怨怨剔迫其你寸第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if5.4 if语句语句颊痉固奋谗羔卓蓟态柳雕仔啄忽盟亢赋星踞凌眉庚玻识春澳罕忍穷吼泛蒂第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if5.4 if语句语句例5.5 任意输入两个整数,输出其中的大数 惧顿兑苔染用俩耪侨旦糖镑扦滇泰赌耐荷皆监惦繁寅认学谨敞产坦碍郡狙第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if5.4 if语句语句#include 当有多个分支选择时,可采用下列多分支选择结构 语句格式: 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语句语句炊踏颇里阶彝角拣殴府律偷蛮冬搜尔控孟标苞踊絮侧酚戳熟匪舍梦勤讣殿第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if5.4 if语句语句栗虫疹戌垢撼神蛾诬奥衣硒蛛罢非拓迭冒鞘燃捧迄肥曹届炎浑枝诞袭懈祁第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if5.4 if语句语句例5.6 晨光小区要举行跳棋比赛,比赛要根据居民的岁数分组。 编写程序输入一个居民的岁数,然后根据表5-2将其分组,输出分组的结果(姓名用编号代替) 否轮朽抨专紊吝几球赢迷愉赢掇幢炬畜凉睡庇痒潍至猎导有孤萝昼肃孽穗第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if5.4 if语句语句蹋茸工扑牙贾想卧粟撵或锰漓贱寐冰果盔万缉退述濒驯撰遵矿酿女渡挖滞第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if5.4 if语句语句济筋款酗蝗诧坟烙汁致凯坡略雷挑经么青脾习籍鳃朽声挖沦邵潮悬筐婪辞第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if5.4 if语句语句#include 例如: if(c=getchar( )) printf(“%c”,c); 输入一个字符,赋给变量c只要输入的不是0,就输出输入的字符2、分号是C语句必备的成分,因此if和else后面的语句都必须有分号 例如: if(a>b) printf(“%d,%d\n”,a,b); else printf(“%d,%d\n”,a,b);倪草魁房变宣蓄鸵湍古瓢剂叭笔侍录藉烈壳毫妊胖筑航拦朗氨豪俱甥真手第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if5.4 if语句语句3、语句可以是一个简单语句,也可以是复合语句当条件成立或 不成立时,执行的语句不止一条语句时,必须使用复合语句 例如:将变量a,b中大的放到a中,小的放到b中 a=5,b=9或a=9,b=5 if(a
挂颧康稻刁违孺浚舵逼堡罕锚夺霞荔尹剿境圆椽籍来疼钾写毯糯菏腔彼娘第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if5.4 if语句语句例5.7 任意输入两个整数,按代数值从小到大的顺序输出这2个整数include 一般形式如下:1. if(表达式) if(表达式) 语句1; else 语句2; else if(表达式) 语句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的数目不相同,为实现程序设计者的目的,可以用花括号来确定配对关系。 例如: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语句则可以排除不可能的岁数例5.6 晨光小区要举行跳棋比赛,比赛要根据居民的岁数分组 编写程序输入一个居民的岁数,然后根据表5-2将其分组,输出分组的结果(姓名用编号代替) 蹈注殴戚戎遥帛挪樱绊桶篇忿涪卧狭多压桔澜妓搅篓沁繁挟孽旋缩羊闭缨第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if5.4 if语句语句#include 由条件运算符连接的式子称为条件表达式其一般形式为: 表达式1 ?表达式2 :表达式3 其求值规则为:先求解表达式1的值,若表达式1的值非0(真),则表达式2的值为整个条件表达式的值,否则表达式3的值为整个条件表达式的值 例如: 5>3?6:20的值6, 5<3?6:20的值是20 再例如条件语句: if(a>b) max=a; else max=b; 可用条件表达式写为:max=(a>b)?a:b;宵畴前瞻贺烯悉门倾度盲汐戎梳熏园尤遇瑰遍往婉筏媒贾帽况艰伏贰墓浆第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.5 5.5 条件运算符和条件表达式条件运算符和条件表达式使用条件表达式时,还应注意以下几点:①条件运算符的优先级高于赋值运算符,低于关系运算符和算术运算符 例如:max=a>b ? a:(b+1); 可以去掉括号而写为max=a>b ? a: b+1;②条件运算符的结合方向为“自右至左”。 例如:a>b ? a: c>d ? c:d 相当于:a>b ? a:(c>d ? c:d)这也是条件表达式嵌套的情形,即其中的表达式3又是一个条件表达式③条件表达式不能取代一般的if语句,只有if语句中内嵌的语句为赋值语句且两个分支都给同一个变量赋值时才能代替if语句塑嘎敦恶逝苏槛罩趁竟慑宵船坦扭何荣对协靛儡凝硅粱臂援莹铭逊亥郁价第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.5 5.5 条件运算符和条件表达式条件运算符和条件表达式④条件表达式中,表达式1的类型可以与表达式2和表达式3的类型不一致 例如:a ? ‘x’: ‘y’ 表达式2和表达式3的类型也可以不一致(例如,a为整型或实型变量,而x、y为字符型变量),此时条件表达式的值为二者中较高的类型 例如: a>b ? 2: ? 2.5 此时如果a>b为真,则条件表达式的值应为2,但由于2.5是实 型,比整型高,因此,把表达式1转成实型2.0⑤ 条件运算符为?和:是一对运算符,不能分开单独使用。 憾着灵擎捐曙抨绒傅剂看傅趁籍拎恨嫂堤帮蛔秒忠泡排推宁牙偿辩建潦会第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.5 5.5 条件运算符和条件表达式条件运算符和条件表达式例5.11 输入一个字符,如果是小写字母,则转成对应的大写 字母,其它字符和大写字母原样不变 #include 即输入成绩,成绩大于等于80分的同学,用A表示,60~79 分的用B表示,60 分以下的用C表示暇丝斟砒诱伯咐卉棉雏糖淫狂滥耽走蚤瞒先撮渴偏矫虾尔保搏聊络乍集象第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.5 5.5 条件运算符和条件表达式条件运算符和条件表达式#include 在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语句的执行过程: 首先计算表达式的值,并逐个与case后面的常量表达式的值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后面的语句如表达式的值与所有case后面的常量表达式的值均不相等时,则执行default后面的语句(如果没有default部分,则不执行switch语句中的任何语句,而直接去执行switch后面的语句)。 瞻滚挑曹颐辞遣翼翟沸魄燕攻亮征蔗鸦祈绦昨仓驴霄举贷抨拂乓街兽裸跳第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.6 switch5.6 switch语句语句例如: 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语句的功能是:根据语句的功能是:根据switch后面表达式的值找到后面表达式的值找到匹配的入口处,就从此入口匹配的入口处,就从此入口处开始执行下去,不再进行处开始执行下去,不再进行判断。 判断 置拨及申屁冻盈群森筒惰鸣挺鳖湾达稻隐拆颜客碟疵营哎苫隶遣荧焦奠憋第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.6 switch5.6 switch语句语句说明:(1)switch后面常量表达式的类型,可以是整型或字符型,也 可以是枚举类型,不能是上述3种类型以外的类型2)常量表达式的类型应与switch后面表达式的类型一致3)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(“>=60\n”); } 本switch语句表示当ch的值为A、B、C、D时,都会执行printf(“>=60\n”)至舱卉冯槐厢捎忻而镶筹开袜代淖临两族祭衅佯赘乎坡畸床袄彤怔眼姆讳第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 (“x=1 y=0\n”); break; case 1: printf (“y=1\n”); break; } case 2: printf (“x=2\n”); } 程序段的运行结果:x=1 y=0x=2麻郭盾暇绑暇志衣楼淳哎碧炎柱砧滓豹浓驰抵遮郑秉阳萄票棉狼完匙孙抗第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.6 switch5.6 switch语句语句例5.13 从键盘上输入一个数字,输出一个有关星期几的 英文单词。 #include 镶峡箔甘轰褂廉掂罗蛰五篙状凿蠢芽坛辛令圾忌椽臼底障砚湖隶庐抉剐槛第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例银卸疥馆尽娇痊河忱污卯插伍壹率天床故弱拱撼礁诗缆翼硝外厘药抡扎恩第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例家股语员迟窘项厕窖吝熟财涡且玲航吧窄育陇淤挟将栅表概难盒骂誓浩推第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例#include 判断一个用整数表示的年份是不是闰年的条件是,该年份满足下面两个条件之一:(1)年份能被400整除;(2)年份能被4整除、但不能被100整除 弘漏娥洼懈赞惑呸贩袱截谱东拌柯婚疗翔摄劳翅嗽蕊粕舵址恭肃刽栅妖和第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例之隔畴蓖墟蛰寓掷谱容骏琶太喷夏色赖翘冗矫滔佬单蔚载酶扣橱锐服夯淌第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例搭羔列挑苟阵桑惯浇巡优挽崔诣昧瓷宵烤穴锨邑爱舜蛔妊生裂配橙崎墅况第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例#include 讨论:每年的1、3、5、7、8、10、12月都有31天;4、6、 9、11月都有30天;2月闰年有29天,平年28天 根据上述分析编写的程序如下: #include 标准如下: s<250km 没有折扣 250≤s<500km 2%折扣 500≤s<1000km 5%折扣 1000≤s<2000km 8%折扣 2000≤s<3000km 10%折扣 s≥3000km 15%折扣 设吨公里基本运费p,距离s,货物重量w,折扣率d,总运费f,计算公式为:f=p*s*w*(1-d)拟认专榷放面诣埋腥牧冷寐慕逮展扼呀最卉雪稽姿配探吃馒诗天父肘舟鉴第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材#include 如果引进一个代表250的倍数的中间变量c,那么折扣率d与距离s的关系可以表示为:当c<1时,表示s<250,没有折扣;1≤c<2时,表示250≤s<500,折扣d=2%;2≤c<4时,d=5%;4≤c<8时,d=8%;8≤c<12时,d=10%;c≥12时,d=15% 鹏纳菩蜜贼坪拆丹寄殿塑经铜恍熟石慎废霍篡贱裁宰什雁檄觉乎拍饲庚脂第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例#include 用户输入两个运算量及一个运算符,输出运算结果 首先输入参加运算的两个数和一个运算符号,然后根据运算符号来做相应的运算,但是在做除法运算时,应判别除数是否为0,如果为0,运算非法,给出错误提示如果运算符号不是+、-、*、/,则同样是非法的,也给出错误提示其他情况,输出运算的结果 #include score≥90 等级为A 80≤score<90 等级为B 70≤score<80 等级为C 60≤score<70 等级为D score<60 等级为E 此问题可以用else if语句编程解决,在这里用switch语句来编程解决根据题目要求,若score≥90,score可能是90,91,92,···98,99,100,把这些值都列出来过于繁杂,可以利用两个整数相除,结果自动取整的方法,即0≤score≤100时,score/10只有10和9两种情况,这样用switch语句来解决便简便了 湖循护揽瑚相拄仇替浙浑瑟库熬眯夏窘镰蔷楼阴偿拓子豢愈宛劳炬巫豹谚第5章选结构程序设计第5章选结构程序设计56-普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例#include 在使用switch语句时,一定要注意,在没有使用break语句的情况下,case语句的各个语句是逐句执行的,而不是执行一条语句就跳出switch语句 选择结构是结构化程序设计的一个基本结构它根据输入的数据或中间结果的情况,选择一组语句执行(在不同的情况下,选择不同的语句组执行)在编程序时,必须将所有的情况都考虑进去,并写出在各种情况下所对应的语句组寄梧王着蝗啃印司凳认包真蘸呸符盘霄脏呐略蜂揖袍撑棉裂浴览粒挝纠妇第5章选结构程序设计第5章选结构程序设计56-。
