当前位置:文档之家› 多分支嵌套结构的实现

多分支嵌套结构的实现


switch(表达式){ case 常量表达式1:语句段1; break; case 常量表达式2:语句段2 ; break; ....… case 常量表达式n:语句段n ; break; default : 语句段n+1 ; }
表达式的值=常量表达式 1 的值 表达式的值=常量表达式 2 的值
语句段1
break break
语句段2 表 达 式
表达式的值=常量表达式 n 的值
语句段n break
其他 语句段n+1
break
21
switch语句
处理多分支选择问题,3种情况
1、在switch语句的每个语句段中都使用break 语句,但不使用default
switch(表达式){ case 常量表达式1:语句段1; break; case 常量表达式2:语句段2 ; break; ....… case 常量表达式n:语句段n ; break; default : 语句段n+1 ; }
8
单分支结构

示例:若m与c相同,m值不 变,否则c的值给m 常见错误写法:
if(m == c) m=m; else m=c ; if(c!=m) 正确写法: m=c;
9
if(条件)
语句
真 表达式 语句1

单分支结构示例-求绝对值sample21_02.cpp
#include <stdio.h> int main(void) { int number; printf("Enter a number: "); scanf("%d", &number);
}
10
选择嵌套结构

在if语句中又包含一个或多个if语句--if语 句的嵌套

参考§ 2.2.2
11
完整嵌套结构 P39

if(条件1) if(条件2) 语句1 else 语句2 else if(条件3) 语句3 else 语句4
表达 式1
假Байду номын сангаас

表达 式2


表达 式3

语句 1
语句 2
语句 3
语句 4
22

2、在switch 语句的每个 语句段中都 使用break语 句,并使用 default
#include<stdio.h> main( ) { int fScore; char cLevel; printf("请输入学生成绩:"); scanf("%d",&fScore); while(fScore >100|| fScore <0) { printf("\n输入有误,请重输。"); scanf("%d",& fScore); } switch(fScore /10) { case 10: case 9: cLevel ='A';break; case 8: cLevel ='B';break; case 7: cLevel ='C';break; case 6: cLevel ='D';break; case 5: case 4: default case 3: :cLevel ='E'; case 2: case 1: case 0: cLevel ='E'; } printf("成绩是%d,相应等级是%c。", fScore, cLevel); }
写出If语句
4x y f ( x) 0 x 15 3 x 15 2.5 x 10.5
Enter x: -0.5
if (x < 0){ f(-0.50) = 0.00 y = 0; } Enter x: 9.5 else if (x <= 15) { y = 4 * x / 3; f(9.50) = 12.67 } else{ Enter x: 21.3 y = 2.5 * x - 10.5; f(21.30) = 42.75 }
第二部分 模块化程序设计
1
第二部分 主要内容

第一讲 多分支嵌套结构的实现
实验一
多分支嵌套结构的实现 循环嵌套结构的实现
第二讲 循环嵌套结构的实现
实验二
第三讲 数据文件及应用 第四讲 指针及应用
实验三
综合程序设计
2
第一讲
多分支嵌套结构的实现
3
主要内容
回顾程序的三种基本结构 嵌套结构
15
y=x+1
y=x+2
y=x+3
else 和 if 的匹配
if(表达式1)
if(表达式2) 语句1 else 语句2
if(表达式1) if(表达式2) 语句1
else
if(表达式3) 语句3 else 语句4
else if(表达式3) 语句3 else 语句4
else 与最靠近它的、没有与别的 else 匹配过的 if 匹配
if(number < 0){ number = -number;}
分析: 负数求反,正数跳出
Enter a number: 10 The absolute value is 10.
Enter a number: -300 The absolute value is 300.
printf("The absolute value is %d.\n", number); return 0;

选择嵌套结构——if语句深入
switch语句 应用实例

参考 §2.2.2 §2.3 §2.4
4
三种基本结构的示意图
顺序结构
选择结构
循环结构
5
嵌套结构
自顶向下,逐步细化的分析结果。 三种基本结构中的语句组(顺序语句组、if 分支语句组、else分支语句组、循环体语句 组)可以包含任意结构的语句,从而形成 不同的嵌套结构。 嵌套结构没有特定的结构形式,由分析方 法自然形成。
例2-5计算器程序。 问题描述:任意输入两个数,根据 用户选择的功能菜单,求出它们的 和、差、积、除的结果。
#include <stdio.h> void main(void) { double dLOper,dROper,dResult; /* 存放左右操作数 */ int nFun; /* 存放运算符 */ printf(" --------------------------\n"); /* 构造功能菜单 */ printf(" 加法运算--------1\n"); printf(" 减法运算--------2\n"); printf(" 除法运算--------3\n"); printf(" 乘法运算--------4\n"); printf(" --------------------------\n"); printf(" 请输入功能选择: "); scanf("%d",&nFun); if(nFun>4||nFun<1) printf(" 输入错误!\n"); else { printf(" 请输入两个操作数: "); scanf("%lf%lf",&dLOper,&dROper);/* 输入左右操作数和运算符 */ switch(nFun){ case 1: dResult=dLOper+dROper; break; /* 加法 */ case 2: dResult=dLOper-dROper; break; /* 减法 */ case 3: if(0.0==dROper) { printf(" 右操作数不能为0\n"); return; } /* 除法 */ else dResult=dLOper/dROper; break; default: dResult=dLOper*dROper; /* 乘法 */ } printf(" 计算结果为:%8.3lf\n",dResult); /* 输出结果 */
switch(fScore /10) { case 10: case 9: cLevel ='A';break; case 8: cLevel ='B';break; case 7: cLevel ='C';break; case 6: cLevel ='D';break; default :cLevel ='E'; }
if(表达式1) if(表达式2) 语句1 else if(表达式3) 语句3 else 语句4
16
改变else 和 if 的配对
改写下列 if 语句,使 else 和第1个 if 配对。
if (x < 2) if (x < 1) y = x + 1; else y = x + 2;
if (x < 2){ if (x < 1) y = x + 1; } else y = x + 2;
B C D E
#include <stdio.h> #include<stdio.h> void main(void) main( ) { char cLevel; { int fScore; char cLevel; int fScore; printf("请输入学生成绩:"); scanf("%d",&fScore); printf("请输入成绩:"); scanf("%d",&fScore); while(fScore >100|| fScore <0) if(fScore>100||fScore<0) { { printf("\n输入有误,请重输。"); scanf("%d",& fScore); } printf("\n输入成绩错误!"); } switch(fScore /10) else if (fScore > 89) { case 10: cLevel='A'; case 9: cLevel ='A';break; else if (fScore > 79) case 8: cLevel ='B';break; cLevel='B'; case 7: cLevel ='C';break; else if (fScore > 69) case 6: cLevel ='D';break; cLevel='C'; case 5: else if (fScore > 59) case 4: cLevel='D'; case 3: else cLevel='E'; case 2: case 1: printf("该成绩等级:%c\n",cLevel); } case 0: cLevel ='E'; } printf("成绩是%d,相应等级是%c。", fScore, cLevel); }
相关主题