C++语言程序设计电子教案4.ppt

上传人:bao****ty 文档编号:144343855 上传时间:2020-09-07 格式:PPT 页数:24 大小:607.50KB
返回 下载 相关 举报
C++语言程序设计电子教案4.ppt_第1页
第1页 / 共24页
C++语言程序设计电子教案4.ppt_第2页
第2页 / 共24页
C++语言程序设计电子教案4.ppt_第3页
第3页 / 共24页
C++语言程序设计电子教案4.ppt_第4页
第4页 / 共24页
C++语言程序设计电子教案4.ppt_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《C++语言程序设计电子教案4.ppt》由会员分享,可在线阅读,更多相关《C++语言程序设计电子教案4.ppt(24页珍藏版)》请在金锄头文库上搜索。

1、第4章 分支结构的程序设计,4.1 if语句 4.2 switch语句 4.3 程序举例,教材上的第二章2.5 中的一部分(2.5.3和2.5.4),4.1 if 语 句 4.1.1 if语句的简单形式(格式1) 格式 : if(表达式) 语句 功能程序图,图 4.1 if语句执行过程,例 4.1 打印出不及格的成绩。,应加上#include ,用C+语言编写 #include void main() float score; cinscoreendl; if (score60.0) cout“score=”scoren; ,换行的两种方式,说明:以后的例子均用C语言编写,4.1.2 ifel

2、se结构(格式2) 1 .格式: if(表达式) 语句1 else 语句2 2. 功能程序图,图 4.2 ifelse语句执行过程,if(表达式) 语句块1 else 语句块2 ,或,例 4.2 打印成绩60分为“Pass”, 否则为“Fail”。 解 我们可以使用两种方法编程: 方法一: 用两个简单的if语句实现: #include void main( ) float score; scanf(%f, 运行: 50 score=50.0-Fail,十进制五位长度且一位小数的浮点数格式,再次运行: 80 score= 80.0-Pass,方法二: 用ifelse语句实现: #include

3、void main( ) float score; scanf(%f, 运行: 再次运行: 50 80 score= 50.0-Fail score= 80.0-Pass,问题:对方一可否 认为第二条if语句不要就是Pass的情况(即对方二不要else呢)?,3. 条件运算符的使用 条件表达式: 表达式1? 表达式2:表达式3 if(表达式1) 表达式2 else 表达式3; 功能:当表达式1的值为真(非零)时,整个条件表达式的值取表达式2的值;当表达式1的值为假(零)时, 整个条件表达式的值取表达式3的值。 例 4.3 输入x的值,当x0时调用sqrt(x),否则调用fabs(x)。,等价,

4、scanf(%f, ,#include #include void main( ) float x, y;,求平方根,求绝对值,y=x0? sqrt(x):fabs(x); if(x0) y=sqrt(x) else y= fabs(x);,上例运行: 9.0 x=9.000000, y=3.000000 再次运行: -9.0 x=-9.000000, y=9.000000,例 4.4 打印a, b两个数中大者。 方法一: 用ifelse结构实现: #include void main( ) int a, b; scanf(“%d, %d”, ,方法二: 用条件运算符实现: #include

5、void main( ) int a, b; scanf(“%d, %d”, ,提问: 若要求a和b交换?则利用中间变量m进行三角交换法。,4. if语句的嵌套:if语句中也有if语句。 例 4.5 输入一个学生成绩,当成绩90时,打印“Very Good”;当80成绩90时,打印“Good”; 当60成绩80时,打印“Pass”;当成绩60分,打印“Fail”。,#include void main( ) float score; scanf(%f, ,运行: 85 Good,注意:ifelse要一一配对(“就近配对”),例如语句段: if(x) if(y) printf(A); else

6、printf(); 注意:其中else语句是与if(y)相匹配。如果与if(x)相匹配,则 if(y)子句必须加花括号写成: if(x) if(y) printf(A); else printf(B); 结论:即if和else遵循“就近配对”的原则。,异-上例是条件x成立和条件y不成立时执行printf(“B”),下例是条件x不成立时执行printf(“B”) 。,结构不同,含义也不同,比较:同-当条件x和y都成立时执行printf(A);本条语句执行完毕后汇合点相同。,比较,if(表达式1) 语句1 else if(表达式2) 语句2 else if(表达式3) 语句3 else if(表达

7、式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结构的形式如下:,2. 功能图,图 4.3 else if结构执行过程,例 4.6 将上例用else if结构来实现。 #include void main( ) float score; scanf(“%f”, 说明: (1) 在else if结构中,if语句else if 语句else语句是一个语句。程序每运行一次,仅有一

8、个分支的语句能得到执行。,运行: 58 Fail,注意:若条件是兼容的,其设置顺序是相关的,应选不兼容的条件作为入口(此例是score=90是正确的,若选兼容条件score=60或score=80作为入口则错误),且条件包含关系由上至下(score=60包含score=80又包含score=90);若欲无兼容性(可改score=80为score=80 scanf(%f, ,显然else if 语句的条件若是兼容的,其设置顺序是相关的,因执行else if 语句时是由上至下按顺序执行/判断的,如写成以下形式就错了: #include void main( ) float score; scanf

9、(%f, ,因对=60的均输出了“Pass”,4.2 switch 语 句 1. switch语句的形式:,switch(表达式) case 常量1: 语句段1 case 常量2: 语句段2 default: 语句段n ,2. switch语句的执行过程: switch语句先计算switch后的表达式的值,然后按序同多个case语句后的常量比较,找到按序首先相等的case常量则执行该常量冒号后的语句段,并从这个入口一直执行下去(这一点与其它高级语言不同),直到switch语句结束。 如果执行一个或几个冒号后的语句就要跳出switch语句,则可以在跳出处使用break语句(为避免每一种情况均执行

10、的常用方法)。如果switch语句后表达式的值找不到匹配的case常量,就执行default后面的语句段直到结束。default是任选项,如果没有该语句,则在所有配对都失败时,什么也不执行。,例 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=ge

11、tche(); /键入一个字符勿按回车,注: con-console;std-standard;i-input;o-output,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”); void prs() ,运行: 1. 输入记录 2. 记录列表 3. 删除记

12、录 4. 修改记录 请输入选择: 程序运行后, 屏幕停留在此, 执行ch=getche( )时,ch接受用户键入字符的ASCII码。我们从键盘键入1后显示: 输入记录,提问:若取消所有break; 则会如何?,4.3 程序举例 例4.8 编写一个可由用户键入任意简单表达式的程序,形式如下: number operator number 如:12.4+56.9 该程序要计算该表达式并以两位小数显示结果。 我们要设运算符operator为加()、 减()、 乘()、 除()。 #include void main( ) float value1, value2; char operator; pr

13、intf(“Input your expression: n”); scanf(“%f%c%f”, /输入 运算式,键入格式:一个浮点数,一个运算字符,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 pr

14、intf(“%.2fn”, value1/value2);,考虑value2为0时的情况,else printf(“Unknown operator.n”); ,运行: Input your expression: 123.5+59.3 182.80 再次运行: Input your expression: 198.7 0 Division by zero. 再次运行: Input your expression: 125$28 Unknown operator. 问题:为方便输入,除号和乘号可改成/和*。,例 4.9 用switch语句改写例4.8。 #include void main(

15、) float value1, value2; char operator; printf(“Input your expression: n”); scanf(“%f%c%f”, ,case : if(value2= =0.0) printf(“Division by zero.n”); else printf(“%.2fn”, value1/value2); break; default: printf(“Unknown operator.n”); ,提问(1)若取消所有break; 则会如何?(都会算);(2)要求用C+的输出格式,即用include 中的cin和cout,并要求输出格式为“xxx+xxx=xxx”则如何修改?,例 4.10 输入一个字符, 请判断是字母、 数字还是 特殊字符? #include #include void main( ) char ch; printf(“请输入一个字符:”);,ch=getche( ); if(ch=a /* 注意前后的n*/ else if(ch=0& ch=9) printf(“n它是一个数字!n”); esle

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号