C语言程序设计第五章 选择结构程序设计课件

上传人:我*** 文档编号:142089007 上传时间:2020-08-16 格式:PPT 页数:32 大小:356KB
返回 下载 相关 举报
C语言程序设计第五章 选择结构程序设计课件_第1页
第1页 / 共32页
C语言程序设计第五章 选择结构程序设计课件_第2页
第2页 / 共32页
C语言程序设计第五章 选择结构程序设计课件_第3页
第3页 / 共32页
C语言程序设计第五章 选择结构程序设计课件_第4页
第4页 / 共32页
C语言程序设计第五章 选择结构程序设计课件_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《C语言程序设计第五章 选择结构程序设计课件》由会员分享,可在线阅读,更多相关《C语言程序设计第五章 选择结构程序设计课件(32页珍藏版)》请在金锄头文库上搜索。

1、if语句 switch语句 选择结构设计举例,第五章 选择结构程序设计,根据给定的条件进行判断, 以决定执行某个分支程序段。,一、if语句(条件选择语句) if语句的三种形式 形式一(单分支): if (表达式) 语句 或 if (表达式) 语句,例:if (xy) printf(“%d”,x);,例:if (xy) printf(“%d”,x);,形式二(双分支): if (表达式) 语句1 else 语句2 或 if (表达式) 语句1 else 语句2 或 if (表达式) 语句1 else 语句2,例: if (xy) max=x; else max=y;,例:if (xy) max=

2、x; else max=y;,例:if (xy) max=x; else max=y;,形式三(多分支):,if ( 表达式1 ) 语句1 else if (表达式2 ) 语句2 else if (表达式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 ( 表达式1 ) 语句1 else if (表达式2 )

3、 语句2 else if (表达式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

4、(“%d,%d”, ,Compile Error!,例5.1 输入两个实数,按照数值由小到大的顺序输出。,#include main() float a,b,t; scanf(“%f,%f”, ,输入: 3.6,-3.2 -3.20, 3.60,交换两个变量的值,例,例5.2 输入三个数,按从小到大顺序输出.,顶层算法:,s1,s2,s3,ab,真,假,a与b互换,s2.1,ac,真,假,a与c互换,bc,真,假,b与c互换,s2.2,细化算法:,例5.3 -1 (x0),#include main() int x,y; scanf(%d, ,输入: 3 输出: x=3,y=1 输入: -4

5、输出: x=-4,y=-1 输入:0 输出: x=0,y=0,例,#include main() char c; printf(Enter a character:); c=getchar(); if(c=0 ,例 判断输入字符种类。,运行: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 letter,运行: Enter a char

6、acter: h The character is a lower letter,运行: Enter a character:* The character is other character,例,if语句嵌套: 一般形式:,if else 配对原则: 缺省 时,else总是和它上面离它最近的未配对的if配对。,例: 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 正确配对方法:加 ,条件运算符

7、与表达式 一般形式: expr1 ? expr2 : expr3 执行过程 功能:相当于条件语句,但不能取代一般if语句,例 (a=b)?Y:N (x%2=1)?1:0 (x=0)?x:-x (c=a x0,表达式值为a xy?1:1.5 /xy ,值为1.0; x=y ,值为1.5,二、switch语句(开关分支语句) 一般形式:(多分支选择),switch( 表达式) case 常量表达式1: 语句 1; case 常量表达式2: 语句 2; . case 常量表达式n: 语句 n; default: 语句 n+1; ,执行过程: 当表达式的值与某一个case后面的常量表达式值相等时,执行

8、此case后面的语句。 否则,执行default后面的语句。,说明: case后的常量表达式的值必须互不相同。 执行完一个case后面的语句,流程转到下一个case继续执行。 case只起标号语句作用,必须用break跳出。 case后可包含多个可执行语句,且不必加 。 switch可嵌套。 多个case可共用一组执行语句。,例 switch(score) case A: printf(“Very good!”); case B: printf(“Good!”); case C: printf(“Pass!”); case D: printf(“Fail!”); default: printf

9、(“data error!”); ,运行结果:score为A时,输出: Very good! Good! Pass! Fail! data error!,如: switch(grade) case A: case B: case C: printf(“score60n”); break; . ,例 switch(grade) case A: printf(“Very good!”);break; case B: printf(“Good!”);break; case C: printf(“Pass!”);break; case D: printf(“Fail!”);break; default

10、: printf(“data error!”); ,三、选择结构设计举例,例5.5 写程序,判断某一年是否闰年。,分析: 闰年的条件 1. 能被4整除,但不能被100整除 2. 能被400整除 (year%4=0 scanf(%d, ,输入:1989 输出: 1989 is not a leap year. 输入:2004 输出: 2004 is a leap year.,例,例5.6 求方程ax2+bx+c=0的根。,分析: 求方程的根,有多种不同的情形,应采用选择结构 解决。 可能的情形如下: a=0,不是二次方程。 b2-4ac=0,有两个相等实根:-b/(2*a)。 b2-4ac0,有

11、两个不等实根。 X1=-b/(2*a)+sqrt(b*b-4*a*c)/(2*a) X2=-b/(2*a)-sqrt(b*b-4*a*c)/(2*a) b2-4ac0,有两个复根。 实部p: -b/(2*a) 虚部q: sqrt(-(b*b-4*a*c)/(2*a) 两个根:p+qi和p-qi,算法:,#include #include main() float a,b,c,disc,x1,x2,realpart,imagpart; scanf(%f,%f,%f,else if(disc1e-6) x1=(-b+sqrt(disc)/(2*a); x2=(-b-sqrt(disc)/(2*a)

12、; printf(has distinct real roots:%8.4f and %8.4fn,x1,x2); else realpart=-b/(2*a); imagpart=sqrt(-disc)/(2*a); printf( has complex roots:n); printf(%8.4f+%8.4fin,realpart,imagpart); printf(%8.4f-%8.4fin,realpart,imagpart); ,例,例5.7 运输公司对用户计算运费。,设路程为s,则运费折扣标准如下: s250 没有折扣 250s500 2%折扣 500 s1000 5%折扣 10

13、00 s2000 8%折扣 2000 s3000 10%折扣 3000 s 15%折扣 计算公式: f=p*w*s*(1-d) 其中: p:每吨每千米货物基本运费 w:货物重量 s:距离 d:折扣,分析: 由于本题中不同路程对应的折扣不同,所以运费计算应根据不同路程和折扣,分为6种不同情形。,本题可采用以下两种方法解决: 多分支if语句 (根据路程s的不同情形,进行不同计算) switch语句 (由于折扣的变化点对应的路程均是250的倍数,因此可用s/250的值,作为case后面的常量表达式的值。),#include main() int s,c; float p,w,d,f; scanf(%

14、f,%f,%d,例5.7 (采用多分支if语句),else if(s3000) d=10; else d=15; f=p*w*s*(1-d/100.0); printf(freight=%15.4fn,f); ,例,#include main() int s,c; float p,w,d,f; scanf(%f,%f,%d, case 4:,例5.7 (采用switch语句),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; f=p*w*s*(1-d/100.0); printf(freight=%15.4fn,f); ,例,选择结构程序设计总结,1.选择(分支)结构是程序设计的基本结构,它是在不同的 情况下选择执行不同的语句。 2. 实现选择结构的语句: if语句(三种格式) : 单分支: if语句 (二中择一) 双分支: if-else语句 (二中择一) 多分支: if-else if语句 (多中择一) switch语句: 多分支 (多中择一) 直观, 清晰 3. 在编程时,必须把所有涉及到的情况都考虑进去, 在运行时要验证所有的情况。 4. 在嵌套的if语句中, 注意if-else的配对问题。 5. 注意书写时,缩进对齐。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号