C++语言程序设计电子教案4_第1页
C++语言程序设计电子教案4_第2页
C++语言程序设计电子教案4_第3页
C++语言程序设计电子教案4_第4页
C++语言程序设计电子教案4_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第4章 分支结构的C程序设计 YYHYYH版版第第4 4章章 分支结构的程序设计分支结构的程序设计 4.1 if语句语句 4.2 switch语句语句 4.3 程序举例程序举例 教材上的教材上的第二章第二章2.5中的一部中的一部分分(2.5.3和和2.5.4)第4章 分支结构的C程序设计 YYHYYH版版 4.1 if 语语 句句 4.1.1 if语句的简单形式语句的简单形式(格式格式1) 1. 格式格式 : if(表达式表达式) 语句语句2. 功能程序图功能程序图图 4.1 if语句执行过程 下一语句真(非0)(a)(b)假(0)表达式语 句语句假真表达式第4章 分支结构的C程序设计 YYH

2、YYH版版例例 4.1 打印出不及格的成绩。应加上应加上#include 第4章 分支结构的C程序设计 YYHYYH版版用用C+语言编写语言编写#include void main() float score; cinscoreendl; if (score60.0) cout“score=”scoren;换行的两种方式换行的两种方式说明说明:以后的例子均用以后的例子均用C语言编写语言编写第4章 分支结构的C程序设计 YYHYYH版版 4.1.2 ifelse结构结构(格式格式2) 1 .格式:格式: if(表达式表达式) 语句语句1 else 语句语句2 2. 功能程序图功能程序图下一语句真

3、(a)(b)假表达式语句1语句1假真表达式语句2语句2图图 4.2 ifelse语句执行过程语句执行过程 if(表达式表达式) 语句块语句块1 else 语句块语句块2 或或第4章 分支结构的C程序设计 YYHYYH版版 例例 4.2 打印成绩打印成绩60分为分为“Pass”, 否则为否则为“Fail”。 解解 我们可以使用两种方法编程:我们可以使用两种方法编程: 方法一:方法一: 用两个简单的用两个简单的if语句实现:语句实现: #include void main( ) float score; scanf(%f, &score); if(score=60.0) printf(sc

4、ore=%5.1f-Passn, score); 运行:运行: 50 score=50.0-Fail 十进制五位长度且一位小数的浮点数格式十进制五位长度且一位小数的浮点数格式再次运行:再次运行: 80 score= 80.0-Pass第4章 分支结构的C程序设计 YYHYYH版版方法二:方法二: 用用ifelse语句实现:语句实现: #include void main( ) float score; scanf(%f, &score); if(score0时调用时调用sqrt(x),否则调用,否则调用fabs(x)。等等价价 scanf(%f, &x); y=x0? sqrt

5、(x): fabs(x); printf(x=%f, y=%fn, x, y); #include #include void main( ) float x, y; 求平方根求平方根求绝对值求绝对值y=x0? sqrt(x):fabs(x); if(x0) y=sqrt(x) else y= fabs(x);第4章 分支结构的C程序设计 YYHYYH版版上例运行:上例运行: 9.0 x=9.000000, y=3.000000再次运行:再次运行: - -9.0 x=- -9.000000, y=9.000000 例例 4.4 打印打印a, b两个数中大者。两个数中大者。 方法一:方法一: 用

6、用ifelse结构实现:结构实现:#include void main( ) int a, b; scanf(“%d, %d”, &a, &b); if (ab) printf(“max=%dn”, a) else printf(“max=%dn”, b); 方法二方法二: 用条件运算符实现:用条件运算符实现: #include void main( ) int a, b; scanf(“%d, %d”, &a, &b); printf(“max=%dn”,ab? a:b); 提问提问: 若要求若要求a和和b交交换换?则利用中间变量则利用中间变量m进行三角交换法

7、。进行三角交换法。第4章 分支结构的C程序设计 YYHYYH版版 4. if语句的嵌套:语句的嵌套:if语句中也有语句中也有if语句。语句。 例例 4.5 输入一个学生成绩,当成绩输入一个学生成绩,当成绩90时,打印时,打印“Very Good”;当;当80成绩成绩90时,打印时,打印“Good”; 当当60成绩成绩80时,打印时,打印“Pass”;当成绩;当成绩60分,打印分,打印“Fail”。 #include void main( ) float score; scanf(%f, &score); if(score = 80) if(score=90) printf(Very G

8、oodn); else printf(Goodn); else if(score=60) printf(Passn); else printf(Failn); 运行:运行: 85Good注意注意:ifelse要一一配对要一一配对(“就近配就近配对对”)第4章 分支结构的C程序设计 YYHYYH版版例如语句段:例如语句段: if(x) if(y) printf(A); else printf(); 注意注意:其中其中else语句是与语句是与if(y)相匹配。如果与相匹配。如果与if(x)相匹配相匹配,则则 if(y)子句必须加花括号写成:子句必须加花括号写成: if(x) if(y) print

9、f(A); else printf(B); 结论:结论:即即if和和else遵循遵循“就近配对就近配对”的原则。的原则。 异异-上例是条件上例是条件x成立和条件成立和条件y不成立时执行不成立时执行printf(“B”),下例是条件下例是条件x不成立时执行不成立时执行printf(“B”) 。结构不同,含义也不同,比结构不同,含义也不同,比较:较:同同-当条件当条件x和和y都成立时都成立时执行执行printf(A);本条语句;本条语句执行完毕后汇合点相同。执行完毕后汇合点相同。比较比较第4章 分支结构的C程序设计 YYHYYH版版 if(表达式表达式1) 语句语句1 else if(表达式表达式

10、2) 语句语句2 else if(表达式表达式3) 语句语句3 else if(表达式表达式n) 语句语句n else 语句语句n+1 if(表达式表达式1) 语句块语句块1 else if(表达式表达式2) 语句块语句块2 else if(表达式表达式3) 语句块语句块3 else if(表达式表达式n) 语句块语句块n else 语句块语句块n+1 或或4.1.3 else if结构结构(格式格式3) 1. else if结构的形式如下结构的形式如下:第4章 分支结构的C程序设计 YYHYYH版版表达式1表达式2表达式3表达式n语句n语句n+1语句3真假假假假语句2语句1真真真下一语句(a

11、)语句n语句n+1假真表达式n假真语句3表达式3真假语句2表达式2真假语句1表达式1真假(b)2. 功能图功能图图图 4.3 else if结构执行过程结构执行过程第4章 分支结构的C程序设计 YYHYYH版版例例 4.6 将上例用将上例用else if结构来实现。结构来实现。 #include void main( ) float score; scanf(“%f”, &score); if(score=90) printf(“Very Goodn”); else if (score=80) printf(“Goodn”); else if(score=60) printf(“Pas

12、sn”); else printf(“Failn”); 说明:说明: (1) 在在else if结构中,结构中,if语句语句else if 语句语句else语句是一个语句是一个语句。程序每运行一次,仅有一个分支的语句能得到执行。语句。程序每运行一次,仅有一个分支的语句能得到执行。运行:运行: 58Fail 注意:注意:若条件是兼容的,若条件是兼容的,其设置顺序是相关的,其设置顺序是相关的,应应选不兼容的条件作为入口选不兼容的条件作为入口(此例是此例是score=90是正确是正确的,若选兼容条件的,若选兼容条件score=60或或score=80作作为入口则错误为入口则错误),且条件包,且条件包

13、含关系由上至下含关系由上至下(score=60包含包含score=80又又包含包含score=90);若欲无若欲无兼容性兼容性(可改可改score=80为为score=80&score70)则顺序无关。则顺序无关。显然显然else if 语句语句比比ifelse语句结语句结构更清晰。构更清晰。第4章 分支结构的C程序设计 YYHYYH版版 (2) 各个表达式所表示的条件必须是互相排除的,也就是说,各个表达式所表示的条件必须是互相排除的,也就是说, 只有条件只有条件1(表达式表达式1)不满足时才会判断条件不满足时才会判断条件2,只有条件,只有条件2也不也不满足时才会判断条件满足时才会判断

14、条件3,其余依次类推,只有所有条件都不满,其余依次类推,只有所有条件都不满足时才执行最后的足时才执行最后的else语句语句(如果有如果有)。 例例:而言而言上例上例也可写成:也可写成: #include void main( ) float score; scanf(%f, &score); if (score60) printf(Failn); else if(score80) printf(Passn); else if(score90) printf(Goodn); else printf(Very Goodn); 显然显然else if 语句的条件语句的条件若是兼容的,其设置顺

15、若是兼容的,其设置顺序是相关的,因执行序是相关的,因执行else if 语句时是由上至语句时是由上至下按顺序执行下按顺序执行/判断的判断的第4章 分支结构的C程序设计 YYHYYH版版 如写成以下形式就如写成以下形式就错错了:了: #include void main( ) float score; scanf(%f, &score); if (score=60) printf(Passn); else if(score=80) printf(Goodn); else printf(Very Goodn); 因对因对=60的均输出了的均输出了“Pass”4.2 switch 语语 句句

16、 1. switch语句的形式:语句的形式: switch(表达式表达式) case 常量常量1: 语句段语句段1 case 常量常量2: 语句段语句段2 default: 语句段语句段n第4章 分支结构的C程序设计 YYHYYH版版 2. switch语句的执行过程:语句的执行过程: switch语句先计算语句先计算switch后的表达式的值,然后按序同多后的表达式的值,然后按序同多个个case语句后的常量比较,找到按序首先相等的语句后的常量比较,找到按序首先相等的case常量则执常量则执行该常量冒号后的语句段,并从这个入口一直执行下去行该常量冒号后的语句段,并从这个入口一直执行下去(这一点

17、这一点与其它高级语言不同与其它高级语言不同),直到,直到switch语句结束。语句结束。 如果执行一个或几个冒号后的语句就要跳出如果执行一个或几个冒号后的语句就要跳出switch语句,语句,则可以在跳出处使用则可以在跳出处使用break语句语句(为避免每一种情况均执行的常为避免每一种情况均执行的常用方法用方法)。如果。如果switch语句后表达式的值找不到匹配的语句后表达式的值找不到匹配的case常量常量,就执行就执行default后面的语句段直到结束。后面的语句段直到结束。default是任选项,如果是任选项,如果没有该语句,则在所有配对都失败时,什么也不执行。没有该语句,则在所有配对都失败

18、时,什么也不执行。第4章 分支结构的C程序设计 YYHYYH版版 例例 4.7 在显示器上显示一个菜单程序的模型。在显示器上显示一个菜单程序的模型。 #include /包含函数包含函数getche( ) #include void main( ) void prs( ); /声明处理函数声明处理函数 char ch; printf(“1. 输入记录输入记录n”); printf(“2. 记录列表记录列表n”); printf(“3. 删除记录删除记录n”); printf(“4. 修改记录修改记录n”); printf(“请输入选择请输入选择:n”); ch=getche(); /键入一个字

19、符勿按回车键入一个字符勿按回车 注注: con-console;std-standard;i-input;o-output第4章 分支结构的C程序设计 YYHYYH版版 switch(ch) case 1: printf(“输入记录输入记录n”); prs( ); break; case 2: printf(“记录列表记录列表n”); prs( ); break; case 3: printf(“删除记录删除记录n”); prs( ); break; case 4: printf(“修改记录修改记录n”); prs( ); break; default: printf(“选择错选择错!n”);

20、 void prs() 运行:运行: 1. 输入记录输入记录 2. 记录列表记录列表 3. 删除记录删除记录 4. 修改记录修改记录 请输入选择:请输入选择: 程序运行后程序运行后, 屏幕停屏幕停留在此留在此, 执行执行ch=getche( )时时,ch接受用户键入字符接受用户键入字符的的ASCII码。我们从键盘码。我们从键盘键入键入1后显示:后显示: 输入记录输入记录 提问提问:若取消所有若取消所有break; 则则会如何?会如何?第4章 分支结构的C程序设计 YYHYYH版版 4.3 程序举例程序举例 例例4.8 编写一个可由用户键入任意简单表达式的程序编写一个可由用户键入任意简单表达式的

21、程序,形式如下形式如下: number operator number 如:如:12.4+56.9 该程序要计算该表达式并以两位小数显示结果。该程序要计算该表达式并以两位小数显示结果。 我们要设运算符我们要设运算符operator为加为加()、 减减()、 乘乘()、 除除()。 #include void main( ) float value1, value2; char operator; printf(“Input your expression: n”); scanf(“%f%c%f”, &value1, &operator, &value2); /输入输入

22、运算式运算式键入格式键入格式:一个浮点数一个浮点数,一个运算字符一个运算字符第4章 分支结构的C程序设计 YYHYYH版版 if (operator=) printf(“%.2fn”, value1+value2); else if (operator=) printf(“%.2fn”, value1-value2); else if (operator= ) printf(“%.2fn”, value1*value2); else if (operator=) if(value2=0.0) printf(“Division by zero.n”); else printf(“%.2fn”,

23、value1/value2); 考虑考虑value2为为0时的情况时的情况 else printf(“Unknown operator.n”); 运行:运行: Input your expression:123.5+59.3182.80再次运行:再次运行: Input your expression: 198.7 0Division by zero. 再次运行:再次运行: Input your expression: 125$28Unknown operator. 问题问题:为方便输入,除:为方便输入,除号和乘号可改成号和乘号可改成/和和*。第4章 分支结构的C程序设计 YYHYYH版版例例

24、4.9 用用switch语句改写例语句改写例4.8。 #include void main( ) float value1, value2; char operator; printf(“Input your expression: n”); scanf(“%f%c%f”, &value1, &operator, &value2); switch(operator) case : printf(“%.2fn”, value1+value2); break; case : printf(“%.2fn”, value1- -value2); break; case : printf(“%.2fn”, value1* *value2); break; 第4章 分支结构的C程序设计 YYHY

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论