收藏 分享(赏)

C语言基础 四、 选择结构程序设计.doc

上传人:gnk289057 文档编号:6833748 上传时间:2019-04-23 格式:DOC 页数:22 大小:182KB
下载 相关 举报
C语言基础 四、 选择结构程序设计.doc_第1页
第1页 / 共22页
C语言基础 四、 选择结构程序设计.doc_第2页
第2页 / 共22页
C语言基础 四、 选择结构程序设计.doc_第3页
第3页 / 共22页
C语言基础 四、 选择结构程序设计.doc_第4页
第4页 / 共22页
C语言基础 四、 选择结构程序设计.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

1、四、 选择结构程序设计本章概述:本章主要考查选择结构设计方法,其中包括关系运算符、逻辑运算符、条件运算符以及最常见的 if 条件判断语句。选择结构程序属于 3 种基本的程序设计方法之一。通过对历年试卷内容的分析,本章考核内容约占 6%,属于一般考查内容。年份 20074 20079 20084 20089分值 7 2 6 7大纲要求:1用 if 语句实现选择结构。2用 switch 语句实现多分支选择结构。3选择结构的嵌套。重点难点:1 逻辑运算符的短路原理2 if 语句的嵌套3 switch 语句的使用考点分析:关系运算符及其优先次序关系运算是逻辑运算中比较简单的一种, “关系运算”就是“比

2、较运算” 。将两个值进行比较,判断是否符合或满足给定的条件。如果符合或满足给定的条件,则称关系运算的结果为“真” ;如果不符合或不满足给定的条件,则称关系运算的结果为“假” 。C 语言提供 6 种关系运算符:【特别提醒】:关系运算符是双目运算符,由两个字符组成的关系运算符之间不能有空格。关于优先次序和结合性:(1)前 4 种关系运算符的优先级别相同,后两种也相同。前 4 种高于后两种。(2)关系运算符的优先级低于算术运算符,高于赋值运算符。考点 1(3)结合性是自左向右。 试题解析1已有定义:char c; ,程序前面已在命令行中包含 ctype.h 文件,不能用于判断 c 中的字符是否为大写

3、字母的表达式是( ) 2007 年 9 月第 23 题Aisupper(c) B A=A2、if(表达式)语句 1 else 语句 2。 例如:if(xy)printf(“%d”,x);else printf(“%d”,y);3、if(表达式 1)语句 1 else if(表达式 2)语句 2else if(表达式 3)语句 3else if(表达式 m)语句 melse 语句 m+1(实际是 else 子句中嵌套 if 语句)。【特别提醒】:(1)三种形式的 if 语句中的“表达式”一般为关系表达式或逻辑表达式,但不限于这两种表达式。C 语言中需要逻辑值的地方,只有 0 代表“假” ,非 0

4、(其它)均代表“真”。(2)else 子句不能单独使用,必须是 if 语句的一部分,与 if 配对使用。(3)在 if 和 else 后面可以只含一个内嵌的操作语句,也可以有多个操作语句构成的语句块(复合语句) 。语句块用括起来,语句块后面不要“;”号。 试题解析1设变量 x 和 y 均已正确定义并赋值,以下 if 语句中,在编译时将产生错误信息的是( )2007 年 4 月第 20 题Aif(x+ ); Bif(xy Cif(xy) x- - Dif(yb) a=b; c=a; if(c!=a) c=b; printf(“%d,%d,%dn“,a,b,c); 其输出结果是( ) 。2008

5、年 4 月第 19 题A程序段有语法错 B3,5,3 C3,5,5 D3,5,7解析:在 if 和 else 后面可以只含一个内嵌的操作语句,如果有多个操作语句,则必须用用括起来构成复合语句。题目中没有用,所以只有 a=b;是 ab 真是执行的;c=a; ab 是真还是假都要执行。答案为 B。3有以下程序段int a,b,c;a=10;b=50;c=30;if(ab)a=b;b=c;c=a;printf(“a=%d b=%d c=%dn”,a,b,c);程序输出结果是( ) 2008 年 9 月第 20 题Aa=10 b=50 c=10 Ba=10 b=50 c=30Ca=10 b=30 c=

6、10 Da=50 b=30 c=50解析:同上。答案选 C。if 语句的嵌套if 语句的嵌套:if 语句的 if 块或 else 块中,由包含一个 if 语句。一般形式:if()if()语句 1;else 语句 2;elseif()语句 3;else 语句 4;【特别提醒】:应当注意 if 与 else 的配对关系。else 总是与它上面的最近的未配对的 if配对。特别是 if/else 子句数目不一样时(if 子句数量只会大于或等于 else 子句数量) 。可以用下面两种方法解决匹配问题:(1)利用“空语句” ,使 if 子句数量与 else 子句数量相同。(2)利用确定配对关系。将没有 e

7、lse 子句的 if 语句用括起来。 试题解析考点 61有以下程序#include main()int x=1,y=2,z=3;if(xy)if(yb)max=a;else max=b;可以使用条件运算符来处理:max=ab?a:b;(注:ab 关系运算有没有()都一样) 。它这样执行,ab 为“真”吗?如果为“真” ,条件表达式为 a,否则为 b。条件表达式的一般形式:表达式 1?表达式 2:表达式 3【特别提醒】:(1)条件运算符的执行顺序:先求解表达式 1,若为非 0(真)则求解表达式 2,表达式2 的值就是整个条件表达式的值。若表达式 1 的值为 0(假) ,则求解表达式 3,此时表达

8、式 3 的值就是整个条件表达式的值。(2)条件运算符的优先级高于赋值运算符,低于关系运算符和算术运算符。(3)条件运算符的结合性“自右向左” 。(4)表达式 2 和表达式 3 不仅可以是数值表达式,还可以是赋值表达式,函数表达式。(5)表达式 1,表达式 2,表达式 3 的类型都可以不同。条件表达式值的类型是表达式2,表达式 3 中类型较高的类型。考点 7 试题解析1有以下计算公式 )0(xxy若程序前面已在命令行中包含 math.h 文件,不能够正确计算上述公式的程序段是( )。2007 年 9 月第 20 题Aif(x=0 ) y=sqrt(x); By=sqrt(x)else y=sqr

9、t(-x ); if(x=0 ) y=sqrt(x); Dy=sqrt(x=0?x:-x);if(x0 switch(x) case 1: switch(y) case 0: a+; break; case 1: b+; break; case 2: a+; b+; break; case 3: a+; b+; printf(“a=%d,b=%dn”,a,b); 程序的运行结果是( )2008 年 4 月第 20 题Aa=1,b=0 Ba=2,b=2 Ca=1,b=1 D a=2,b=1 解析:如果 case 语句后面没有 break 是执行下一个语句,如果有 break 就跳出 switch

10、语句。答案为 D。相关习题一、选择题1当把以下四个表达式用作 if 语句的控制表达式时,有一个选项与其它三个选项含义不同,这个选项是Ak%2 Bk%2=1 C(k%2)!=0 D !k%2=12设有定义:int k=1,m=2; float f=7;,则以下选项中错误的表达式是Ak=k=k B-k+ Ck%int(f) D k=f=m3设有定义:int a=2,b=3,c=4;,则以下选项中值为 0 的表达式是A(!a=1)elseprintf(“%d“,+d +1);printf(“%dn“,d);程序运行后的输出结果是A2 B 3 C43 D 44 下列条件语句中,功能与其他语句不同的是A

11、if(a) printf(“%dn“,x); else printf(“%dn“,y);B if(a=0) printf(“%dn“,y); else printf(“%dn“,x);Cif (a!=0) printf(“%dn“,x); else printf(“%dn“,y);D if(a=0) printf(“%dn“,x); else printf(“%dn“,y); 以下 4 个选项中,不能看作一条语句的是A ; B a=0,b=0,c=0; C if(a0); D if(b=0) m=1;n=2;以下程序段中与语句 k=ab?(bc?1:0):0;功能等价的是Aif(aB) B i

12、f(aB) |(bC) ) k=1else k=0;C if(aB) k=1;else if(bC) k=1;else k=0; 有以下程序main()int a=1,b=2,m=0,n=0,k;k=(n=ba)|(m=abc)printf(“%dn“,d);else if(c-1=d)=1)printf(“%dn“,d+1);elseprintf(“%dn“,d+2)执行后输出结果是A2 B3 C4 D编译时有错,无结果已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1 B y=0;else if(x=0) y=0; if(x0) y=1;else y=-1; else

13、 if(x=0)if(x=0); if(x0) y=1;if(x0) y=1 ; else y=0;else y=-1; else y=-1; 有以下程序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 B2 C 3 D 4以下程序的输出结果是main() int a=5,b=4,c=6,d;printf(“%dn“,d=ab?(ac?a:c):(b);A5 B4 C 6 D不确定

14、 以下程序的输出结果是main() int a=4,b=5,c=0,d;d=!aprintf(“%dn“,d); A 1 B 0 C非 0 的数 D-1设 a、 b、C、d、m 、n 均为 int 型变量,且 a=5、b=6、c=7、d=8、m=2 、n=2,则逻辑表达式 (m=ab)scanf(“%d”,if(x-=10 or a=0|a=10 B if(x)else if(x0)y=1;else y=0; else if(x=0)if(x0)y=1; f(x0)y=1;else if(x=0)y=0; else y=-1;else y=-1;语句:printf(“%d“,(a=2)esle

15、 printf(“%dn“,m- -); 当 a=1,b=3,c=5,d=5 时,执行下面一段程序后,x 的值为A1 B 2 C 3 D 6if(a=10 or a=10a=10a=10 a=y)scanf(“%d“,if(x + + 5) printf(“%d“,x);else printf(“%dn“,x - -); A 7 和 5 B 6 和 3 C 7 和 4 D6 和 4以下程序的输出结果是main( ) int a=-1,b=4,k;k=(+ +a0)printf(“%d%d%dn“,k,a,b); A 104 B 103 C 003 D 004下面的程序A 有语法错误不能通过编译

16、B 输出* * * *。C 可以通过编译,但是不能通过连接,因而不能运行。D 输出# # # #。main() int x=3,y=0,z=0;if(x=y+z)printf(“* * * *“);else printf(“# # # #“);若执行下面的程序时从键盘上输入 5,则输出是A7 B6 C 5 D4main() int x;scanf(“%d“,if(x+5) printf(“%dn“,x);else printf(“%dn“,x-);下面程序的输出是A 0 0 3 B 0 1 2 C1 0 3 D1 1 2main() int a=-1, b=4,k;k=(a+0) 0 (x0)

17、 0 (x0) 0 (x0)y=-1;if(x!=0)if(x0) y=1;else y=0下面程序的输出是A-1 B0 C1 D不确定的值main() int x=100, a=10, b=20, ok1=5, ok2=0;if(amain() float x,y;scan(“%f“,if(x(表示回车),则上面程序的输出结果是A 0.000000 B 0.250000 C0.500000 D1.000000请读程序:#includemain() int x=1, y=0, a=0, b=0;switch(x) case 1:switch(y) case 0: a+;break;case 1

18、: b+;break;case 2:a+; b+; break;printf(“a=%d, b=%dn“,a,b);上面程序的输出结果是Aa=2, b=1 B a=1, b=1 Ca=1, b=0 D a=2, b=2以下程序的输出结果是() 。# includemain() int a ,b,d=241;a=d/100%9;b=(-1)printf(“%d,%dn“,a,b); A 6,1 B 2,1 C 6,0 D 2,0若 k 是 int 型变量,且有下面的程序片段:k=-3if(k1);printf(“%d %d %dn“,a,b,c);以下程序运行后的输出结果是 【4】 。main(

19、) 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;printf(“%d %dn“,a,b);有以下程序main( ) int n=0,m=1,x=2;if(!n) x-=1;if(m) x-=2;if(x) x-=3; printf(“%dn”,x);执行后输出结果是【5】 。 以下程序运行后的输出结果是 【6】 。main() int p=30;printf (“%dn”,(p/30 ? p/10 : p%3); 以下程序运行后的输出结果是

20、【7】 。main() int a=1, b=3, c=5;if (c=a+b) printf(“yesn“);else printf(“non“);若有以下程序main() int p,a=5;if(p=a!=0)printf(“%dn“,p);elseprintf(“%dn“,p+2);执行后输出结果是 【8】 。若有以下程序main() int a=4,b=3,c=5,t=0;if(a50) printf(“%d“,a);if(a40) printf(“%d“,a);if(a30) printf(“%d“,a);以下程序输出的结果是【12】 。main() int a=5,b=4,c=3,d;d=(abc);printf(“%dn“,d);设 y 是 int 型变量,请写出判断 y 为奇效的关系表达 【13】 。表示“整数 x 的绝对值大于 5”时值为“ 真”的 C 语言表达式是 【14】 。若 x 为 int 类型,请以最简单的形式写出与逻辑表达式 !x 等价的 C 语言关系表达式 【15】 。表示条件:105|x10 & xx(10 & x100)(并且括号有无都可以)(17) (20x)&(x30)|(x-100) 或 20x&x30|x-100

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报