计算机C语言 第四章 选择结构程序设计
第五章 选择结构程序设计 5.1(4.1) 关系运算符和关系表达式 所谓“关系运算”实际上就是“比较运算”,即将两个数据进行比较,判定两个数据是否符合给定的关系。 例如,“a > b”中的“>”表示一个大于关系运算。如果a的值是5,b的值是3,则大于关系运算“>”的结果为“真”,即条件成立;如果a的值是2,b的值是3,则大于关系运算“>”的结果为“假”,即条件不成立。 关系运算的结果只能是“真”或“假” 2.优先级 与其它种类运算符的优先级关系 关系运算符的优先级,低于算术运算符,但高于 赋值运算符。 例如,假设a=3,b=4,c=5,则: (1)a>b的值为0。 (2)(a>b)!=c的值为1。 (3)a=0”。如果需要描述“x>=0”、同时“x<10”,就要借助于逻辑表达式了。 2.逻辑运算符的运算优先级 (1)逻辑非的优先级最高,逻辑与次之,逻辑或最低,即: !(非) → &&(与) → ||(或) (2)与其它种类运算符的优先关系 2. 逻辑量的真假判定──0和非0 C语言用整数“1”表示“逻辑真”、用“0”表示“逻辑假”。但在判断一个数据的“真”或“假”时,却以0和非0为根据:如果为0,则判定为“逻辑假”;如果为非0,则判定为“逻辑真”。 例如,假设num=12,则: !num num>=1 && num<=31 num || num>31 5.3(4.3) if语句 if语句:判断条件是否满足,来决定程序的流程(执行两种操作之一)。 if语句的三种形式 1、if(表达式) 语句 例如: 5.3 if语句 2、 if (表达式) 语句1 else 语句2 5.3 if语句 [例5.1] 输入两个实数,按代数值由小到大输出这两个数。 [例5.2] 输入三个数,按由小到大输出。 1.if语句的一般格式 if(表达式) {语句组1;} [else {语句组2;} ] (1)if语句中的“表达式”必须用“( )”括起来。 (2)else子句(可选)是if语句的一部分,必须与if配对使用,不能单独使用。 (3)当if和else下面的语句组,仅由一条语句构成时,也可不使用复合语句形式(即去掉花括号)。 5.3.3(4.3.5) 条件运算符 在if语句中,如果在“表达式”为“真”和“假”时,都只执行一个赋值语句给同一变量赋值, 例、if (a>b) max = a; else max = b; 可以用如下条件运算符来处理: max = (a>b) ? a : b 条件运算符,称为“三目运算符”(C语言中唯一的一个三目运算符)。条件表达式的一般形式: 表达式1?表达式2:表达式3 条件运算符的优先级仅高于赋值运算符和逗号运算符 并且结合性为自右向左。注意:不是计算顺序! [例5.4] 输入一个字符。判别它是否大写字母,如果是,将其转换为小写,否则不转换。然后输出最后得到的字符。 5.4 (4.3.6) switch语句 C语言提供了switch语句直接处理多分支选择。 [例5.6] 从键盘上输入一个百分制成绩score,按下列原则输出其等级:score≥90,等级为A;80≤score<90,等级为B;70≤score<80,等级为C;60≤score<70,等级为D;score<60,等级为E。 1.switch语句的一般形式 switch(表达式) { case 常量表达式1:语句组1;break; case 常量表达式2:语句组2;break; ...... case 常量表达式n:语句组n;break; [default:语句组n+1;] } 2.几点说明 (1)当switch后面“表达式”的值,与某个case后面的“常量表达式”的值相同时,就执行该case后面的语句(组);当执行到break语句时,跳出switch语句,转向执行switch语句的下一条。 (2)如果没有任何一个case后面的“常量表达式”的值,与“表达式”的值匹配,则执行default 后面的语句(组)。然后,再执行switch语句的下一条。 (4)各case及default子句的先后次序,不影响程序执行结果。 (5)多个case子句,可