第05章 选择结构程序设计.ppt_第1页
第05章 选择结构程序设计.ppt_第2页
第05章 选择结构程序设计.ppt_第3页
第05章 选择结构程序设计.ppt_第4页
第05章 选择结构程序设计.ppt_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1、第五章 选择结构程序设计,本章要点:,第一节 关系运算符和关系表达式 (掌握) 第二节 逻辑运算符和逻辑表达式 (掌握) 第三节 if 语句 (掌握) 第四节 switch 语句 (掌握) 第五节 程序举例 (实验),if语句的三种形式 形式一: 格式:if (表达式) 语句 执行过程:,例:if (xy) printf(“%d”,x);,形式二: 格式:if (表达式) 语句1 else 语句2 执行过程:,例:if (xy) max=x; else max=y;,5. 3 if 语句,形式三: 格式:,if ( 表达式1 ) 语句1 else if (表达式2 ) 语句2 else if

2、(表达式3 ) 语句3 . else 语句n ,执行过程:,例:if (salary1000) index=0.4; else if (salary800) index=0.3; else if (salary600) index=0.2; else if (salary400) index=0.1; else index=0;,如:if(a=b,说明: if后面的表达式类型任意,语句可以是复合语句 if(x) if(x!=0) if(!x) if(x=0),例 考虑下面程序的输出结果: #include main() int x,y; scanf(“%d,%d”, ,Compile Erro

3、r!,/*ex5-1.c*/ #include main() int x,y; printf(Enter an integer:); scanf(%d, ,例5-1 求一个数的绝对值,运行:Enter an integer:-12 integer:-12-absolute value :12,/*ex5_2.c*/ #include main() int a,b; printf(Enter integer a:); scanf(%d, ,例5-2 输入两个数并判断两数相等否,运行:Enter integer a:12 Enter integer b:12 a=b,运行:Enter intege

4、r a:12 Enter integer b:9 a!=b,If(a=b),/*ex5_3.c*/ #include main() char c; printf(Enter a character:); c=getchar(); if(c=0 ,例5-3 判断输入字符种类,运行:Enter a character: The character is a control character,运行:Enter a character:8 The character is a digit,运行: Enter a character: D The character is a capital lett

5、er,运行: Enter a character: h The character is a lower letter,运行: Enter a character:F1 The character is other character,if语句嵌套: 一般形式:,例5-4 输入两数并判断其大小关系,/*ex5_4.c*/ #include main() int x,y; printf(Enter integer x,y:); scanf(%d%d, ,运行:Enter integer x,y:12,23 XY Enter integer x,y:12,12 X=Y,说明: 1、if 语句后面的

6、表达式,一般为逻辑表达式或关系表达式,但 也可是任意的类型。 2、else 不能作为单独的语句使用,必须和if 配对使用。 3、在 if 和 else语句后面可以有一条或多条语句,如果是多条语 句,应该用 括起来成为一个复合语句。花括号外面不必再 加分号。 4、if 语句中又包含一个或多个 if 语句。从最内层开始,else 总 是与它上面最近的未曾配对的 if 配对。 5、为避免错用,最好使 if 和 else 数目相同,也可用 来确定。,例: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”);,修改: if (a=b) if(b=c

7、) printf(“a=b=c”); else printf(“a!=b”);,实现if else 正确配对方法:加 ,例 考虑下面程序输出结果: main() int x=100,a=10,b=20; int v1=5,v2=0; if(ab) if(b!=15) if(!v1) x=1; else if(v2) x=10; x=-1; printf(“%d”,x); ,结果:-1,例:请分析下列ifelse的配对情况 if () if () 语句1 else if () 语句2 else 语句3 if () if () if () 语句1 else 语句2 else语句2,规范书写后一目了

8、然: if () if () 语句1 else if () 语句2 else 语句3 if () if () if () 语句1 else 语句2 else 语句2,三、条件运算符:三目运算符 一般形式: expr1 ? expr2 : expr3 执行过程 功能:相当于条件语句,但不能取代一般if语句,例 求 a+|b| printf(“a+|b|=%dn”,b0?a+b:a-b);,例 (a=b)?Y:N (x%2=1)?1:0 (x=0)?x:-x (c=a x0,表达式值为a xy?1:1.5 /xy ,值为1.0; xy ,值为1.5,switch语句(开关分支语句) 一般形式:,s

9、witch( 表达式) case E1: 语句组 1; break; case E2: 语句组 2; break; . case En: 语句组 n; break; default: 语句组 ; break; ,执行过程:,第四节 switch 语句,说明: E1,E2,En是整型或字符型常量,且值必须互不相同 E1,E2,En只起语句标号作用,必须用break跳出 case后可包含多个可执行语句,且不必加 switch可嵌套 多个case可共用一组执行语句,如: case A: case B: case C: printf(“score60n”); break; .,例 switch(sco

10、re) case 5: printf(“Very good!”); case 4: printf(“Good!”); case 3: printf(“Pass!”); case 2: printf(“Fail!”); default : printf(“data error!”); ,运行结果:score为5时,输出: Very good! Good! Pass! Fail! data error!,例5-5 分析以下程序的运行结果 /*ex5_5.c*/ void main() int x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 0:

11、a+; break; case 1: b+; break; case 2: a+;b+; break; case 3: a+;b+; printf(“na=%d,b=%d”,a,b); ,运行结果:a=2,b=1,/*ex5_6.c*/ #include main() int c; printf(Enter m or n or h or other:); c=getchar(); switch(c) case m: printf(nGood morning!n);break; case n: printf(nGood night!n); break; case h: printf(nHello

12、!n); break; default : printf(n?n); break; ,例5-6 根据输入字母输出字符串,程 序 举 例 例5-7 输入三个数,要求按由小到大的顺序输出。p99 /*ex5-2.c*/ void main() int a,b,c,t; printf(“ninput three numbers: ”); scanf(“%d%d%d”, ,例5-8:计算器程序。用户输入运算数和四则运算符, 输出计算结果。 /*ex5_8.c*/ main() float a,b,s; char c; printf(“input expression: a+(-,*,/)b n”);

13、scanf(“%f%c%f”, ,书批110例5.7 运输公司对用户计算运费。 路程()越远,每公里运费越低。标准如下: 没有折扣 折扣 折扣 折扣 折扣 折扣 设每公里每吨货物的基本运费为,货物重为,距离为, 折扣为,则总运费的计算公式为: *(),分析折扣变化的规律性: 折扣的“变化点”都是的倍数 在横轴上加一种坐标,c的值为s/250。c代表的倍数。, 没有折扣 折扣 折扣 折扣 折扣 折扣,,无折扣; c=0 (s/250两整数相除商为整数) ,折扣; c=1 ,; c=2,3 ,; c=4,5,6,7 ,; c=8,9,10,11 ,。 c=12,switch(c) case 0:d

14、=0;break; case 1:d=2;break; case 2:case 3:d=5;break; case 4:case 5:case 6:case 7:d=8;break; case 8:case 9:case 10: case 11:d=10;break; case 12:d=15;break; ,5.5 程序举例(续),#include void main ( ) int c,s;float p,w,d,f;scanf(%f,%f,%d,本章作业: (P111) 必做题: 5.4、5.5、5.6 选做题: 5.7、5.9 补充题: 输入三个整数a,b,c,判断其是否能构成三角形?

15、是何种三角形(等腰/等边/普通)?,部分等级考试试题,21-1-2 分析以下程序的输出结果 /*test21-1-2.c*/ main() int m=5; if(m+5) printf(%d,m+); else printf(%d,m-); ,21-1-3: 下列程序运行的结果是: main() int a=10,b=11,c=12,d; printf(“%dn”, ac?a:c?d=ab:b ); ,21-1-4:已知: int a,b;下列switch语句中,() 是正确的。,(A) switch(a) (B) switch(a+b) case a:a+;break; case 1:a+; case b: b+;,break; case 2:b+; (C) switch(a*b) (D) switch(a/10+b) case 1,2:a+b; case a+b:+a;break; case 3,4:a-b; case a-b: -b; ,23-2-1:下列程序运行的结果为 ( )。 # include vo

温馨提示

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

评论

0/150

提交评论