版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第4章 程序控制结构,课程引入,成都七中有四位同学中的一位做了好事,不留名,表扬信来了之后,校长问这四位是谁做的好事。 A说:不是我。 B说:是C。 C说:是D。 D说:他胡说。 已知三个人说的是真话,一个人说的是假话。现在要根据这些信息,找出做了好事的人。,问题:谁做的好事?,请计算机来破案?,1、如何找到该人,一定是“先假设该人是做好事者,然后到每句话中去测试看有几句是真话”。“有三句是真话就确定是该人,否则换下一人再试”。 先假定是A同学,让 thisman=A;,思路:,A说:thisman!=A;A!=A假,值为0。 B说:thisman=C;A=C假,值为0。 C说:thisman
2、=D;A=D假,值为0。 D说:thisman!=D;A!=D真,值为1。,显然,不是A做的好事(四个关系表达式值的和为1),再试B同学,让thisman=B; 代入到四句话中,思路:,A说:thisman!=A;B!=A真,值为1。 B说:thisman=C;B=C假,值为0。 C说:thisman=D;B=D假,值为0。 D说:thisman!=D;B!=D真,值为1。,显然,不是B所为(四个关系表达式值的和为2),5,再试C同学,让thisman=C; 代入到四句话中,思路:,A说:thisman!=A;C!=A真,值为1。 B说:thisman=C;C=C真,值为1。 C说:thism
3、an=D;C=D假,值为0。 D说:thisman!=D;C!=D真,值为1。,显然,就是C做了好事(四个关系表达式值之和为3)这时,我们可以理出头绪,要用所谓枚举法,一个人一个人地去试,四句话中有三句为真,该人即所求。,算法实现,if(k!=A+k=C+k=D+k!=D)=3) printf(This Goodman is %cn, k); 读作:如果关系判断真值为3时,输出做好事的人 其中if后面的()内容为条件判断语句中的条件,根据其真假决定程序分支走向。,假设char k; k=getchar();,从键盘输入一个整数,判断是否是奇数,如果是,输出yes,否则输出no,根据判断决定程序
4、走向!,本章内容,4.1 算法及其描述 4.2 顺序结构 4.3 选择结构 4.4 循环结构 4.5 流程的转移控制 4.6 程序的排错 4.7 结构化程序设计方法 4.8 本章小结,1 if语句 2 switch语句 3 例题 4 小结,本次课要点,4.3.1 if 语句,if语句的三种形式: 1简单分支 if 语句,if ( 表达式 ),例如: if(xy) printf(d,x);,语句;,例1:输入两个数,输出其中较大的数 用单分支if语句实现 算法分析: 1、定义程序中需要使用的变量:a,b,max 2、从键盘输入两个值:a,b 思考: a,b的数据类型应该定义成什么? 用scanf
5、函数 还是 getchar函数? 3、初始化变量max=a,与变量b比较,存储较 大值; 4、输出最大值,4.3.1 if 语句举例,if (表达式) 语句1 else 语句2,2双重分支if语句,例如:if (xy) printf(“d”,x); else printf(“d”,y);,4.3.1 if 语句,例2:输入两个数,输出其中较大的数 用双分支if语句实现 算法分析: 1、定义程序中需要使用的变量:a,b,max 2、从键盘输入两个值:a,b 3、用if-else双分支实现: if(ab) max=a; else max=b; 4、输出最大值,4.3.1 if 语句举例,例3:从键
6、盘输入一个字符,判断该字符是否是英文字符 算法分析: 1、判断英文字符的条件: ch=a,4.3.1 if 语句课堂练习,知识延伸如何判断ch变量为数字字符?,4.3.1 if 语句多分支if,3、多分支if if(表达式1)语句1 else if(表达式2) 语句2 else if(表达式3) 语句3 else if(表达式m)语句m else 语句n,成绩评定实例,已知成绩s,要求用多分支(ifelse)语句编程实现显示对应五级制的评定,评定条件如下:,算法分析: 声明成绩s 给s输入成绩 代入判定 结果输出,#include void main() int s; printf(请输入成绩
7、:n); scanf(%d, ,成绩评定实例,代码如下:,4.3.1 if 语句if语句的嵌套,if语句的嵌套 在if语句中又包含一个或多个if语句称为if语句的嵌套。 形式: if() if() 语句1 else 语句2 else if() 语句3 else 语句4,内嵌if,if(表达式1) if(表达式2) 语句1; else 语句2;,if(表达式1) if(表达式2) 语句1; else 语句2;,4.3.1 if 语句if语句的嵌套,分析下列语句,if(表达式1) if(表达式2) 语句1; else 语句2; else 语句3;,匹配原则:else 总是与它前面最近的尚未与 其他
8、else匹配的if配对。,匹配注意事项,应当注意if与else的配对关系。else总是与它上面的最近的if配对。 如果if与else的数目不一样,为实现程序设计者的企图,可以加花括弧来确定配对关系。例如: if( ) if ()语句1 else 语句2 (内嵌if) 这时 限定了内嵌if语句的范围,因此else与第一个if配对。,以下程序的运行结果是( )。 #include main() int a=-5,b=1,c=1,x=0,y=2,z=0; if(c0)x=x+y; if(a0) if(c0)y=x-y; else z=y; printf(%d,%d,%dn,x,y,z); A)2,2
9、,0 B)2,2,2 C)0,2,0 D)2,0,2,else-if匹配实例,答案:A,真题:【2010.3】,有以下程序 #include main() int a=1,b=2,c=3,d=0; if(a=1) if(b!=2) if(c=3)d=1; else d=2; else if(c!=3)d=3; else d=4; else d=5; printf(%dn,d); 程序运行后的输出结果是 。,答案:4,例4:有一个函数,算法1: 输入x 若x=10,则y=3*x-1 输出y,算法2: 输入x 若x1,则y=x 否则: 若x10,则y=2*x-1 否则,则y=3*x-1 输出y,4
10、.3.1 if 语句多分支if,输入x 若x=10, 则y=3*x-1 输出y,#include void main() double x,y; printf(input x:n); scanf(%lf, ,4.3.1 if 语句多分支if,算法:,4.3.1 if 语句使用注意事项,(1)if后的表达式: 值为0,按“假”处理 值为非0,按“真”处理 注意以下情况:(假设a=0) if (a1) printf(O.K.n); if ( 1 ) printf(O.K.n); if (a=5) printf(Hello!.n); if (a= =5) printf(O.K.n); if(a+)p
11、rintf(“O.K.n”); if(b=a+)printf(“O.K.n”);,(2)if语句为真,将执行一条单语句或复合语句 请分析一下if语句的条件句 设:a=1,b=2;,if (a b) a+; b+; printf(“%d,%d”,a,b);,if (a b) a+; b+; printf(“%d,%d”,a,b),if (a b) a+; else a = 0; b = 10; printf(“%d,%d”,a,b);,4.3.1 if 语句使用注意事项,1,3,1,2,0,10,4.3.1 if 语句,if语句的缺点?,switch语句可以解决,4.3.2 switch语句,s
12、witch实现多分支语句,switch(表达式) case 常量1:语句组1; break; case 常量2:语句组2; break; case 常量n:语句组n; break; default:语句组n+1; break; ,注意:表达式只能是整型、字符型或枚举型,例题1 学生成绩等级关系如下:A: 90分以上,B:8089分,C:7079分,D:6069分,E:60分以下,要求编程:从键盘输入学生成绩等级,则输出成绩范围。 switch(grade) case A: printf(85100n); case B: printf(7084n); case C: printf(6069n);
13、 case D: printf(60n); default : printf(Errorn); ,4.2 switch语句,(1)csae后面的各常量或常量表达式的值不能相同。一般为整型、字符型或枚举型。 (2)执行完一个case后面的语句后,对后续csae继续执行,不再进行判断,直到遇break语句或 右花括号为止。,4.3.2 switch语句注意事项,int a=7; switch (a) case 7: printf(“sevenn”); case 8: printf(“eightn);break; default: printf(“errorn”); ,(3)各个case和defau
14、lt的出现次序不影响执行结果 (4) case后的多条语句可不打括号,int a=7; switch(a) default: printf(“errorn”); case 7: putchar(7); printf(“sevenn”);break; case 8: printf(“eightn);break; ,4.2 switch语句注意事项,(5) csae后面的 常量表达式不能用一个区间表示,也不能出现 任何运算符。 例: csae 90=score=100:语句; case 90100:语句;,有以下程序 main() int a=0,b=0,c=0,d=0; if(a=1) b=1;
15、 else d=3; c=2; printf(“%d,%d,%d,%dn”,a,b,c,d); ,程序输出 A)0,1,2,0 B) 0,0,2,3 C) 1,1,2,0 D) 编译有错,有以下程序 main() int a=0,b=0,c=0,d=0; if(a=1) b=1; else d=3; c=2; printf(“%d,%d,%d,%dn”,a,b,c,d); ,程序输出 A)0,1,2,0 B) 0,0,2,3 C) 1,1,2,0 D) 编译有错,4.3.3 程序举例,例,有以下程序 main() int a=0,b=0,c=0,d=0; if(a=1) b=1;c=2; el
16、se d=3; printf(“%d,%d,%d,%dn”,a,b,c,d); ,程序输出 A)0,1,2,0 B) 0,0,0,3 C) 1,1,2,0 D) 编译有错,将以下if-else语句改为switch语句,if(s0,switch(s0 ,答案: (1) 1 (2)break; (3)break; (4) 0,4.3.3 程序举例,例(06年4月19题),A)switch(x) case 1.0: printf(“*n”); case 2.0: printf(“*n”); B) switch(int)x); case 1: printf(“*n”); case 2: printf(
17、“*n”); C) switch(a+b) case 1: printf(*n”); case 2+1: printf(“*n”); D) switch(a+b) case 1: printf(“*n”); case c: printf(“*n”);,若有定义: float x=1.5; int a=1,b=3,c=2; 则正确的switch语句是 ( ),答案解析: A:错在x是实数,且case后面是实常量也是错 B:switch后面多一个分号 D: c是变量而不是常数,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+; printf(a=%d,b=%dn,a,b); 程序的运行结果是( )。【2008.4】 A)a=1,b=0 B)a=2,b=2 C)a=1,b=1 D)a=2,b=1,真
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 圆锥曲线热点问题(二)位置关系类+课件-2026届高三数学二轮专题复习
- 医院科室主任考试题库及答案
- 2026五年级数学下册 观察物体学习方法
- 智能物业设备监控运维管理平台解决方案
- 英语单词听力试卷及答案
- 新编应用写作试题及答案
- 行车工初级试题及答案
- 2025 高中信息技术数据与计算在通信网络课件
- 车辆运输安全奖惩制度
- 太湖游客中心奖惩制度
- 《酒店法律与法规实务》全套教学课件
- 项目经理负责制与项目管理实施办法
- 新媒体技术应用 课件全套 曾琦 单元1-7 认知新媒体岗位及新媒体工具-拓展 AIGC概述 生成式人工智能
- 内蒙古机电职业技术学院单独招生(机电类)考试题(附答案)
- 城市公园景观设计教学课件
- 2025年哈尔滨铁道职业技术学院单招职业技能测试题库及答案一套
- 2024年常州机电职业技术学院高职单招语文历年参考题库含答案解析
- 计算机操作员国家职业标准
- 加强锻炼预防疾病
- 地下室顶板堆载及回顶方案
- 制造执行系统操作与应用课件 1-1-2制造业MES系统功能体系结构
评论
0/150
提交评论