140 likes | 292 Views
第 4 讲 分支结构控制语句. 计算机与通信工程学院. 第 4 讲 分支结构控制语句. 本讲主要内容: 一、 if 语句 二、 switch 语句. 学习目的与要求: —— 掌握 if 语句的三种形式( if,if-else,if-else if ) 及其执行过程; —— 掌握 if 语句嵌套概念; —— 掌握条件运算; —— 掌握多路分支 switch 语句的格式及其执行过程。 学习重点: if 语句和 switch 语句的格式及其执行过程。 学习难点: if 语句的嵌套; switch 语句的执行过程。. 0.
E N D
第4讲 分支结构控制语句 计算机与通信工程学院
第4讲 分支结构控制语句 本讲主要内容: 一、if语句 二、switch语句 学习目的与要求: ——掌握if语句的三种形式(if,if-else,if-else if) 及其执行过程; ——掌握if语句嵌套概念; ——掌握条件运算; ——掌握多路分支switch语句的格式及其执行过程。 学习重点:if语句和switch语句的格式及其执行过程。 学习难点:if语句的嵌套;switch语句的执行过程。
0 表达式 非0 语句组 0 表达式 非0 语句组2 语句组1 一、if 语句 if(表达式) {语句组1} else {语句组2} 1.if 语句的一般形式 语句格式: 语句格式: 执行过程: 如果表达式的值为非0, 则执行{语句组1},然后执行紧 接{语句组2}之后的语句;否则,就跳过{语句组1}而执 行{语句组2},然后继续向下执行。 一般if语句的逻辑结构 举例 2.if语句的简单形式 if(表达式) {语句组} 执行过程: 若表达式的值非0(即真), 则执行{语句组},然后继续 执行if语句的下一个语句;否则,不执行{语句组},而 直接执行{语句组}之下的语句。 简单if语句逻辑结构 举例
if(表达式1) {if(表达式2) {语句组1} else {语句组2} } else {语句组3} if(表达式1) {语句组1} else {if(表达式2) {语句组2} else {语句组3} } 一、if 语句(续) 3. if 语句的嵌套结构 语句格式: if(表达式) {语句组1} else {语句组2} 嵌套 举例 if(表达式1) {if(表达式2) {语句组1} else {语句组2} } else {if(表达式3) {语句组3} else {语句组4} } 4. if-else-if结构 else与if 的配对 规则:
if 语句的一般形式举例 例4-4:输入一个整数,判断它的奇偶性。 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"); } 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-2:用if一般形式编写求两个整数的最大数程序。 返回
if 语句的简单形式举例 例4-1:输入一个整数x,若是正数,则输出它。 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); } main() { int x; printf("input x: "); scanf("%d",&x); if(x>0) printf("%d\n",x); } 例4-2:用if简单形式编写求两个整数的最大数程序。 返回
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); } 例4-6:对实数x ,若其不小于0,则求它的平方数y ,当y 大于500时输出y ,否则输出500;若x < 0,则输出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"); 返回
0 表达式1 非0 0 表达式2 非0 0 表达式3 非0 0 表达式4 非0 语句组1 语句组2 语句组3 语句组4 语句组5 具体执行过程如下: 从上到下逐个对条件进行判断, 一旦发现条件 满足就执行与它有关的语句组,其下的所有条 件都不再判断;当任何一个条件都不满足时, 执行最后一个{语句组n+1}。 4. if-else if结构 一般格式: if(表达式1) {语句组1} else if(表达式2) {语句组2} …… else if(表达式n) {语句组n} else {语句组n+1} 举例 返回 if-else if语句的逻辑结构
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); } 例4-7:计算y的值。 返回
一、if 语句(续) if(条件表达式1) {结果表达式2} else {结果表达式3} 条件运算是C语言中惟一的一个三目运算, 运算符由“?”和“:”构成。 相当于 5. 条件运算 条件运算的一般形式为: 条件表达式1 ? 结果表达式2 : 结果表达式3 结果:当条件表达式1非0时,取表达式2为条件运算结果; 当条件表达式1为0时,取表达式3为条件运算结果。 优先级:高于赋值运算,而低于算术运算和关系运算。 举例: y=5 ? 19+6 : 21 y=25 y=x>0?x+25:x-25; 返回
二、switch 语句 switch(表达式) { case 常量1: 语句组1 case 常量2: 语句组2 ┇ case 常量n: 语句组n default: 语句组n+1 } 1.语句的一般格式 2.执行过程 首先计算switch表达式的值,然后与各个case的“常量”进行比较,若相等,则从其下的语句组开始,依次向下执行各语句组的语句,直至遇到一个强制中断语句break或执行完最后一个语句组语句为止。当所有case都不符合要求时,执行default下的语句组语句。 举例 返回
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 "); } switch语句举例 例4-8:输入0,1,2,3,4时,显示对应的zero,one,two,three,four;若输入的是其他字符,显示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