第 4 讲 分支结构控制语句
DESCRIPTION
第 4 讲 分支结构控制语句. 计算机与通信工程学院. 第 4 讲 分支结构控制语句. 本讲主要内容: 一、 if 语句 二、 switch 语句. 学习目的与要求: —— 掌握 if 语句的三种形式( if,if-else,if-else if ) 及其执行过程; —— 掌握 if 语句嵌套概念; —— 掌握条件运算; —— 掌握多路分支 switch 语句的格式及其执行过程。 学习重点: if 语句和 switch 语句的格式及其执行过程。 学习难点: if 语句的嵌套; switch 语句的执行过程。. 0. - PowerPoint PPT PresentationTRANSCRIPT
第第 44 讲 分支结构控制语句讲 分支结构控制语句
计算机与通信工程学院计算机与通信工程学院
第第 44 讲 分支结构控制语句讲 分支结构控制语句
本讲主要内容: 一、一、 if语句 二、二、 switch语句
学习目的与要求: —— 掌握 if 语句的三种形式( if,if-else,if-else if ) 及其执行过程; —— 掌握 if 语句嵌套概念; —— 掌握条件运算; —— 掌握多路分支 switch 语句的格式及其执行过程。 学习重点: if 语句和 switch 语句的格式及其执行过程。 学习难点: if 语句的嵌套; switch 语句的执行过程。
一、 if 语句表达式
语句组 1 语句组 2
非 0
0
一般 if 语句的逻辑结构
1.if 语句的一般形式语句格式:
if( 表达式 ) { 语句组 1}else { 语句组 2}
执行过程:如果表达式的值为非 0, 则执行 { 语句组 1}, 然后执行紧接 { 语句组 2} 之后的语句;否则,就跳过 { 语句组 1} 而执行 { 语句组 2} ,然后继续向下执行。 举例
语句格式:2.if 语句的简单形式 if( 表达式 )
{ 语句组 } 非 0
0表达式
语句组
简单 if 语句逻辑结构
执行过程:若表达式的值非 0 (即真) , 则执行 { 语句组 } ,然后继续执行 if 语句的下一个语句;否则,不执行 { 语句组 } ,而直接执行 { 语句组 } 之下的语句。 举例
一、 if 语句(续)
语句格式:
3. if 语句的嵌套结构
嵌套举例
if( 表达式 ) { 语句组 1}else { 语句组 2}
if( 表达式 1) {if( 表达式 2) { 语句组 1} else { 语句组 2} }else { 语句组 3}
if( 表达式 1) { 语句组 1} else {if( 表达式 2) { 语句组 2} else { 语句组 3} }
if( 表达式 1) {if( 表达式 2) { 语句组 1} else { 语句组 2} }else {if( 表达式 3) { 语句组 3} else { 语句组 4} }
4. if-else-if结构 else与if
的配对规则:
例 4-4 :输入一个整数,判断它的奇偶性。
if 语句的一般形式举例
main(){ int n; printf("Input a number:"); scanf("%d",&n); if (n%2==0) printf("The number is even.\n"); else printf("The number is odd.\n");}
例 4-2 :用 if 一般形式编写求两个整数的最大数程序。
main(){ int x , y; printf("input x,y: "); scanf("%d,%d",&x,&y); if(x>y) printf("MAX=%d\n",x); else printf("MAX=%d\n",y);}
返回
例 4-1 :输入一个整数 x ,若是正数,则输出它。
if 语句的简单形式举例
返回
main(){ int x; printf("input x: "); scanf("%d",&x); if(x>0) printf("%d\n",x);}
例 4-2 :用 if 简单形式编写求两个整数的最大数程序。
main(){int x,y,max;printf("input x,y: ");scanf("%d,%d",&x,&y);max=x;if(y>x) max=y;printf("MAX=%d\n",max);}
例 4-6 :对实数 x ,若其不小于 0 ,则求它的平方数 y ,当 y 大于 500 时输出 y ,否则输出 500 ;若 x < 0 ,则输出 x 。
if 语句嵌套示例程序
main (){ float x,y; printf("Input a real number: "); scanf("%f",&x); if (x>=0.0) { y=x*x; if (y>500.0) printf("%f\n",y); else printf("%f\n",500.0); } else printf("%f\n",x);}
返回
if 嵌套结构中 else 与 if 的配对规则:
C 语言规定:在 else 语句无明确配对结构时, else 语句与最近的一个尚未配对的 if 语句配对。
程序段一:if (x>20||x<-10) { if(y<=100&&y>x) printf("Good"); } else printf("Bad");
程序段二:if (x>20||x<-10) if (y<=100&&y>x) printf("Good"); else printf("Bad");
返回
4. if-else ifif-else if 结构结构
一般格式:if( 表达式 1) { 语句组 1} else if( 表达式 2) { 语句组 2} ……else if( 表达式 n) { 语句组 n}else { 语句组 n+1}
表达式 1
语句组 1 语句组 2
非 0
0
表达式 2
非 0
0
表达式 3
非 0
0
表达式 4
非 0
0
语句组 3 语句组 4 语句组 5
if-else ifif-else if 语句的逻辑结构语句的逻辑结构
具体执行过程如下:从上到下逐个对条件进行判断 , 一旦发现条件满足就执行与它有关的语句组,其下的所有条件都不再判断;当任何一个条件都不满足时,执行最后一个 { 语句组 n+1} 。
返回
举例
例 4-7 :计算 y 的值。
0)(x 265x.1
0)(x 36
0)(x 85x
y
if-else if 结构举例
main(){ float x,y; scanf("%f",&x); if (x>0) y=5.0*x+8.0; else if (x==0) y=36.0; else y=1.5*x-26; printf("y=%f\n",y);}
返回
一、 if 语句(续)
5. 条件运算 条件运算是 C 语言中惟一的一个三目运算,运算符由“ ?” 和“ :” 构成。
结果:当条件表达式 1 非 0 时,取表达式 2 为条件运算结果; 当条件表达式 1 为 0 时,取表达式 3 为条件运算结果。
条件运算的一般形式为: 条件表达式 1 ? 结果表达式 2 : 结果表达式 3
优先级:高于赋值运算,而低于算术运算和关系运算。
y=x>0?x+25:x-25;
y=5 ? 19+6 : 21举例:
0)(x 25x
0)(x 25xy
y=25
if( 条件表达式 1) { 结果表达式 2}else { 结果表达式 3}
相当于
返回
二、 switch 语句 1. 语句的一般格式
switch( 表达式 ) { case 常量 1: 语句组 1 case 常量 2: 语句组 2 ┇ case 常量 n : 语句组 n default: 语句组 n+1 }
2. 执行过程首先计算 switch 表达式的值,然后
与各个 case 的“常量”进行比较,若相等,则从其下的语句组开始,依次向下执行各语句组的语句,直至遇到一个强制中断语句 break或执行完最后一个语句组语句为止。当所有 case 都不符合要求时,执行 default 下的语句组语句。
返回举例
例 4-8 :输入 0 , 1 , 2 , 3 ,4 时,显示对应的 zero , one ,two , three , four ;若输入的是其他字符,显示 other 。
switch 语句举例 main(){int i; scanf("%d",&i); switch(i) {case 0: printf("zero "); case 1: printf("one "); break; case 2: printf("two "); case 3: printf("three "); default: printf("other "); } 返回
注意 break 语句的使用!
分支结构控制语句分支结构控制语句 -- 小结小结 1 .实现分支结构的控制语句主要有 if 语句、 switch 语
句。 if 语句通常有 if、if else、if-else if三种形式。 2 . if 语句任何一种 if 语句的语句体中都可以出现其他
的 if 结构,这种结构称为 if 语句的嵌套结构。在理论上 if 嵌套的层数没有限制,但当嵌套层数较多时,容易使程序在逻辑上变得不清晰。
3 . switch语句专门用于多路分支选择,适用于 if –else if 式的结构,而且更清晰。程序总是试图从满足条件的第一个 case子句开始执行其后的所有语句,而不再对其后的 case 进行判断。因此,通常使用 break 语句中断 switch 语句的运行。作业:教材 4.4, 4.6