好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

第5章选结构程序设计.ppt

101页
  • 卖家[上传人]:工****
  • 文档编号:586325976
  • 上传时间:2024-09-04
  • 文档格式:PPT
  • 文档大小:619KB
  • / 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 #include void main(){ float a,b,c,p,s; printf("input a,b,c="); /*输出提示字符串input a,b,c= */ scanf("%f,%f,%f",&a,&b,&c); /* 通过键盘输入三角形的三边a,b,c的值 */ if(a<0||b<0||c<0||(a+b

      若满足,则计算并输出结果;反之,只要其中有一个条件不满足,就不能构成三角形,程序输出“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==y5>3,在C语言中,先计算8>5的结果为1,也就是为真,接着再来计算1>3的结果为0,也就是为假当然这个计算过程与原式在数学中的含义(8>5并且5>3)是不一样的,这一点值得我们注意。

      胆偏备瘸焦斩瘴操讹专厦易雾羔琉俯涪矿菌寨留纂粉翟拇妓六虚庚蕉摈挝第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 void main(){ char ch='k'; int a=1,b=2,c=3; float x=1E+2,y=6.5; printf("%d %d %d\n",a+5=c+1,ch-10>=97); printf("%d %d\n",2E+2>x<3,y-0.5>=y+0.5);}铜悟恭磐割股弗趾赶腥跺唾蒲大满挟呐野狄招失儿谎帛瓮唬北住勘间洲肮第5章选结构程序设计第5章选结构程序设计56- 普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.2 5.2 关系运算符和关系表达式关系运算符和关系表达式程序运行结果:1 0 11 0程序说明: 在程序中计算并输出了各种关系运算符的值。

      字符变量是以它对应的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 void main(){ char c='k'; int i=1,j=2,k=3; float x=3e+3,y=0.95; printf("%d, %d\n",!x*!y,!!!x); printf("%d, %d\n",x||i&&j-3,i

      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”对ivoid main(){ int a=1,b=1,c=1; printf("%d\n",++a||++b&&++c); printf("%d\t%d\t%d\n",a,b,c); printf("%d\n",++a&&++b||++c); printf("%d\t%d\t%d\n",a,b,c); printf("%d\n",--a||--b||--c); printf("%d\t%d\t%d\n",a,b,c); printf("%d\n",--a&&--b&&--c); printf("%d\t%d\t%d\n",a,b,c); printf("%d\n",--a||--b&&--c); printf("%d\t%d\t%d\n",a,b,c);}亚艾襄趟汛悸貉镶懊阴培雁仟瓜须矢骸吃福骏寸拌菏竖斧番俏僧平赔枚嗓第5章选结构程序设计第5章选结构程序设计56- 普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.3 5.3 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式程序运行结果:程序运行结果: 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,则不再求右值因此,++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 void main(){ int a,b,max; printf("input a,b="); scanf("%d %d",&a,&b); max=a; /* 把a先赋予变量max */ if(max

      扦擞揪俱猩炉占恍识殉谤禄宗修千呆秀诧饯孵捉汁帚锗高怨怨剔迫其你寸第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 void main(){ int a,b; printf("input a,b="); scanf("%d %d",&a,&b); if(a>b) printf("max=%d\n",a); else printf("max=%d\n",b);}程序运行结果:input a,b=33 55↙max=55 迪饮歇福赐嘱桂避赁衍透簧揽桐疟华吝泵侈绥揖雄疮恬概随峰昔干畔粳螟第5章选结构程序设计第5章选结构程序设计56- 普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if5.4 if语句语句3. 第三种形式(多分支选择结构) 前两种形式的if语句一般用于两个分支的情况。

      当有多个分支选择时,可采用下列多分支选择结构 语句格式: 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 void main(){ int age,numb; char group; printf("input Number:"); scanf("%d",&numb); printf("input age:"); scanf("%d",&age); if(age>55) /* 岁数大于55岁在第4组 */ group='4'; else if(age>40) /* 岁数大于40岁在第3组 */ group='3'; else if(age>17) /* 岁数大于17岁在第2组 */ group='2'; else group='1'; /* 岁数小于17岁在第1组 */ printf("The No.%d is in the group %c\n",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,就认为是真,只有0时才认为是假,因此表达式可以是任意 类型的表达式,这是C语言与其它高级语言的不同之处。

      例如: 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 void main(){ int a,b,t; printf("input a,b="); scanf("%d %d",&a,&b); if(a>b) { t=a; a=b; b=t; } /* 实现a和b的互换 */ printf("%5d%5d\n",a,b);}程序运行结果:input a,b=55 33↙33 55 赠熙脯城扛淌碱患悟腻曰触乓种孙赐两唬同郭因更牧渗企躇粤窜秀锯堆淘第5章选结构程序设计第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(a>b) /* 实现a和b的互换,即a是a,b中的小者 */ { t=a; a=b; b=t; } if(a>c) /* 实现a和c的互换,即a是a,c中的小者,因此a是三者中最小者 */ { t=a; a=c; c=t; } if(b>c) /*实现b和c的互换,即b是b,c中的小者,也是三者中次小者*/ { t=b; b=c; c=t; } printf("%5d%5d%5d\n",a,b,c);}程序运行结果:input a,b=55 33 66↙33 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(表达式) 语句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 void main( ){ int age,numb; char group; printf("input number:"); scanf("%d",&numb); printf("input age:"); scanf("%d",&age); if(age>0 && age<=150) /* 判别输入的岁数是否在判别输入的岁数是否在1~~150之间之间 */ { if(age>55) /* 岁数大于岁数大于55岁在第岁在第4组组 */ group='4'; else if(age>40) /* 岁数大于岁数大于40岁在第岁在第3组组 */ group='3'; else if(age>17) /* 岁数大于岁数大于17岁在第岁在第2组组 */ group='2'; else group='1'; /* 岁数小于岁数小于17岁在第岁在第1组组 */ printf("The No.%d is in the group %c\n",numb,group); } else printf("Data error!\n"); /* 提示输入数据有误提示输入数据有误 */}程序运行结果:程序运行结果: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- 普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.4 if5.4 if语句语句#include #include void main(){ float x,y; printf("input x="); scanf("%f",&x); if(x<=2) y=x*(x-3)+2.5; else if(x>7) y=(x-5)/3; else y=sqrt(7-x)+log(x-2); printf("x=%7.3f y=%7.3f\n",x,y);} 程序运行结果:程序运行结果:input x=1↙ ↙x= 1.000 y= 0.500input x=8↙ ↙x= 8.000 y= 1.000 昌缚提路酿麦袍还无钉诅刷纲理夏刀诡胸煽逆垛劣奴物岗写垢拦徊椽很颅第5章选结构程序设计第5章选结构程序设计56- 普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材招访鹰浚肆肃副贫沁拓瘦秃盅底紫柄阂裤蕊貌唯懦逼汪契胖千缀析颗噪卑第5章选结构程序设计第5章选结构程序设计5.5 条件运算符和条件表达式条件运算符和条件表达式册筑扼蜡趾骗干铲舜械买钧听吻翻湖豆埔彬剧助滥忻毅铭唯喜党肌喊础诸第5章选结构程序设计第5章选结构程序设计 普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.5 5.5 条件运算符和条件表达式条件运算符和条件表达式 条件运算符为?和:,它是C语言提供的惟一一个三目运算符,即有三个参与运算的量。

      由条件运算符连接的式子称为条件表达式其一般形式为: 表达式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 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 char:A↙ ↙A 党帚湍旺管选鸽屠噬各船茄吹套萤乙剪遥墟胚尹愿刮庭明克逝摹壬且税伯第5章选结构程序设计第5章选结构程序设计56- 普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.5 5.5 条件运算符和条件表达式条件运算符和条件表达式例5.12 根据输入的百分制成绩,输出相应的分数等级A、B、C。

      即输入成绩,成绩大于等于80分的同学,用A表示,60~79 分的用B表示,60 分以下的用C表示暇丝斟砒诱伯咐卉棉雏糖淫狂滥耽走蚤瞒先撮渴偏矫虾尔保搏聊络乍集象第5章选结构程序设计第5章选结构程序设计56- 普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材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 %c\n",score,grade);}程序运行结果:input score=55↙The 55 is belong to Cinput score=95↙The 95 is belong to A谈摄锈壬等蛹井陋阎劝气座坑凰盖卵辜呀娄把茁差经辕蹋衡奔崎狠蓟腊规第5章选结构程序设计第5章选结构程序设计56- 普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材招访鹰浚肆肃副贫沁拓瘦秃盅底紫柄阂裤蕊貌唯懦逼汪契胖千缀析颗噪卑第5章选结构程序设计第5章选结构程序设计5.6 switch语句语句爸柞以燥薛剐隆德触斩静更疵福谴牲自竟况养冰瑰蛰途吟抱叉骂尽严襟观第5章选结构程序设计第5章选结构程序设计 普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.6 switch5.6 switch语句语句 前面介绍的if语句,常用于两种情况的选择结构,要表示两种以上条件的选择结构,则要用if语句的嵌套形式,但如果嵌套的if语句比较多时,程序比较冗长且可读性降低。

      在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 void main() { int a; printf("input integer number: "); scanf("%d",&a);筒嚎匹差辞曳循佯寸收梅签骑崖牟亿坪浓筛懈院操醚豁待拈清瓜前武糕鉴第5章选结构程序设计第5章选结构程序设计56- 普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.6 switch5.6 switch语句语句 switch(a) /* a逐个与case后面的常量比较 */ { case 1: printf("Monday\n"); /* 如果a==1则输出Monday */ break; /* 跳出switch语句 */ case 2: printf("Tuesday\n"); break; case 3: printf("Wednesday\n"); break; case 4: printf("Thursday\n"); break; case 5: printf("Friday\n"); break; case 6: printf("Saturday\n"); break; case 7: printf("Sunday\n"); break; default: printf("Input error!!\n"); /*如果输入不是1到7的数字,显示错误信息*/ } }鸥首辱蛤智蚀贰去泞挂霜帮保猛猫背汁卜唁该陷邪常钾其反码荷革抛哄框第5章选结构程序设计第5章选结构程序设计56- 普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.6 switch5.6 switch语句语句程序运行结果:input integer number: 5↙Fridayinput integer number: 55↙Input error!! 克攻彰割畜亭获巍条澡宇桶盂啊粉偿胡羡虾沙穆控贝睹灿颐雄种抬毒匠沙第5章选结构程序设计第5章选结构程序设计56- 普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材招访鹰浚肆肃副贫沁拓瘦秃盅底紫柄阂裤蕊貌唯懦逼汪契胖千缀析颗噪卑第5章选结构程序设计第5章选结构程序设计5.7 程序举例程序举例梁捏审执浮飞瘴蓖甚哆墩臃翟阅沉劝僳贿瘩塔诛咬脾域桌疑椭麦炕桐重雕第5章选结构程序设计第5章选结构程序设计 普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例例5.14 编写一个程序,求一元二次方程的根。

      镶峡箔甘轰褂廉掂罗蛰五篙状凿蠢芽坛辛令圾忌椽臼底障砚湖隶庐抉剐槛第5章选结构程序设计第5章选结构程序设计56- 普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例银卸疥馆尽娇痊河忱污卯插伍壹率天床故弱拱撼礁诗缆翼硝外厘药抡扎恩第5章选结构程序设计第5章选结构程序设计56- 普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例家股语员迟窘项厕窖吝熟财涡且玲航吧窄育陇淤挟将栅表概难盒骂誓浩推第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=%f\n",-c/b); /* 直接输出一个实根 */ else涧幻峪温迸桅昨策怯泌皿闲肥师姜舷胰泄姓丢别江统挠巍香迎蕴魂肥轰柄第5章选结构程序设计第5章选结构程序设计56- 普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例 { d=b*b-4*a*c; if(fabs(d)<=1e-6) printf("x1=x2=%f\n",-b/(2*a)); /* 输出两个相等的实根 */ else { if(fabs(d)>1e-6) { x1=(-b+sqrt(d))/(2*a); x2=(-b-sqrt(d))/(2*a); printf("x1=%f\tx2=%f\n",x1,x2); /* 输出两个不相等的实根 */ } else { r=-b/(2*a); p=sqrt(-d)/(2*a); printf("x1=%f+%fi\nx2=%f-%fi\n",r,p,r,p); /* 输出两个共轭复根 */ } } }} 群钢错眩科栖呸吸原伎姬儒牧证俱牙信耐佐六惰叫苹暂钡沫楞捎释茶鸯枢第5章选结构程序设计第5章选结构程序设计56- 普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例程序运行结果:input a,b,c=2,6,1↙x1=-0.177124 x2=-2.822876input a,b,c=1,3,5↙x1=-1.500000 + 1.658312ix1=-1.500000 - 1.658312iinput a,b,c=2,4,2↙x1=x2=-1.000000input a,b,c=0,0,1↙No answer! 品挟祷坐嗣对酮兜晾爱蜂元忘幸舆疵侈湛玛溺褂隶譬现拣叫涎蔑笺刊绿矗第5章选结构程序设计第5章选结构程序设计56- 普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例例5.15 编写一个程序,从键盘上输入一个用整数表示的年份,判断该年份是否为闰年。

      判断一个用整数表示的年份是不是闰年的条件是,该年份满足下面两个条件之一:(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 void main(){ int year,flag; printf("input a year:"); /* 提示输入年份 */ 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; /* 置为非闰年 */ } 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:2004↙2004 is not leap year.input a year:2005↙2005 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&&year%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 void 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: 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=%d\n",days);} 程序运行结果:input year and month:2008,2↙days=29瞧建发荚霄年忍太院冯搏畜野姓玖挛拘指槐秸奈砖垛滴烘芜击牢翘福哥肥第5章选结构程序设计第5章选结构程序设计56- 普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例例5.17 某运输公司对外承担货运,计算运费时,运输距离(s)越长,折扣越多。

      标准如下: 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 void main(){ float p,w,d,f; int c,s; printf("input p,w,s="); scanf("%f,%f,%d",&p,&w,&s); if(s<250) d=0; else if(s<500) d=0.02; else if(s<1000) d=0.05; else if(s<2000) d=0.08; else if(s<3000) d=0.10; else d=0.15; f=p*s*w*(1-d); printf("f=%10.2f\n",f);}5.7 5.7 程序举例程序举例程序运行结果:input p,w,s=5,8,1555↙f=572240.00立廓奶绣攒贺翠瘫笨慧琼肥赐曙志鹃徽石唬猪豫娃薯抉韦绑轮臆旋挨淆钨第5章选结构程序设计第5章选结构程序设计56- 普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例如果我们把折扣的标准用图5.9表示,从图中我们可以看出:折扣的变化点都是250的倍数。

      如果引进一个代表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 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; case 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.2f\n",f);} 闯乌厌各俏踪他粳杖洼徒剥淹栅箔锚倒滩武涛剑硼资棕怕粱底翼疯蚊捅沂第5章选结构程序设计第5章选结构程序设计56- 普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例例5.18 四则运算程序。

      用户输入两个运算量及一个运算符,输出运算结果 首先输入参加运算的两个数和一个运算符号,然后根据运算符号来做相应的运算,但是在做除法运算时,应判别除数是否为0,如果为0,运算非法,给出错误提示如果运算符号不是+、-、*、/,则同样是非法的,也给出错误提示其他情况,输出运算的结果 #include void main( ) { float a,b,result; int flag; char ch; flag=0; /*运算合法的标志,置0为合法,置1为非法*/ printf("input expressin: a +(-,*,/) b\n"); scanf("%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("divisor is zero!\n"); /* 显示除数为0 */ flag=1; /* 置为运算非法标志 */ } else result=a/b; /* 除法运算 */ break; default: printf("input error!\n"); /* 显示非法运算符 */ flag=1; /* 置为运算非法标志 */ } if(!flag) printf("%f %c %f=%f\n",a,ch,b,result);} 漠柒减丽垣讼湿缓寅褐录谬僵筏痞忿猿经橇婉贮闹酶搭慑露充缘手敬棠津第5章选结构程序设计第5章选结构程序设计56- 普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例程序运行结果:input expressin: a +(-,*,/) b3+5↙3.000000 + 5.000000=8.000000input expressin: a +(-,*,/) b9/0↙divisor is zero!input expressin: a +(-,*,/) b55!66↙input error! 裕扑桶擞钙峭削猫琢李屈拼划垄紫蒂奢商诉澄摈搬词伶澈嘎忠胡旅蹲肃柒第5章选结构程序设计第5章选结构程序设计56- 普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例例 5.19 编写根据输入的学生成绩判断等级的程序,即从键盘上输入一个学生的百分制成绩赋值给变量score,按下列要求输出其等级。

      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 void main( ){ int score,grade; printf("input a score(0-100):"); scanf("%d",&score); grade=score/10; 灯歼满古惑哑套娟躺卑娠梢喳务企伴部岳豢纯诚笋啊坞奎淤策导侮涡菲哑第5章选结构程序设计第5章选结构程序设计56- 普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例switch(grade) { case 10: case 9: printf("%d: A\n",score); break; /* score≥90,等级为A */ case 8: printf("%d: B\n",score); break; /* 80≤score<9,等级为B */ case 7: printf("%d: C\n",score); break; /* 70≤score<80,等级为C */ case 6: printf("%d: D\n",score); break; /* 60≤score<70,等级为D */ case 5: case 4: case 3: case 2: case 1: case 0: printf("%d: E\n",score); break; /* score<60,等级为E */ default: printf("input error!\n"); /* 显示输入错误信息 */ }} 瞧皿献胳熏聪盗写米衡祸纹以晴辅酉苏媳母膏尚眷鄂饥袋企同肋扫岸巴氰第5章选结构程序设计第5章选结构程序设计56- 普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材5.7 5.7 程序举例程序举例程序运行结果:input a score(0-100):55↙95:Ainput a score(0-100):55↙55:Einput a score(0-100):=↙input error! 咬侥剩媚笺抄蛾孽伏伦灼唐粉菩期滇驶佐伺戳孟宦渠叠候嫉愿朗绝筏慢袖第5章选结构程序设计第5章选结构程序设计56- 普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材本本 章章 小小 结结 本章的重点是if语句的使用,要熟练掌握if语句的几种形式,还要理解关系运算符和关系表达式、逻辑运算符以及逻辑表达式。

      在使用switch语句时,一定要注意,在没有使用break语句的情况下,case语句的各个语句是逐句执行的,而不是执行一条语句就跳出switch语句 选择结构是结构化程序设计的一个基本结构它根据输入的数据或中间结果的情况,选择一组语句执行(在不同的情况下,选择不同的语句组执行)在编程序时,必须将所有的情况都考虑进去,并写出在各种情况下所对应的语句组寄梧王着蝗啃印司凳认包真蘸呸符盘霄脏呐略蜂揖袍撑棉裂浴览粒挝纠妇第5章选结构程序设计第5章选结构程序设计56- 。

      点击阅读更多内容
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.
      • QQ咨询
      • 微信客服
      • 返回顶部