《2 C语言上机-4选择结构-精品文档整理.pptx》由会员分享,可在线阅读,更多相关《2 C语言上机-4选择结构-精品文档整理.pptx(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、选择结构第四章 2 在现实生活中,需要进行判断和选择的情况很多 如果你在家,我去拜访你 如果考试不及格,要补考 如果遇到红灯,要停车等待 周末我们去郊游 70岁以上的老年人,入公园免票 3选择 关系运算符:用来对两个数值进行比较的比较运算符 语言提供种关系运算符: (小于) = (小于或等于) (大于) = (大于或等于) = (等于) != (不等于) 优先级相同优先级相同 (高高)优先级相同优先级相同 (低低) 4选择关系运算的结果是逻辑值: 如果条件成立,则运算的值为真,用1表示; 否则为假,用0表示。 C语言强加一条规则:数字可以参与逻辑计算,此时数字被自动转化成逻辑值,0为假,任意非
2、0的数字都为真。 5选择例例4-1 a=2 b=3 c=4,求下列结果,求下列结果(1)ab(2)+b=c(3)a+b=c+(4)a!=2(5)cba结果:01000 6逻辑运算符 3种逻辑运算符:&(逻辑与) |(逻辑或) !(逻辑非) &和|是双目(元)运算符 !是一目(元)运算符 逻辑表达式 用逻辑运算符将关系表达式或其他逻辑量连接起来的式子 7选择例题 判断年龄在13至17岁之内?age=13 & age=17 判断年龄小于12或大于65?age65 8选择例题用逻辑表达式来表示闰年的条件x能被4整除,但不能被100整除,或能被400整除的整数 (year%4=0&year%100!=
3、0)|year%400=0 9选择ab! a! ba & ba | b 真真假假真真真假假真假真假真真假假真假假真真假假逻辑运算的真值表逻辑运算的真值表 10选择 逻辑表达式的值是逻辑量“真”或“假” 在表示逻辑运算结果时 以1代表“真”,以0代表“假” 但扩展在判断一个量是否为“真”时 以0代表“假”,以非0代表“真” 11选择 修改后的逻辑运算真值表ab! a! ba & ba | b 非0非00011非000101假非01001假01100 12 关系、算术、赋值运算符的优先级算术运算符算术运算符 (高高)赋值运算符赋值运算符 (低低)关系运算符关系运算符 13条件运算符 条件表达式的一
4、般形式为表达式?表达式: 表达式 执行顺序: 求解表达式1 若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值 若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值max = ab ? a : b 等价于if (ab) max = a; else max = b; 14选择结构 C语言有两种选择语句:(1)if语句,实现两个分支的选择结构(2)switch语句,实现多分支的选择结构 15选择 if (表达式) 语句1 else 语句2 关系表达式关系表达式逻辑表达式逻辑表达式数值表达式数值表达式方括号内的部分为可选的方括号内的部分为可选的 16格式1
5、 1 if ( if (表达式) ) 语句1 1格式2 2 if ( if (表达式) ) 语句1 1 else else 语句2 2 17【例】对任意两个数,求出最大的一个数。int main() int x,y,max; scanf(%d%d,&x,&y); max=x; if (maxb) t=a; a=b; b=t; /交换a,b,令ac) t=a; a=c; c=t; /令ac) t=b; b=c; c=t; /令by ) printf(“max=%d,x); else printf(“max=%d,y); 【例】输入任意两个数,输出最大的一个数。 20 【习】输入两个实数,按由小到
6、大的顺序输出这两个数。 21左侧代码不是好代码,因为题目并没有要求改变a,b的值int main() float a,b,t; scanf(%f,%f,&a,&b); if(ab) t=a; a=b; b=t; printf(%5.2f,%5.2fn,a,b);#include main()float x,y;scanf(%f %f,&x,&y);printf(in order from smaller to bigger : ); if ( xy ) printf(%f, %fn, y, x); else printf(%f, %fn, x, y); 22选择格式3.if(表达式) 语句 e
7、lse if(表达式) 语句 else if(表达式) 语句 else if(表达式) 语句 else 语句m+1 (在else部分又嵌套了多层的if语句) 23例4-5 P52 要求按照考试成绩的百分制分数段输出等级,A等为90分以上,B等为8089分,C等为7079分 ,D为6069分,60以下为不及格。成绩的等级由键盘输入。if (x=90) Aelse if (x=80) B else if (x=70) C else if (x=60) D else No Pass 24选择【例】求分段函数的值 1 ( x 0 ) y= 0 ( x = 0 ) -1 ( x 0) y=1; else
8、 if (x=0) y=0; else y= -1;printf (“y=%d/n ”, y); 25switch语句的作用是根据语句的作用是根据表达式表达式的值,使流程跳转到不同的语句的值,使流程跳转到不同的语句。switch语句的一般形式语句的一般形式:switch(表达式表达式) case 常量常量1 :语句:语句1 case 常量常量2 :语句:语句2 case 常量常量n :语句:语句n default : 语句语句n+1Switchcase组合,只能描述可列举的多项选择,如一周组合,只能描述可列举的多项选择,如一周内有内有7天;但无法描述天;但无法描述”无法列举无法列举”的多选择,
9、如的多选择,如 (x0)。其功能可完全被多重其功能可完全被多重ifelse if else 代替。代替。 26 1. 按考试成绩的等级输出百分制分数段,A等为85分以上,B等为7084分,C等为6069分 ,D等为 60分以下 。成绩的等级由键盘输入。题意可理解为:输入A,输出:“ =85”输入B,输出:“ 7084”输入C,输出:“ 6069”输入D,输出:“ 60”例题例题 27int main() char grade; scanf(“%c”, &grade);switch(grade) case A: printf(85100n);break; case B: printf(7084n
10、);break; case C: printf(6069n);break; case D: printf(0)if (y0)z = 1;else z = 0;else z = -1;if (x0)if (y0)z = 1;else z = 0;else z = -1;z = -1;if (x0)if (y0)z = 1;else z = 0;z = -1;if (x0)if (y0)/最近的最近的z = 1;else z = 0;多多if结构结构 与与 if 语句的嵌套语句的嵌套一般分别实现一般分别实现单轴多区间单轴多区间 与与 多轴多轴 的分类的分类if (x100) .else if (x
11、90) .else if (x80) .else if (x60) .else .if (x0) if (y0) . else .else if (y0) . else .if语句的嵌套语句的嵌套形式:形式:if(t1)if(t2) 语句语句1else 语句语句2elseif(t3) 语句语句3else 语句语句4t1t2t3语句语句1语句语句2语句语句3语句语句4当当if多于多于else时,时,else总是与它上面的,最近的,同一总是与它上面的,最近的,同一复合语句中的,未配对的复合语句中的,未配对的if语句配对。语句配对。例例2的的if(t2)无须配对。无须配对。例例1:if(t1)if(
12、t2) 语句语句1elseif(t3) 语句语句2else 语句语句3例例2:if(t1)if(t2) 语句语句1elseif(t3) 语句语句2else 语句语句3例例1:if(t1)if(t2) 语句语句1elseif(t3) 语句语句2else 语句语句3例例2:if(t1)if(t2) 语句语句1/有无有无大不同!大不同!elseif(t3) 语句语句2else 语句语句3t1t2t3语句语句1语句语句2语句语句3t1t2t3语句语句1语句语句2语句语句3建议:当建议:当if和和else数目不同时,可以加数目不同时,可以加花括号花括号来确定配对关系。来确定配对关系。重要:配对的重要:配
13、对的if和和else 或或 不需要配对的不需要配对的if ,加上其附属语句,在语法上是,加上其附属语句,在语法上是一个整体,一个整体,相当于一条语句相当于一条语句(如以上的(如以上的6个框里的)。个框里的)。跟英语类似,一条语句跟英语类似,一条语句 可以是可以是 另一条语句另一条语句 的组成部分。这被称为嵌套。的组成部分。这被称为嵌套。但但C语言更强大语言更强大,支持多层嵌套。支持多层嵌套。例例1:if(t1)if(t2) 语句语句1else if(t3)语句语句2else 语句语句3 例例2:if(t1)if(t2) 语句语句1elseif(t3)语句语句2else 语句语句3 34习题:1
14、.给定整数,判定该数能否同时被给定整数,判定该数能否同时被6、9和和14整除整除.2.输入一个年号,判断该年号是否闰年输入一个年号,判断该年号是否闰年 .3.水仙花数是指一个三位整数,该数三个数位的立方和等于该数水仙花数是指一个三位整数,该数三个数位的立方和等于该数本身本身,输入一个输入一个3位整数,判断该数是否水仙花数位整数,判断该数是否水仙花数.思考题:思考题:4.某服装店经营套装,也单件出售,针对单笔交易的促销政策为:某服装店经营套装,也单件出售,针对单笔交易的促销政策为:(1)不少于)不少于50套,每套套,每套80元;(元;(2)不足)不足50套,每套套,每套90元;元; (3)只买上衣每件)只买上衣每件60元;(元;(4)只买裤子每条)只买裤子每条45元;元; 编写计算器,分别输入一笔交易中上衣和裤子数,计算应收款。编写计算器,分别输入一笔交易中上衣和裤子数,计算应收款。