版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、四、选择结构程序设计 1、用if语句实现选择结构。 2、用switch语句实现多分枝选择结构。 3、选择结构的嵌套。 分析:这部分主要讲解了选择结构程序设计,一般会出2-3个选择题和2-3个填空题。单支和多支选择的区别和作用,这部分知识会与后面的循环语句结合使用。,4.2 if语句,1.If语句的三种基本形式 (1)if(表达式) 语句 例: if(xy) printf(“%d”,x);,4.2 if语句,(2)if(表达式) 语句1 else 语句2 例: if (xy) printf(“%d”,x); else printf(“%d”,y);,4.2 if语句,(3)if(表达式1)语句1
2、 else if(表达式2)语句2 else if(表达式3)语句3 else if(表达式m)语句m else 语句n,4.2 if语句,例: if (number500)cost=0.15; else if(number300)cost=0.10; else if(number100)cost=0.075; else if(number50)cost=0.05; else cost=0;,4.2 if语句,2.If语句的嵌套 在if语句中又包含一个或多个if语句称为if语句的嵌套。 形式: if() if() 语句1 else 语句2 else if() 语句3 else 语句4,内嵌if
3、,4.2 if语句,匹配规则: else总是与它上面的,最近的,统一复合语句中的,未配 对的if语句配对。,例: if() if() 语句1 else if() 语句2 else 语句3,例: if() if() 语句1 else if() 语句2 else 语句3,当if和else数目不同时,可以加花括号来确定配对关系。,4.2 if语句,说明: (1)3种形式的if语句中在if后面都有表达式, 一般为逻辑表达式或关系表达式。 (2)第二,第三种形式的if语句中,在每个 else前面有一个分号,整个语句结束处有一 个分号。 (3)在if和else后面可以只含有一个内嵌的操 作语句,也可以由多
4、个操作语句,此时用花 括号将几个语句括起来成为一个复合语句。,4.2 if语句 1.下列条件语句中,功能与其他语句不同的是() if(a) printf(“%dn”,x); else printf(“%dn”,y); B) if(a=0) printf(“%dn”,y); else printf(“%dn”,x); C) if(a!=0) printf(“%dn”,x); else printf(“%dn”,y); D) if(a=0) printf(“%dn”,x); else printf(“%dn”,y); 2.若有以下程序,执行后输出结果是() main() int p,a=5; if
5、 (p=a!=0) printf(“%dn”,p); else printf(“%dn”,p+2); ,1D 2 1,3.若有以下程序,执行后输出结果是() main() int a=4,b=3,c=5,t=0; if (ab) t=a;a=b;b=t; if (ac) t=a;a=c;c=t; printf(“%d%d%dn”,a,b,c); 4.以下程序运行后的输出结果是() main() int a=1,b=3,c=5; if (c=a+b) printf(“yesn”); else printf(“non”); ,3.534 4.yes,5.下列程序的输出结果是() main() in
6、t n=0,m=1,x=2; if(!n) x-=1; if(m) x-=2; if(x) x-=3; printf(“%dn”,x); 6.若执行以下程序时从键盘输入9,则输出是() main() int n; scanf(“%d”, A)11 B)10 C)9 D)8,5.-4 6.B,7.阅读下述程序段: y=-1; if (x!=0) if (x0) y=1; else y=0; 该程序段所描述的数学关系是() -1 x0 -1 x0 1 x0 0 x0,7.C,8.对下述程序段正确的描述是() #include main() int x=0,y=0,z=0; if (x=y+z) p
7、rintf(“*”); else printf(“#”); A)有语法错误,不能通过编译 B)输出* C)可以编译,但不能通过链接,因而不能运行 D)输出#,8.D,9.阅读以下程序: main() int x; scanf(“%d”, ,9.B 10.20,0,if嵌套 1.以下程序的输出结果是() main() int a=3,b=4,c=5,d=2; if (ab) if (bc) printf(“%d”,d+1); else printf(“%d”,+d+1); printf(“%dn”,d); A)2 B)3 C)43 D)44,1.A,2.有以下程序,执行后输出结果是() main
8、() int a=5,b=4,c=3,d=2; if (abc) printf(“%dn”,d); else if (c-1=d)=1) printf(“%dn”,d+1); else printf(“%dn”,d+2); A)2 b)3 C)4 D)编译时有错误,无结果,2.B,数学表达abc ab scanf(“%d,%d”, ,3.a0,4.2 if语句,例5.1 输入两个实数,按代数值由小到大的顺序输出这两个数。#include void main()float a,b,t;scanf(%f%f,4.2 if语句,例5.2 输入三个数a,b,c,要求按由小到大的顺序输出。,If ab
9、将a和b对换 If ac 将a和c对换 If bc 将b和c对换,4.2 if语句,#include void main ( ) float a,b,c,t; scanf(%f,%f,%f, ,4.2 if语句,-1 (x0) 算法1: 算法1: 输入x 输入x 若x0,则y=1 若x=0,则y=0 否则y=1 输出y,上例中的程序段有四个,请判断哪个是正确的? 程序1: 程序2: if(x=0) Y=-1; if(x0) y=1; else else y=0; if(x= =0) y=0; else y=-1; else y=1; 程序3: 程序4: Y=-1; y=0; if(x!=0)
10、if(x=0) If(x0) y=1; if(x0) y=1; else y=0; else y=-1;,正 确,正 确,-1 (x0),#include void main() int x,y; scanf(“%d”, ,例4.4输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。 #include void main ( ) char ch; scanf(%c, ,如果字符变量ch的值为大写字母,则条件表达式的值为(),即相应的小写字母。如果ch的值不是大写字母,则条件表达式的值为,即不进行转换。,3.条件运算符 格式: 表达式?表达式表
11、达式 功能: 判断表达式1的值,如果成立就执行表 达式2,否则就执行表达式3 使用场合:若在语句中,当被判别的表达式的 值为“真”或“假” 时,都执行一个赋值语 句且向同一个变量赋值时,可以用一个 条件运算符来处理。,说明: (1)条件运算符的执行顺序:先求解表达式,若为非(真) 则求解表达式,此时表达式的值就作为整个条件表达式 的值。若表达式的值为(假),则求解表达式,表达 式的值就是整个条件表达式的值。 (2)条件运算符优先级高于赋值运算符 ,低于关系运算符 和算术运算符。 (3)条件运算符的结合方向为“自右至左”。 (4)“表达式2”和“表达式3”不仅可以是数值表达式,还可以 是赋值表达
12、式或函数表达式。 (5)条件表达式中,表达式的类型可以与表达式和表达 式的类型不同。,例: if () max=; else max; 当ab时将a的值赋给max,当ab时将b的值赋给max, 可以看到无论ab是否满足,都是向同一个变量赋值。 可以用下面的条件运算符来处理: max()?;,4.3条件运算符和条件表达式 形式:表达式1?表达式2:表达式3 优先级:高于赋值运算,低于逻辑运算、关系运算、算术运算 1.int f1(int x,int y) return xy?x:y; int f2(int x,int y) return xy?y:x main() int a=4,b=3,c=5
13、,d,e,f; d=f1(a,b); d=f1(d,c); e=f2(a,b); e=f2(e,c); f=a+b+c-d-e; printf(“%d,%d,%dn”,d,f,e); 执行后输出结果是() A)3,4,5 B)5,3,4 C)5,4,3 D)3,5,4,C,2.以下程序运行后的输出结果是() main() int p=30; printf(“%dn”,(p/30?p/10:p%3); 3.以下程序段中与语句k=ab?(bc?1:0):0等价的是 A)if(ab),2.3 3.A,4.若整型变量a,b,c,d中的值依次是1,4,3,2,则条件表达式ab?a:cd?c:d的值是()
14、 A)1 B)2 C)3 D)4 5.以下程序的输出结果是() main() int w=4,x=3,y=2,z=1; printf(“%dn”,(wx?w:zy?z:x); A)1 B)2 C)3 D)4,4.A 5.A,4.4 switch语句,switch语句形式如下: switch(表达式) case 常量表达式1:语句1;break; case 常量表达式2:语句2;break; case 常量表达式3:语句3;break; case 常量表达式n:语句n;break; default :语句n+1 ,switch语句体,跳出当前switch语句体,4.4 switch语句,说明:
15、(1)switch后面括弧内的“表达式”, 可以是整型和字符型表达式。 (2)当表达式的值与某一个case后面的常量表达式的值相等时,就执行此case后面的语句,若所有的case中的常量表达式的值都没有与表达式的值匹配的,就执行default后面的语句。 (3)执行完一个case后面的语句后,流程控制转移到下一 个case继续执行。“case常量表达式”只是起语句标号作用,并不是在条件判断。在执行 switch语句时,根据switch后面表达式的值找到匹配的入口标号,就从此标号开始执行下去,不再进行判断。 (4) case常量表达式的类型必须与switch后圆括号中的表达式类型相同每一个cas
16、e的常量表达式的值必须互不相同,否则就会出现互相矛盾的现象。,4.4 switch语句,(5) 各个case和default的出现次序不影响执行结果。default也可以不出现。 (6) 应该在执行一个case分支后,可以用一个break语句来终止switch语句的执行。 (7) 语句标号后的语句可以是一个或多个可以共用一组执行语句,必要时还可以省略不写。 (8)在关键词case与常量表达式之间一定要有空格,例1.以下程序,当输入15时,运行结果是() main() int i,m=0,n=0,k=0; scanf(“%d”, ,1.010,例2.有程序如下: #include int mai
17、n() int g; scanf(“%d”, 当执行以上程序时,输入85,程序输出是() A)A B)B C)AB D)BCDE,2.D,1.输入2时以下程序输出结果是( ) main() int i; scanf(“%d”, ,1.4,2.当输入4时以下程序输出结果是 . main() int i; scanf(“%d”, ,2.6,3.以下程序运行后输出结果是() 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; p
18、rintf(“%d%dn”,a,b); ,3.21,4.若a,b,c1,c2,x,y,均是整型变量,正确的switch语句是() A)switch (a+b); B)switch (a*a+b*b) case 1:y=a+b;break; case 3: case 0:y=a-b;break; case 1:y=a+b;break; case 3:y=b-a;break; C)switch a D)switch (a-b) case c1:y=a-b;break default:y=a*b;break; case c2:x=a*d;break case 3: default:x=a+b; ca
19、se 4:x=a+b;break; case 10: case 11:y=a-b;break; ,4.D,5.以下程序运行时输出的结果是() main() int a=15,b=21,m=0; switch (a%3) case 0:m+;break; case 1:m+; switch (b%2) default:m+; case 0:m+;break; printf(“%dn”,m); A)1 B)2 C)3 D)4,5.A,6.若变量已正确定义,以下语句段的输出结果是() x=0;y=2;z=3; switch (x) case 0: switch (y=2) case 1:printf
20、(“*”); break; case 2:printf(“%”);break; case 1: switch (z) case 1:printf(“$”); case 2:printf(“*”); break; default :printf(“#”); A)*# B)*% C)$*# D)$*,6.A,7.以下程序,运行时输入01 ,输出结果是 main() char k;int i; for(i=1;i3;i+) scanf(“%c”, A)another B)another C)another D)number number number number number another number,7.C,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2027届江苏省常州市钟楼区二十四中学化学九年级第一学期期末监测试题含解析
- 江苏省南京市宁海五十中学2027届化学九年级第一学期期末质量跟踪监视模拟试题含解析
- 2027届陕西省西安市陕师大附中物理九年级第一学期期末学业质量监测试题含解析
- 江苏省常州市武进区2027届化学九上期末综合测试模拟试题含解析
- 2027届江苏省盐城市大丰区实验初级中学物理九年级第一学期期末考试模拟试题含解析
- 山东省潍坊市高密四中学文慧学校2027届九上化学期中教学质量检测试题含解析
- 2027届唐山市林西中学九上化学期中达标检测模拟试题含解析
- 国画专业笔试题目及详细答案
- 解析苏州经贸面试题型与标准回答
- 医疗机构病理标本管理实施方案
- 2026年全国公共营养师之二级营养师考试专项特训题(附答案)
- 工程咨询机构档案归档管理规范
- 2026福建泉州交发集团(第一批)校园招聘89人笔试备考题库及答案详解
- 基于大单元教学的生物教学设计:以遗传规律为例
- 2026年广东省中考语文试卷(含详细答案解析)
- 23J916-1 住宅排气道(一)
- 公有云技术及应用高职全套教学课件
- 预防艾滋病、梅毒和乙肝母婴传播工作规范(2020年版)
- 电子元器件封装识别与手工焊接技术-2
- 瑶浴功效与作用讲义课件
- 14D504接地装置安装图集
评论
0/150
提交评论