C语言第5章选择结构.ppt_第1页
C语言第5章选择结构.ppt_第2页
C语言第5章选择结构.ppt_第3页
C语言第5章选择结构.ppt_第4页
C语言第5章选择结构.ppt_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、,C语言程序设计,Chap.5 选择结构程序设计,5.1 关系运算与逻辑运算,Chap.5 选择结构程序设计, 短路,(分别设x=15,5时进行比较),! a 求反 a (m=ab),表达式值 0,变量的值 m=0, 注意=与=的区别, 比较 10x20 与 10x,e表达式 s1语句 说明:先计算表达式e的值, 若表达式e的值为真(非0), 执行语句s1;否则不执行。,Ex301 求给定整数的绝对值,#include main() int x,y; scanf(%d, ,Ex302 求4个数中偶数的和,#include main() int a,b,c,d,s=0; printf(Pleas

2、e input a,b,c,d:n); scanf(%d,%d,%d,%d, ,Ex303,printf(%5.2f %5.2f %5.2fn,a,b,c); ,Ex303 输入三个数,从大到小排序后输出,算法:1 定义变量,输入三个数a、b、c,#include main() float a,b,c,t; printf(Input a b c:); scanf(%f%f%f,2 对a、b、c从大到小排序, 将a、b进行比较,大数存入a,小数存入b,if(ab) t=a;a=b;b=t; ,/* 复合语句 */, 将a、c进行比较,大数存入a,小数存入c,if(ac) t=a;a=c;c=t;

3、 , 将b、c进行比较,大数存入b,小数存入c,3 输出从大到小排序后数a、b、c,if(bc) t=b;b=c;c=t; ,算法:1 定义变量,输入三个数a、b、c 2 对a、b、c从大到小排序 将a、b进行比较,大数存入a,小数存入b 将a、c进行比较,大数存入a,小数存入c (此时a为最大数) 将b、c进行比较,大数存入b,小数存入c (b比c大,从大到小排序为a、b、c) 3 输出从大到小排序后数a、b、c,形式2 if(e) s1; else s2;,if语句续,e表达式 s1、s2语句 说明:先计算表达式e的值,若 表达式e的值为真(非0),执 行语句s1;否则执行语句s2。,#i

4、nclude main() float x,y; scanf(%f%f, ,Ex304 求两个数中的最大值,Ex305 判断数a是否能被数k整除,#include main() int a,k; scanf(%d%d, , 嵌套的if语句的配对 else总是和在它前面 离它最近 尚未配对的那个if 配对,Ex1 设x=2.0,求y if(x0.0) y=0.0; else if(x100) y=1.0/x; else y=1.0;,x0.0为假,x100为真 y=1.0/x=0.5,Ex3 设n=9 ,执行下面的if语句后,输出? if(n+10) printf(%dn,n); else pr

5、intf(%dn,n- -);,ab为假,Ex2 设a=4,b=3,c=2,执行下面的if语句后,c=? if(ab) if(b0) c=0; else c+;,n+,9,n=10,10,为真,输出n为10,二 嵌套的if语句,在if语句中,s1和s2可以是任意的合法语句,若它们也是if语句, 就构成嵌套的if语句,Ex306,if(x=0) if(x0) y=x+1; else y=x; else y=x-1;,#include main() int x,y; scanf(%d,printf(x=%d,y=%dn,x,y); ,解法1,解法2,y=x; if(x=0) if(x0) y=x+

6、1; else y=x-1;,解法3,if(x0) y=x+1; else if(x= =0) y=x; else y=x-1;,Ex307 输入某学生的成绩,输出该学生的成绩和等级。 (A级:90-100;B级:80-89;C级:60-79;D级:0-59),#include main() int x; printf(Please input x(0100|x=90) printf(x=%d-An,x); else if(x=80) printf(x=%d-Bn,x); else if(x=60)printf(x=%d-Cn,x); else printf(x=%d-Dn,x); ,三 条件

7、运算符(三目运算符),Ex char c; c=getchar(); c=(A=c 若c是英文大写字母,则转变为小写字母,e1?e2:e3,e1、e2和e3是三个表达式。若e1的值为真(非0),则表达式的值为e2,否则表达式的值为e3,形式: switch(整型表达式) case 常量表达式1: 语句1; case 常量表达式2: 语句2; case 常量表达式n: 语句n; default: 语句n+1; ,3.4 switch语句,每个case子结构都以一个常量表达式作为标志的标号,并按照下面的规则匹配:计算switch的判断表达式,并以此值去依次找与之相等的case标号值,找到后就将流程

8、转到该标号处,执行后面各语句;如果找不到符合的case子结构,就只执行default子结构中的语句序列。default子结构对于switch结构不是必须的。当没有default子结构,并且没有相符合的case时,该switch结构就不被执行。,请注意如果switch的判断表达式的值与case常量表达式i的值相等(称为匹配),在执行后面的语句序列i之后,并不立即退出switch结构,而是继续执行语句序列i+1,语句序列i+2,语句序列n语句序列n+1如图3.16所示,这种流程往往不是编程者所希望的。编程者希望在执行匹配的常量表达式后面的语句序列i之后,应立即退出switch结构。为了解决这一问题

9、,可以在各语句序列后面加一条break语句,使流程脱离switch结构。如图所示。,例: 要求按照考试成绩的等级输出百分制分数段,用 switch语句实现: switch(grade) case printf(”); case printf (”); case printf (”); case printf (”); default printf (”); ,这里,break语句的作用是中断该switch结构,即将流程转出switch结构。所以,执行switch结构的就相当于只执行与判断表达式相匹配的一个case子结构中的语句。其实,可以将break看作为语句序列中必要的成分(位置在语句序列中

10、的最后)。,switch(表达式) case 常量表达式1: 语句序列1 break; case 常量表达式2: 语句序列2 break; case 常量表达式n: 语句序列n break; default: 语句序列n+1 break; ,switch(grade) case printf(”); case printf (”) case printf (”); case printf (”); default printf (”); ,break;,break;,break;,break;,举例,Ex 设x=1,a=0,b=0 switch(x) case 0:b+; case 1:a+;

11、 case 2:a+; b+; ,x=1 a+执行2次, b+执行1次, 所以a=2,b=1,Ex308 用switch语句解,#include main() int x; printf(Please input x(0=x=100)n); scanf(%d, ,分析程序的输出并修改程序,使用switch结构须注意以下几点: (1) 一个switch结构的执行部分是一个由一些case子结构与一个可缺省的default子结构组成的复合语句,它们位于一对花括号之中。,例如可以是: case 3+4:,但不允许写为: int x=3,y=4; switch (z) case x+y: ,(2) sw

12、itch的判断表达式只能对整数求值,可以使用字符或整数,但不能使用浮点表达式。case表达式应当是整型常数表达式,不能含有变量与函数的常数表达式。,(3) 一个switch结构中不可以出现两个具有相同值的常量表达式。例如:,case 3+2: case 8-3:,(4)switch的匹配测试,只能测试是否相等,不能测试关系或逻辑。,不允许,(5)C89要求C编译系统应当实现一个switch最少可以包含257个case子结构,而C99要求最少支持1023个case子结构。 (6)switch结构允许嵌套。,Ex204b 求ax2+bx+c=0的解,d=b2-4ac 1 a=0 1次方程 2 d=0有两个相等实根 3 d0有两个不等实根 4 d0有两个共轭复根,NS图,1 输入a,b,c if(a= =0) 解一元一次方程的根-c/b; 结束程序; else 解一元二次方程:先计算d=b*b-4*a*c; 3 if(d= =0) 输出两个相等的实根-b/(2*a); else if(d0) x1=(-b+sqrt(d)/(2*a); x2=(-b-sqrt(d)/(2*a); 输出两个不相等的实根x1,x2; else 根的实部rp=

温馨提示

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

评论

0/150

提交评论