第 4 讲 分支结构控制语句

14
4 4 第第第第第第第第 第第第第第第第第 第第第第第第第第第第 第第第第第第第第第第

Upload: miranda-buckner

Post on 30-Dec-2015

51 views

Category:

Documents


5 download

DESCRIPTION

第 4 讲 分支结构控制语句. 计算机与通信工程学院. 第 4 讲 分支结构控制语句. 本讲主要内容: 一、 if 语句 二、 switch 语句. 学习目的与要求: —— 掌握 if 语句的三种形式( if,if-else,if-else if ) 及其执行过程; —— 掌握 if 语句嵌套概念; —— 掌握条件运算; —— 掌握多路分支 switch 语句的格式及其执行过程。 学习重点: if 语句和 switch 语句的格式及其执行过程。 学习难点: if 语句的嵌套; switch 语句的执行过程。. 0. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第 4 讲  分支结构控制语句

第第 44 讲 分支结构控制语句讲 分支结构控制语句

计算机与通信工程学院计算机与通信工程学院

Page 2: 第 4 讲  分支结构控制语句

第第 44 讲 分支结构控制语句讲 分支结构控制语句

本讲主要内容: 一、一、 if语句 二、二、 switch语句

学习目的与要求: —— 掌握 if 语句的三种形式( if,if-else,if-else if ) 及其执行过程; —— 掌握 if 语句嵌套概念; —— 掌握条件运算; —— 掌握多路分支 switch 语句的格式及其执行过程。 学习重点: if 语句和 switch 语句的格式及其执行过程。 学习难点: if 语句的嵌套; switch 语句的执行过程。

Page 3: 第 4 讲  分支结构控制语句

一、 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 语句的下一个语句;否则,不执行 { 语句组 } ,而直接执行 { 语句组 } 之下的语句。 举例

Page 4: 第 4 讲  分支结构控制语句

一、 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

的配对规则:

Page 5: 第 4 讲  分支结构控制语句

例 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);}

返回

Page 6: 第 4 讲  分支结构控制语句

例 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);}

Page 7: 第 4 讲  分支结构控制语句

例 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);}

返回

Page 8: 第 4 讲  分支结构控制语句

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");

返回

Page 9: 第 4 讲  分支结构控制语句

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} 。

返回

举例

Page 10: 第 4 讲  分支结构控制语句

例 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);}

返回

Page 11: 第 4 讲  分支结构控制语句

一、 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}

相当于

返回

Page 12: 第 4 讲  分支结构控制语句

二、 switch 语句 1. 语句的一般格式

switch( 表达式 ) { case 常量 1: 语句组 1 case 常量 2: 语句组 2 ┇ case 常量 n : 语句组 n default: 语句组 n+1 }

2. 执行过程首先计算 switch 表达式的值,然后

与各个 case 的“常量”进行比较,若相等,则从其下的语句组开始,依次向下执行各语句组的语句,直至遇到一个强制中断语句 break或执行完最后一个语句组语句为止。当所有 case 都不符合要求时,执行 default 下的语句组语句。

返回举例

Page 13: 第 4 讲  分支结构控制语句

例 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 语句的使用!

Page 14: 第 4 讲  分支结构控制语句

分支结构控制语句分支结构控制语句 -- 小结小结 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