已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2019/9/11,1,第4章 选择结构程序设计,4.1 if语句 4.2 switch语句,C语言程序设计教程,2019/9/11,2,C语言用三种语句控制程序的执行流程顺序结构、选择结构和循环结构。这一章主要讲选择结构。 例如计算分段函数,时,须先判断x是大于还是小于0的。这时就需要选择语句来判断。,2019/9/11,3,4. 1 if 语句,例如计算分段函数,计算 x0 ,如果结果为1:计算:y=3-x; 否则,计算:y=2 * x; 需要根据x的值进行流程选择(分支)。,2019/9/11,4,4.1.1. 单分支选择语句,if (表达式) 语句,首先先判断表达式的值,若为非0则执行下面的语句,若为0则跳过该语句。,2019/9/11,5,一般形式:i f (表达式) 语句 ;,main() float x , y; scanf(“%f ”, ,2019/9/11,6,4.1.2. 双分支选择语句,if (表达式) 语句1 else 语句2,首先先判断表达式的值,若为非0则执行语句1。,若为0则执行语句2。,2019/9/11,7,if (表达式) 语句1 else 语句2,main() float x , y; scanf(“%f ”, ,2019/9/11,8,例: 输入两个数, 比较其大小, 将较大的数输出。,流程分析: (1) 输入两个数据a,b ; (2) 如果ab 则输出a ;否则,输出b。 #include main( ) float a, b; scanf(“%f, %f”, ,2019/9/11,9,4.1.3. 多分支选择语句,2019/9/11,10,多分支选择语句一般形式,if (表达式) 语句1 else if (表达式)语句2 else ,2019/9/11,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/9/11,12,main( ) int score; sanf(“%d”, ,2019/9/11,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/9/11,14,复杂条件选择例,问题: 输入两个字符ch1和ch2, 如果ch1=Z 且 ch2=B, 则输出“You are right ! “,2019/9/11,15,main() char ch1,ch2; ch1=getchar( ); ch2=getchar( ); if ( ch1 = Z ,2019/9/11,16,4.1.4 if语句的嵌套,1.在语句中嵌套if语句 在上述3种if语句结构中,当if(表达式)或else后面的语句本身又是一个if语句结构时,就形成了if语句的嵌套结构。 例如多分支选择结构。,2019/9/11,17,if 语句的二层嵌套结构如下:,if ( 表达式1) if ( 表达式1_2) 语句1_1 else 语句1_2 else if ( 表达式2_1) 语句2_1 else 语句2_2,2019/9/11,18,例:分段函数可以用两层嵌套来完成:,if (x 0 时走这条分支*/ if (x=10) /*当 0 x =1 0 */ y = x-2; else /*当 10 x */ y = x/10;,2019/9/11,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/9/11,20,注意结构,if (x 0 时走这条分支*/ if (x=10) /*当 0 x =1 0 */ y = x-2; else /*当 10 x */ y = x/10; 添加花括号后可以很清楚地表示出else 与外层if的配对情况。,2019/9/11,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/9/11,22,以下程序在输入5,2之后的执行结果是_(s3-2.c) #include main() int s,t,a,b; scanf(“%d,%d”,2019/9/11,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/9/11,24,void main() int tall; char sex; printf( “input sex and tall :” ); scanf( “%c %d”, ,2019/9/11,25,练习: 1、有下列条件语句: if(ab)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/9/11,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/9/11,27,2、写出下面程序的执行结果。 main() int x,y=1,z; if(y!=0)x=5;printf(“x=%dt”,x); if(!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/9/11,28,综合练习 1、说明下列程序的功能。 #include main() int c;printf(“input acharacter:”); c=getchar() if (c=a ,2019/9/11,29,2、编程: 从键盘输入任意三个整数,按照从大到小次序输出。,2019/9/11,30,#include main() int a,b,c,temp; scanf(“%d%d%d”, ,解答:,2019/9/11,31,4.2 Switch语句,switch(表达式) case 常量1: 语句1; case 常量2: 语句2; case 常量3: 语句3; default: 语句4; ,另一种多分支语句,根据表达式不同的值选择不同的语句。,2019/9/11,32,注意:,语句中的表达式可以是数字型或字符型,表达式的值,称为开关值。 语句结构中各个case后常量表达式的值必须互不相同;否则执行时将出现矛盾,即同一个开关值,对应多种执行方案。 当表达式的值与某一个常量相等时,就执行后面的语句;若无break语句,执行该语句后,流程控制转移到下一个分支: 继续执行这一个分支的语句,一至到最后下个语句执行完。 当表达式的值与所有常量表达式的值不相等时,执行default:后面的语句。,2019/9/11,33,switch(i) case 1:printf(An); case 2:printf(Bn); case 3:printf(Cn); case 4:printf(Dn); default: printf(En); ,看下面的例子:,假设i=3时,则会从i=3时做起的语句。,如果给每条语句加上break;,break; break; break;break;,这样就只执行一条语句,语句后加或不加“break;”可以使多分支变得非常灵活。如果多种情况需要共用一个执行语句,可用case的常量表达式多种情况列出,最后一种情况后,才放执行的语句。,2019/9/11,34,case后面的语句可以是一条语句,也可以是复合语句,还可以是花括弧括起来的几条语句,还可以是空语句。 有多条语句时会顺序执行完所有语句。,2019/9/11,35,以下程序的执行结果是_(s3-3.c) #include main() int x=1,y=0; switch(x) case 1: switch(y) case 0:printf(“firstn”) ;break; case 1:printf(“secondn”);break; case 2:printf(“thirdn”); ,2019/9/11,36,例4.6 编程:根据输入的学生的成绩判断等级。当成绩score 90时为 A等; 成绩70score 90 为B等; 成绩60score 70 为C等; 成绩score 60 为D等 (score 为整数)。,分析: 设score为整型数,在score90 的范围内,score可能取100, 99,.,90,利用两个整数相除,结果自动取整的特性,score和 score /10 有如下对应关系: score score/10 90 10, 9 7089 7 , 8 6069 6 60以下 default 因此,可以用score /10的值来确定分支。,2019/9/11,37,#include main() /*用switch 语句评级 */ int score; scanf(“%d“ , ,2019/9/11,38,写程序:输入一整数,输出它是奇数还是偶数;(s3-4.c) 提示:若除的余数为则输出偶数,否则输出奇数;,2019/9/11,39,写程序:输出3个输入数的最大数;(s3-5.c) 提示:用scanf函数输入3个变量,用选择语句比较后用printf将结果输出,2019/9/11,40,编写一个程序将用户输入的字母进行大小写转换。(s3-6.c) 提示:大小写对应的ASCII相差32。接收一个字符,判断是否大小写,再进行相应转换。,2019/9/11,41,有一函数:(s3-7.c) x (5x
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年全国房地产估价师之估价原理与方法考试易错题(附答案)x - 会计实务操作指南
- 2024年办公写字楼标准版租赁合同模板
- 2024年新疆高一年级上册生物学试题及解答参考
- 农村集体经营性建设用地入市存在的问题
- FP设计应用教程 7
- 2026年KTV歌手聘用合同
- 5.1 基本组合逻辑电路
- 2026年全国临床执业医师考试押题密卷二
- 2025年中级经济法回忆版(附答案)
- 2026年高二物理下学期期中考试试卷及答案(六)
- 煤矿某扩建项目职业病危害预评价报告
- 电厂电气运行规程
- 正念减压疗法详解课件
- 盘扣式脚手架监理实施细则
- 烟草、烟草种子及烟草制品 DNA 鉴别检测方法技术报告
- (高清版)WST 311-2023 医院隔离技术标准
- 外科学教学课件:颈、腰椎退行性疾病
- 《光伏组件培训》课件
- 两年(22-23)高考数学真题专题分类汇编专题十二 概率统计(教师版)
- 《公输》文言文知识ppt
- 师德师风建设实施细则
评论
0/150
提交评论