




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章:选择结构程序设计,控制语句 用来实现一定的控制功能的语句称为控制语句 。C+语言用控制语句来实现选择结构和循环结构。+语言有九种控制语句。可分成以下三类:,3.1 选择结构的程序设计,1. if语句,简单if语句形式,if (表达式) 语句;,格式:,执行流程:,语句,表达式,例如:请用简单if语句形式实现输入两个整数,输出其中的大数。,if_else形式,if (表达式) 语句1; else 语句2;,格式:,执行流程:,表达式,语句1,语句2,例:请用if_else形式实现输出两个整数中的最大数。,例如:下面的程序段是用简单的if语句实现输入两个整数, 输出其中的大数。 int a
2、, b, max; cout“请输入两个整数:”; cinab; max=a; if (max b) max=b; coutmax;,例如:下面的程序段用ifelse形式实现输出两个整数中的最大数。 int a, b, max; cout b) max=a; else max=b; coutmax;,课堂练习,编写程序实现汽车超速判断:要求从键盘输入速度,然后判断其是否超速。如果速度超过60,则显示“超速”,否则显示“正常”。,1. if语句,if_else_if形式,if(表达式1) 语句1; else if (表达式2) 语句2; else if (表达式3) 语句3; else if (
3、表达式n) 语句n; else 语句n+1;,格式:,执行流程:,语句n,语句n+1,语句3,语句2,语句1,例如:请编写程序段实现判断输入字符的种类: 数字、大写字母、小写字母或其他字符。,例如:下面的程序段是判断输入字符的种类。 char c; coutc; if (c = 0 ,课堂练习,1.编程实现根据输入x的值,输出y。 x和y满足数学分段函数关系如下:,课堂练习,2.编程实现判断成绩的等级。根据输入的成绩,判断输出成绩的等级: 90分以上(包含90):A; 80-89:B; 70-79:C; 60-69:D 60分以下(不包含60):F。,if语句注意事项,(1) if语句后面的表
4、达式必须用括号括起来 。 (2) 表达式通常是逻辑表达式或关系表达式,但也可以是其它任何表达式,如赋值表达式等,甚至也可以是一个变量。只要表达式非零时,表达式的值就为真,否则就是假。 (3) 在if语句的三种形式中,所有的语句应为单个语句,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用 括起来组成一个复合语句。但要注意的是在之后不能再加分号。 (4) 在if语句中,如果表达式是一个判断两个数是否相等的关系表达式,要当心不要将=写成了赋值运算符=。,if (a = 5) 语句; /表达式的值永远为非0, 所以其后的语句总是要执行的 if (b) 语句; /等价于if (b !=
5、0) 语句;,运行结果:x = 0,运行结果:x != 0,if () if () if () else else else,+语言规定,在缺省 时,else总是和它上面离它最近的未配对的if配对,运行结果:a = 0,运行结果:a = 1,if_else 配对原则,例 输入两数并判断其大小关系,#include using namespace std; void main ( ) int x, y; coutxy; if (x != y) if (x y) cout Yn; else coutX Yn; else coutX = Yn; ,运行结果: Enter integer x, y:
6、12, 23 XY Enter integer x, y: 12, 12 X=Y,if语句嵌套: 一般形式:,课堂练习,2.编写程序实现:从键盘接收3个数,并从小到大输出。,1.编写程序实现:从键盘接收3个数,输出最大的数。,2. switch语句(开关分支语句) 一般形式:,switch ( 表达式) case E1: 语句组 1; break; case E2: 语句组 2; break; . case En: 语句组 n; break; default: 语句组 ; break; ,执行过程:,switch,表达式,语句组1,语句组2,语句组n,语句组,.,使用switch语句注意事项,
7、(1) switch后面的“表达式”,可以是int、char和枚举型中的一种,但不可为浮点型。,float a, b = 4.0; cina; switch ( a ) case 1: b = b + 1; break; case 2: b = b - 1; break; cout“b=“b;,int a, b = 4; cina; switch (a) case 1: b = b + 2; break; case 2: b = b * 2; break; case 1: b = b + 2; break; coutb =, b);,使用switch语句注意事项,(2) case后面语句(组)
8、可加 也可以不加 ,但一般不加 。 (3) 每个case后面“常量表达式”的值,必须各不相同,否则会出现相互矛盾的现象。,switch ( i ) case 1: b = b + 1; break; / 可加可不加 case 2: b = b - 1; break; ,课堂练习1: 使用switch语句按照考试成绩的等级打印出百分制分数段。 成绩等级对应的分数段如下: A:90-100; B:80-89 ; C:70-79 ; D:60-69 ; F:59以下;,使用switch语句注意事项,(4) 每个case后面必须是“常量表达式”,表达式中不能包含变量。,例:按成绩分成A、B、C、D、E
9、、F几个等级。 char score; coutscore; switch (score) case score = 90 : cout= 80 ,课堂练习2. 写程序实现输入一个整数,如果分数为: 90-100输出“A”; 80-89 输出“B”; 70-79 输出“C”; 60-69 输出“D”; 59以下输出“F”; 其它, 输出“输入错误”。,使用switch语句注意事项,(5)多个case子句,可共用同一语句(组)。,例:当a的值是1、2、3时,将b的值加2,当a的值是4、5、6时,将b的值减2。 int a, b = 4; cina; switch (a) case 1: case
10、 2: case 3: b += 2; break; case 4: case 5: case 6: b -= 2; break; default: b *= 2; break; cout b = “b;,使用switch语句注意事项,(6) case后面的“常量表达式”仅起语句标号作用,并不进行条件判断。系统一旦找到入口标号,就从此标号开始执行,不再进行标号判断,所以必须加上break语句,以便结束switch语句。,void main ( ) char ch; ch = getch ( ); switch ( ch ) case Y : printf (Yesn); break; case
11、 N : printf (Non); break; case A : printf (Alln); break; default : printf (Yes,No or Alln); ,运行结果: No,/假设输入为:N,void main ( ) char ch; ch = getch ( ); switch ( ch ) case Y : printf (Yesn); break; case N : printf (Non); case A : printf (Alln); break; default : printf (Yes,No or Alln); ,/假设输入为:N,运行结果:
12、No ALL,使用switch语句注意事项,(7) case子句和default子句如果都带有break子句,那么它们之间顺序的变化不会影响switch语句的功能。,#include using namespace std; void main ( ) char ch; cinch; switch ( ch ) case Y : cout Yesn; break; case N : cout Non; break; case A : cout Alln; break; default : cout Yes,No or Alln; break; ,#include using namespace
13、 std; void main ( ) char ch; cinch; switch ( ch ) case Y : cout Yesn; break; default : coutYes,No or Alln; break; case N : cout Non; break; case A : cout Alln; break; ,使用switch语句注意事项,(8) case子句和default子句如果有的带有break子句,而有的没有带break子句,那么它们之间顺序的变化可能会影响输出的结果。,#include using namespace std; int main ( ) cha
14、r ch; cinch; switch ( ch ) case Y : coutYesn; break; case N : coutNon; break; case A : cout Alln; break; default : cout Yes,No or Alln; ,#include using namespace std; int main ( ) char ch; cinch; switch ( ch ) case Y : cout Yesn; break; default : cout Yes,No or Alln); case N : cout Non; break; case
15、A : cout Alln; break; ,/假设输入为:B,运行结果: Yes,No or All,运行结果: Yes,No or All No,/假设输入为:B,使用switch语句注意事项,(9) switch语句可以嵌套。,void main ( ) int x = 1, y = 0, a = 0, b = 0; switch ( x ) case 1: switch ( y ) case 0: a+; break; case 1: b+; break; case 2: a+; b+; break; case 3: a+; b+; coutna = %d, b = %d; ,运行结果
16、: a = 2,b = 1,【例1】写一程序,从键盘上输入1年份year(4位十进制数),判断其是否闰年。闰年的条件是:能被4整除、但不能被100整除,或者能被400整除。,程序应该这样来设计: 如果能被整除,则余数为,即如果的值等于,则表示能被整除! 首先将是否闰年的标志leap预置为0(非闰年),这样仅当year为闰年时,将leap置为1即可。这种处理两种状态值的方法,对优化算法和提高程序可读性非常有效,请读者仔细体会。,3.4 选择结构程序设计举例,【例2】写写一程序,从键盘上输入任意两个数和一运算符(+:加,-:减,*:乘,/:除),计算其运算的结果并输出 。,程序应该这样来设计: 首先输入两个数和一运算符号,然后根据运算符号来做相应的运算,但是在做除法运算时,应判别除数是否为0,如果为0,运算非法,给出提示信息。如果运算符号不是+、-、*、/则同样是非法的,也应给出提示信息。其它情况,输出运算的结果。,本章小结:,习题:P134P140 1、2、3、4(1)、 4(4)、 4(5),语言程序的执行部分是由语句组成
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年高端设备动产质押租赁服务合同
- 2025年度科研设施清包工程合同模板
- 2025年度房屋买卖过户及家居风水布局服务合同
- 2025年度货架生产设备采购与安装合同
- 二零二五年度XX北京房屋买卖合同税费减免协商范本
- 二零二五年度联营经营新能源车辆合作协议范本
- 二零二五年度高新技术产业研发服务承包合同
- 2025版房屋买卖合同及税费支付约定书
- 二零二五年度照明设备租赁及维护合同
- 2025版短视频营销合作标准服务合同
- 普外科甲状腺与甲状旁腺手术临床技术操作规范2023版
- 小儿腹痛常见病因和治疗
- 110kv各类型变压器的计算单
- 注塑成型PFMEA完整版
- 2020年黔东南苗族侗族自治州榕江县事业单位卫生系统招聘考试《医学基础知识》真题及答案解析
- 实验室病原微生物危害评估报告(同名3479)
- 阿特拉斯·科普柯无油螺杆压缩机
- LS/T 3311-2017花生酱
- 2023版浙江评审卫生高级专业技术资格医学卫生刊物名录
- GB/T 16866-2006铜及铜合金无缝管材外形尺寸及允许偏差
- 概述SFBT(焦点解决短程治疗)课件
评论
0/150
提交评论