210 likes | 421 Views
第 4 章 选择结构. 主讲教师:刘海燕. 本章知识要点. if 语句的三种形式 嵌套 if 语句的理解与应用 Switch 语句与 break 语句的应用. 4.1 if 语句. 4.1.1 if 语句中的表达式 if 语句的基本形式: if (表达式)语句; if 语句根据给定的条件即表达式进行判断,表达式的值为真(非 0 )或假( 0 ),决定了 if 后紧跟的语句是否被执行。 if 关键字之后的表达式就是用来描述条件的 有以下类型: 关系表达式 逻辑表达式 其他表达式(赋值表达式、变量).
E N D
第4章 选择结构 主讲教师:刘海燕
本章知识要点 • if语句的三种形式 • 嵌套if语句的理解与应用 • Switch语句与break语句的应用
4.1 if语句 4.1.1 if语句中的表达式 if语句的基本形式: if(表达式)语句; if语句根据给定的条件即表达式进行判断,表达式的值为真(非0)或假(0),决定了if后紧跟的语句是否被执行。 if关键字之后的表达式就是用来描述条件的 有以下类型:关系表达式 逻辑表达式 其他表达式(赋值表达式、变量)
1.关系表达式表示条件 C语言提供了6种关系运算符: <、 <=、 >、 >=、 ==、 != 例: if(m==n) printf(“%d equal to %d”,m,n); 例: if(n%2!=0) sum=sum+n;
2.逻辑表达式表示条件 逻辑表达式就是用逻辑运算符将关系表达式或逻辑量连接起来的有意义的式子。 C语言提供了3种逻辑运算符: &&、 ||、 ! 例: if(a&&b) if((a>b)|| (x>y))
3.其他表达式表示条件 • if(5)printf(“ok”); 表达式的值为5,是一个非0的数即为真,输出ok; • if(0)printf(“ok”); 则不执行输出语句。
表达式 假 (0) 真(非0) 语句 4.1.2 单分支if语句 { ……; ……; } 形式为: if (表达式) 语句; 执行过程如图所示 单分支选择结构流程图
【例4-2】输入两个整数,按从大到小的顺序输出这两个数。【例4-2】输入两个整数,按从大到小的顺序输出这两个数。 #include <stdio.h> int main() { int a,b,t; printf("enter one number: "); scanf("%d",&a); printf("enter the other number: "); scanf("%d",&b); if (a<b) /* 如果a的值小于b,交换a,b顺序 */ { t=a;a=b;b=t; } printf("the sorted numbers :%d %d",a,b); return 0; } a b t 3 2 2 3 2
假(0) 真(非0) 表达式 语句1 语句2 4.1.3 双分支if语句 形式为: if(表达式) 语句1; else 语句2; { ……; ……; } 双分支选择结构流程图
【例4-3】输入一个十进制正整数,判断该数是否是7的倍数,若是输出"Yes!",否则输出"No!“【例4-3】输入一个十进制正整数,判断该数是否是7的倍数,若是输出"Yes!",否则输出"No!“ #include <stdio.h> int main() { int a; printf("Enter an integer: "); scanf("%d",&a); if(a%7= =0) printf("Yes!\n"); else printf("No!\n"); return 0; }
使用if-else语句的注意事项: • 虽然if和else之间加了分号,但if…else仍是一条语句,都同属于一个if语句。 • 每一个else语句之前必须加分号,整个语句结束处也必须有分号。 • else子句是if语句的一部分,必须和if语句配对使用,不能单独使用。
4.1.4 多分支if语句 形式为: if(表达式1)语句1; else if(表达式2)语句2; …… else if(表达式n)语句n; else 语句n+1;
【例4-5】分段函数的求解。 #include <stdio.h> int main() { float x,y; printf("Please input x: "); scanf("%f",&x); if(x<1) y=x; else if(x<5) y=2*x+1; else y=x+1; printf("%f\n",y); return 0; }
4.1.5 if语句的嵌套 当if语句的分支语句又是if语句时,就构成了if 语句的嵌套。 其一般形式如下: if (表达式) if (表达式) 语句1; else 语句2; else if (表达式) 语句3; else 语句4; 语句1 语句2
if和else的配对问题 • 使用时注意: • 必要的时候不要省略“{、}” • 书写时尽量采取分层递进式的书写格式,增加程序的可读性。 例如以下程序段,共五行: • 1) if (表达式) • 2) if (表达式) 语句1; • 3) else • 4) if (表达式) 语句2; 5) else 语句3; C语言规定:else总是与它同一个{}内前面最近的未配对的if配对。 注意: else和if是成对出现的,有else出现,必定有if语句。 有if语句,不一定有else语句。
4.1.6 条件运算符实现选择结构 条件运算符:“?:”三目运算符 一般形式: 表达式1?表达式2:表达式3 例:等价于: max=a>b?a:b If(a>b) max=a Else max=b
4.2 switch 语句 处理多分支选择结构的另一种语句:switch语句。 一般形式为: switch(表达式) { case常量表达式1: 语句1; break; case常量表达式2: 语句2; break; … case常量表达式n: 语句n; break; default : 语句n+1; } 注意:switch语句一般与break 语句配合使用。
使用switch语句时需注意: • switch关键字后表达式可以是任何结果为整型或字符型(long、int或char)的表达式。 • case关键字后面只能是整型或字符型的常量或常量表达式。 • 在case后的各常量表达式的值不能相同,否则会出现错误。 • 执行完一个case后面的语句后,流程控制转移到下一个case继续执行。这一点和多分支if不同,注意区别。
本章小结 1、if语句中的表达式 类型:关系表达式、逻辑表达式、其他表达式(赋值表达 式、变量) 2、if语句的三种形式 单分支:if (表达式) 语句; 双分支:if(表达式) 语句1; else 语句2; 多分支:if(表达式1)语句1; else if(表达式2)语句2; …… else if(表达式n)语句n; else 语句n+1;
3、if语句的嵌套 当if语句的分支语句又是if语句时,就构成了if 语句的嵌套。 4、 switch语句 switch(表达式) { case常量表达式1: 语句1; break; case常量表达式2: 语句2; break; … case常量表达式n: 语句n; break; default : 语句n+1; }