c5选择程序流程设计(1).ppt_第1页
c5选择程序流程设计(1).ppt_第2页
c5选择程序流程设计(1).ppt_第3页
c5选择程序流程设计(1).ppt_第4页
c5选择程序流程设计(1).ppt_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

第第5 5章章 选择结构程序设计选择结构程序设计 池州学院现代教育中心池州学院现代教育中心 本讲主要内容: 一、一、if语句 二、二、switchswitch语句语句 学习目的与要求: 掌握if语句的三种形式(if,if-else,if-else if) 及其执行过程; 掌握if语句嵌套概念; 掌握条件运算; 掌握多路分支switch语句的格式及其执行过程。 学习重点:if语句和switch语句的格式及其执行过程。 学习难点:if语句的嵌套;switch语句的执行过程。 if语句(条件选择语句) vif语句的三种形式 l形式一 : u格 式:if (expression) statement u执 行过程: expr statement 非0 =0 例:if (xy) printf(“%d”,x); expr statement1statement2 非0=0 l形式二: u格式:if (expression) statement1 else statement2 u执行过程: 例:if (xy) max=x; else max=y; l形 式三 : u格 式 : if ( expr1 ) statement1 else if (expr2 ) statement2 else if (expr3 ) statement3 . else statementn expr1 statemnt1 非0 =0 expr2 expr3 statemntnstatemnt3statemnt2 非0 非0 =0 =0 u执行过程: 例: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(3) printf(“OK”); if(a) printf(“%d”,a); l说明: uif后面的表达式类型任意 u语句可以是复合语句 u if(x) if(x!=0) if(!x) if(x=0) 例 考虑下面程序的输出结果: #include main() int x,y; scanf(“%d,%d”, if(xy) x=y; y=x; else x+; y+; printf(“%d,%dn”,x,y); Compile Error! /*ch4_1.c*/ #include main() int x,y; printf(“Enter an integer:“); scanf(“%d“, y=x; if(yabsolute value:%dn“,x,y); 例 求一个数的绝对值 运行:Enter an integer:-12 integer:-12-absolute value :12 /*ch4_2.c*/ #include main() int a,b; printf(“Enter integer a:“); scanf(“%d“, printf(“Enter integer b:“); scanf(“%d“, if(a=b) printf(“a=bn“); else printf(“a!=bn“); 例 输入两个数并判断两数相等否 运行:Enter integer a:12 Enter integer b:12 a=b 运行:Enter integer a:12 Enter integer b:9 a!=b /*ch4_3.c*/ #include main() char c; printf(“Enter a character:“); c=getchar(); if(c=0 printf(“Enter integer x,y:“); scanf(“%d,%d“, if(x!=y) if(xy) printf(“XYn“); else printf(“XY Enter integer x,y:12,12 X=Y lif else 配对原则:缺省 时,else总是和它上面离它最近的未配对 的if配对 if() if() if() else. else. else. 例: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”); 修改: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”); 实现if else 正确配对方法:加 例 考虑下面程序输出结果: main() int x=100,a=10,b=20; int v1=5,v2=0; if(a60n”); break; 例 switch(score) 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! 例 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+; printf(“na=%d,b=%d”,a,b); 运行结果:a=2,b=1 /*ch4_5.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!n“); break; default : printf(“n?n“); break; 例 根据输入字母输出字符串 一、if 语句的的综合应用 例1:求一元二次方程ax2+bx+c=0的实根解(设a0)。 补充例题:输入任意三个数,按由大到小顺序排列输出。 例2:闰年判断程序。 例3:学生成绩分等显示程序。学生有数学、英语两门 课。按百分制考核。要求输入各门课成绩,按平均成绩分 等显示:excellence(优秀): 平均成绩90; all right(良好): 80平均成绩=0) x1=(-b+sqrt(d)/(2*a); x2=(-b-sqrt(d)/(2*a); printf(“x1=%f,x2=%f“,x1,x2); 返回 扩充到复数根 #include “math.h“ main() float a,b,c; float x1,x2,d; printf(“Please Input a,b,c: “); scanf(“%f,%f,%f“, d=b*b-4*a*c; if(d=0) x1=(-b+sqrt(d)/(2*a); x2=(-b-sqrt(d)/(2*a); printf(“x1=%f,x2=%f“,x1,x2); 返回 float realpart,imagpart; else realpart=-b/(2*a); imagpart=sqrt(-d)/(2*a); printf(“x1=%f+%fin“,realpart,imagpart); printf(“x2=%f-%fin“,realpart,imagpart); 补充例题:输入任意三个数, 按由大到小顺序排列输出。 结束 输出a,b,c 开始 输入a,b,c a=b printf(“Please input a b c:“); scanf(“%d%d%d“, if (a=b if (a=c if (b=a if (b=c if (c=a if (c=b 返回 综合上述两种情况,得到闰年判别条件的逻辑表达式 : 例2:闰年判断程序。 main() int year; printf(“Type in a year:n“); scanf(“%d“, if (year%400=0|year%4=0 else printf(“%d is not a leap year.n“); 闰年的判别条件:(假设年份变量用year表示) 当year是400的整倍数时为闰年; 条件表示为: year%400=0 当year是4的整倍数,但不是100的整倍数时为闰年。 条件表示为: year%4=0 else if(ave=80) printf(“all rightn“); else if(ave=70) printf(“middlingn“); else if(ave=60) printf(“passn“); else printf(“failn“); 返回 二、switch 语句的综合应用 例3:学生成绩分等显示程序。学生有数学、英语两门课。按 百分制考核。要求输入各门课成绩,按平均成绩分等显示。 excellence(优秀): 平均成绩90; all right(良好): 80平均成绩 main() int a,b,result=0; char ch; printf(“nnInput a,b:“); scanf(“%d,%d“, printf(“Input one of(+,-,*,/):“); getchar(); ch=getchar(); switch(ch) case +: result=a+b; break; case -: result=a-b; break; case *: result=a*b; break; case /: result=a/b; break; default: printf(“operator is wrong!“); printf(“nresult=%d“,result); 返回 分支结构控制语句-小结 1实现分支结构的控制语句主要有if语句、switch语句 。if语句通常有if、if else、if-else if三种形式。 2if语句任何一种if语句的语句体中都可以出现其他的 if结构,这种结构称为if语句的嵌套结构。在理论上if嵌 套的层数没有限制,但当嵌套层数较多时,容易使程序在 逻辑上变得不清晰。 3switch语句专门用于多路分支选择,适用于if else if式的结构,而且更清晰。程序总是试图从满足条件 的第一个case子句开始执行其后的所有语句,而不再对其 后的case进行判断。因此,通常使用break语句中断switch 语句的运行。 分支结构程序设计-

温馨提示

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

评论

0/150

提交评论