1、3.1 单分支选择结构if语句 3.2 双分支选择结构ifelse,以及条件运算与 条件表达式 3.3 多分支选择结构程序设计,第三章 选择结构流程及应用,3.2 双分支选择结构,条件运算与条件表达式,1、if-else 语句格式: if(条件表达式) 语句组A; else 语句组B; ,格式: if(条件表达式) 语句组A; else 语句组B; ,执行过程: 先计算表达式的值, 若为真(非0值), 执行语句A;若值为0, 执行else后的语句B。,if(xy) z=x; elsez=y;,当复合语句中只有一条语句的时候也可以写成如下格式:格式: if(条件表达式) 语句1;else语句2;
2、 或者: if(条件表达式) 语句1; else 语句2;,2、双分支if-else语句的流程图如下:,运行if-else语句的实质,请先听我讲一个动人的故事.,如果把这个矩形看作是一个整体。,如果 if(条件成立),否则 else(条件不成立),执行A部分,执行B部分,If和else一分为二,自此故事也就结束了.,注意:,If和else 是关键字,是固定的,不能丢掉! If 后面紧跟括号(),它们之间没有空格,必须有括号,丢掉括号就会出错! 括号跟语句之间要有空格隔开。 表达式只要是非0就表示条件成立,如果为0就表是条件不成立。 只有一条语句的时候,那一对花括号可以省略。也就是不带花括号的时
3、候,if(或者else)语句的作用只管一条语句。,【例一】以下程序的作用是什么?main( )char c;printf(“Input :”);scanf(“%c”,/*将小写字母转换为大写字母*/,【例二】以下程序的执行结果是什么?main( )int x=2,y=-1,z=2;if (xy) if (y0) z=0;else z+=1;printf(“%dn”,z);,/*结果是2*/,哦,原来是因为else 总是与靠近它的if配套,常见错误:if (x0) ; if (x=2) if (10”); y=x-1;,/* 输入两个整数,输出其中的大数 */,#include #include
4、 main( ) int x, y; printf(“ input x: ”);scanf(“%d”, ,输入x,输出y,使用if-else形式编写程序:输入两个数分别给变量a和b,若ab,将两个变量的值互换,否则,保持不变,最后输出。 使用scanf输入三个整数,然后求三个整数中的最大值。 从键盘输入一个整数,判断它的奇偶性。如果输入的是奇数,输出“ODD”,如果输入的是偶数,则输出“EVEN”. 编写一程序控制电灯开关,从键盘输入1表示开灯,这时显示“the light is on”;输入0或者其他数表示关灯,显示“the light is off”。,练习,3、条件运算符与条件表达式,C
5、语言中唯一的一个三目运算符是条件运算符,即 “? :”。它的运算对象有三个。它在某种程度上可以起到逻辑判断的作用,一样可是实现双分支选择结构。条件运算符的语法格式是: 表达式1?表达式2:表达式3由条件运算符构成的表达式称为条件表达式,与 if-else语句具有相同的功能。,4、条件运算符的运算规则如下:,首先计算表达式1的值,若表达式1为真,条件表达式的解取表达式2的值,表达式1为假,条件表达式的解取表达式3的值。,注意:条件表达式的解是指整个表达式的解。,5、运算符的优先级与结合性,条件运算符的优先级高于赋值运算符,但低于关系运算符和算术运算符。其结合性为“从右到左”(即右结合性)。,【例
6、5】从键盘上输入一个字符,如果它是大写字母,则把它转换成小写字母输出,否则,直接输出。main() char ch;printf(“Input a character: “);scanf(“%c“, ,【例6】用条件表达式求三个整数中的最大数。 #include “stdio.h“ void main() int a,b,c;printf(“Pleae input three int:“);scanf(“%d%d%d“, ,用条件运算符代替下面程序断中的ifelse语句。if(flag)printf(“TURE!n”);elseprintf(“FALSE!n”); 编写一程序,从键盘输入两个整数,输出较大的一个。 x2y216是平面上的一个圆编写一个程序判断点(2,4)是圆内?圆外?还是圆上?课后作业: 3.1、3.2(1)、 3.2(3)、 3.2(4)、 3.3(4),练习,