第4选择结构程序设计.ppt

上传人:本田雅阁 文档编号:2531188 上传时间:2019-04-05 格式:PPT 页数:43 大小:1.19MB
返回 下载 相关 举报
第4选择结构程序设计.ppt_第1页
第1页 / 共43页
第4选择结构程序设计.ppt_第2页
第2页 / 共43页
第4选择结构程序设计.ppt_第3页
第3页 / 共43页
亲,该文档总共43页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第4选择结构程序设计.ppt》由会员分享,可在线阅读,更多相关《第4选择结构程序设计.ppt(43页珍藏版)》请在三一文库上搜索。

1、2019/4/5,1,第4章 选择结构程序设计,4.1 if语句 4.2 switch语句,C语言程序设计教程,2019/4/5,2,C语言用三种语句控制程序的执行流程顺序结构、选择结构和循环结构。这一章主要讲选择结构。 例如计算分段函数,时,须先判断x是大于还是小于0的。这时就需要选择语句来判断。,2019/4/5,3,4. 1 if 语句,例如计算分段函数,计算 x0 ,如果结果为1:计算:y=3-x; 否则,计算:y=2 * x; 需要根据x的值进行流程选择(分支)。,2019/4/5,4,4.1.1. 单分支选择语句,if (表达式) 语句,首先先判断表达式的值,若为非0则执行下面的语

2、句,若为0则跳过该语句。,2019/4/5,5,一般形式:i f (表达式) 语句 ;,main() float x , y; scanf(“%f ”, ,2019/4/5,6,4.1.2. 双分支选择语句,if (表达式) 语句1 else 语句2,首先先判断表达式的值,若为非0则执行语句1。,若为0则执行语句2。,2019/4/5,7,if (表达式) 语句1 else 语句2,main() float x , y; scanf(“%f ”, ,2019/4/5,8,例: 输入两个数, 比较其大小, 将较大的数输出。,流程分析: (1) 输入两个数据a,b ; (2) 如果ab 则输出a

3、;否则,输出b。 #include main( ) float a, b; scanf(“%f, %f”, ,2019/4/5,9,4.1.3. 多分支选择语句,2019/4/5,10,多分支选择语句一般形式,if (表达式) 语句1 else if (表达式)语句2 else ,2019/4/5,11,多分支问题:,写一个程序完成下列功能: 1 输入一个分数score 2 score60 输出 E 3 60=score 70 输出 D 4 75=score 80 输出 C 5 80=score 90 输出 B 5 90=score 输出 A,2019/4/5,12,main( ) int s

4、core; sanf(“%d”, ,2019/4/5,13,3种if语句的说明: “表达式”一般为逻辑或关系表达式,也可以为任和数值类型的表达式,非0为真,0为假。 如:if (3)printf(“ok”);if(a)printf(“%d”,a); 都是合法的表达式,表达式类型为任意数据类型。 2、3中形式if语句中,每个else前有一分号,语句结束处有一分号,不能省略。 如:if(x)0)printf(“%f”,x); else printf(“%”,-x); 在if和else后执行语句可以是一条简单语句、空语句或复合语句,也可以嵌套其它流程控制语句。 如:if(a+ba,2019/4/5,

5、14,复杂条件选择例,问题: 输入两个字符ch1和ch2, 如果ch1=Z 且 ch2=B, 则输出“You are right ! “,2019/4/5,15,main() char ch1,ch2; ch1=getchar( ); ch2=getchar( ); if ( ch1 = Z ,2019/4/5,16,4.1.4 if语句的嵌套,1.在语句中嵌套if语句 在上述3种if语句结构中,当if(表达式)或else后面的语句本身又是一个if语句结构时,就形成了if语句的嵌套结构。 例如多分支选择结构。,2019/4/5,17,if 语句的二层嵌套结构如下:,if ( 表达式1) if

6、( 表达式1_2) 语句1_1 else 语句1_2 else if ( 表达式2_1) 语句2_1 else 语句2_2,2019/4/5,18,例:分段函数可以用两层嵌套来完成:,if (x 0 时走这条分支*/ if (x=10) /*当 0 x =1 0 */ y = x-2; else /*当 10 x */ y = x/10;,2019/4/5,19,两层嵌套流程图,x= -10,x= 0,x=10,y=2*x,y=x+2,y= x-2,y=x/10,非0,0,0,非0,0,非0,2019/4/5,20,注意结构,if (x 0 时走这条分支*/ if (x=10) /*当 0 x

7、 =1 0 */ y = x-2; else /*当 10 x */ y = x/10; 添加花括号后可以很清楚地表示出else 与外层if的配对情况。,2019/4/5,21,分析程序的执行结果(s3-1.c) #include main() int a,b,c,d,x; a=c=0; b=1; d=20; if(a)d=d-10; else if(!b) if(!c)x=15; else x=25; printf(“d=%dn”,d);,2019/4/5,22,以下程序在输入5,2之后的执行结果是_(s3-2.c) #include main() int s,t,a,b; scanf(“%

8、d,%d”,2019/4/5,23,例:编程实现:根据两个数sex和tall分类, 如果sex为F,当tall大于等于150时,输出” A “,否则输出 “ B “;若sex不为F, 当tall大于等于170时,输出A,否则输出B。 分析: 根据sex分支 在sex为F的分支中判断tall=150否 在sex不为F的分支中判断tall=170否,2019/4/5,24,void main() int tall; char sex; printf( “input sex and tall :” ); scanf( “%c %d”, ,2019/4/5,25,练习: 1、有下列条件语句: if(a

9、b)if(cd)x=1;else if(ac)if(b,d)x=2;else x=3;else if(ad)if(bc)x=4;else x=5;else x=6; else x=7; 写出配对关系,2019/4/5,26,if(ab) if(cd)x=1; else if(ac) if(bd)x=2; else x=3; else if(ad) if(bc)x=4; else x=5; else x=6; else x=7;,解答:,2019/4/5,27,2、写出下面程序的执行结果。 main() int x,y=1,z; if(y!=0)x=5;printf(“x=%dt”,x); if

10、(!y)x=3;else x=5; printf(“x=%dn”,x); x=1;if(z0)x=3; else x=5;printf(“x=%dtn”,x); if(z=y0)x=3);else if(y=0)x=5;else x=7; printf(“x=%dt”,x); printf(“z=%dtn”,z); if(x=y=z)x=3;printf(“x=%dt”,x); printf(“z=%dtn”,z); ,2019/4/5,28,综合练习 1、说明下列程序的功能。 #include main() int c;printf(“input acharacter:”); c=getch

11、ar() if (c=a ,2019/4/5,29,2、编程: 从键盘输入任意三个整数,按照从大到小次序输出。,2019/4/5,30,#include main() int a,b,c,temp; scanf(“%d%d%d”, ,解答:,2019/4/5,31,4.2 Switch语句,switch(表达式) case 常量1: 语句1; case 常量2: 语句2; case 常量3: 语句3; default: 语句4; ,另一种多分支语句,根据表达式不同的值选择不同的语句。,2019/4/5,32,注意:,语句中的表达式可以是数字型或字符型,表达式的值,称为开关值。 语句结构中各个c

12、ase后常量表达式的值必须互不相同;否则执行时将出现矛盾,即同一个开关值,对应多种执行方案。 当表达式的值与某一个常量相等时,就执行后面的语句;若无break语句,执行该语句后,流程控制转移到下一个分支: 继续执行这一个分支的语句,一至到最后下个语句执行完。 当表达式的值与所有常量表达式的值不相等时,执行default:后面的语句。,2019/4/5,33,switch(i) case 1:printf(An); case 2:printf(Bn); case 3:printf(Cn); case 4:printf(Dn); default: printf(En); ,看下面的例子:,假设i=

13、3时,则会从i=3时做起的语句。,如果给每条语句加上break;,break; break; break;break;,这样就只执行一条语句,语句后加或不加“break;”可以使多分支变得非常灵活。如果多种情况需要共用一个执行语句,可用case的常量表达式多种情况列出,最后一种情况后,才放执行的语句。,2019/4/5,34,case后面的语句可以是一条语句,也可以是复合语句,还可以是花括弧括起来的几条语句,还可以是空语句。 有多条语句时会顺序执行完所有语句。,2019/4/5,35,以下程序的执行结果是_(s3-3.c) #include main() int x=1,y=0; switch

14、(x) case 1: switch(y) case 0:printf(“firstn”) ;break; case 1:printf(“secondn”);break; case 2:printf(“thirdn”); ,2019/4/5,36,例4.6 编程:根据输入的学生的成绩判断等级。当成绩score 90时为 A等; 成绩70score 90 为B等; 成绩60score 70 为C等; 成绩score 60 为D等 (score 为整数)。,分析: 设score为整型数,在score90 的范围内,score可能取100, 99,.,90,利用两个整数相除,结果自动取整的特性,sc

15、ore和 score /10 有如下对应关系: score score/10 90 10, 9 7089 7 , 8 6069 6 60以下 default 因此,可以用score /10的值来确定分支。,2019/4/5,37,#include main() /*用switch 语句评级 */ int score; scanf(“%d“ , ,2019/4/5,38,写程序:输入一整数,输出它是奇数还是偶数;(s3-4.c) 提示:若除的余数为则输出偶数,否则输出奇数;,2019/4/5,39,写程序:输出3个输入数的最大数;(s3-5.c) 提示:用scanf函数输入3个变量,用选择语句比

16、较后用printf将结果输出,2019/4/5,40,编写一个程序将用户输入的字母进行大小写转换。(s3-6.c) 提示:大小写对应的ASCII相差32。接收一个字符,判断是否大小写,再进行相应转换。,2019/4/5,41,有一函数:(s3-7.c) x (5x0) y = x1 ( x=0) x1 (0x10) 编写程序:要求输入x,输出y。,2019/4/5,42,编写程序,输入一个学生的生日(年,月,日:y1,m1,d1);并输入当前的日期(年,月,日:y2,m2,d2);输出该生的实足年龄。(s3-8.c) 提示:因为每月的天数不等,所以只要求精确到年月。可设定实足年龄为y3岁零m3个月。 参考算法:y3=y2-y1; m3=m2-m1; if (m30) y3-; m3=12-abs(m3); ,2019/4/5,43,继续吧,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1