第4章-选择结构(共13页).docx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第4章-选择结构(共13页).docx》由会员分享,可在线阅读,更多相关《第4章-选择结构(共13页).docx(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上第4章 选择结构1、以下选项中,当x为大于1的奇数时,值为0的表达式是A) x%2=0B) x/2C) x%2!=0D) x%2=1 参考答案:A【解析】算术运算符的优先级高于关系运算符的优先级,所以当x为大于1的奇数时,A选项的值为假,即0B选项的值为不定值,但绝对不是0C选项的值为真,即1D选项的值为真,即12、当变量c的值不为2、4、6时,值为真的表达式是A) (c=2 & c=2 & c=2 & c=6) | (c!=3) | (c!=5) 参考答案:D【解析】逻辑或表达式中有一个值不为0,结果即为真,逻辑与表达式中只有两个运算对象均非零,结果才为真所以只有选
2、项D满足要求3、以下叙述中正确的是A) 在C语言中,逻辑真值和假值分别对应1和0B) 关系运算符两边的运算对象可以是语言中任意合法的表达式C) 对于浮点变量x和y,表达式:x=y 是非法的,会出编译错误D) 分支结构是根据算术表达式的结果来判断流程走向的 参考答案:B【解析】A选项中,在C语言中,逻辑真值对应非0; C选项中,表达式:x=y 是合法的;D选项中,分支结构的流程走向是根据表达式的值,并不仅仅是算数表达式的值。因此B选项正确。4、下列关系表达式中,结果为假的是A) 3 = 4B) (3 6D) (3 != 4) 2 参考答案:D【解析】B选项中,关系表达式(36即76,结果为真;A
3、选项中,32即12,结果为假。因此D选项正确。5、以下叙述中正确的是A) 对于逻辑表达式:a+ | b+,设a的值为1,则求解表达式的值后,b的值会发生改变B) 对于逻辑表达式:a+ & b+,设a的值为0,则求解表达式的值后,b的值会发生改变C) else不是一条独立的语句,它只是if语句的一部分D) 关系运算符的结果有三种:0,1,-1 参考答案:C【解析】B选项和A选项中,对于逻辑表达式,其中b的值不会因为表达式的结果发生改变;D选项中,关系运算符的结果有真和假两种。因此C选项正确。6、有以下程序 #include main() int x=35, B; char z=B ; B = (
4、 x ) & ( z b ); printf(%dn, B ); 程序运行后的输出结果是A) 1 B) 0 C) 35 D) 66 参考答案:A【解析】本题重点考察逻辑运算符和关系运算符的相关知识,已知变量x为整型变量,并赋值为35,变量z为字符型变量,并赋值为B。语句B=(x)&(zb);中,(x)的值为1,B的asscii码小于b的asscii码,所以(z=y)|(y=x)B) (x=y=z)C) (x=y)!(y=z)D) (x=y)&(y=z) 参考答案:D【解析】本题考察关系表达式和逻辑表达式,y大于等于x同时y小于等于z,因此x=y和y=z是逻辑与的关系。因此D选项正确。9、以下叙
5、述中正确的是A) 逻辑或(即运算符|)的运算级别比算术运算要高B) C语言的关系表达式:0x10完全等价于: (0x) & (x0)&(x0 并且x 10。但是 0x10这种写法的结果任何时候都是1; C选项中,逻辑非(即运算符!)的运算级别是最高的;A选项中,算术运算符优先级较高,关系和逻辑运算符优先级较低。因此D选项正确。10、表示关系式xyz的C语言表达式的是A) (x=y)&(y=x)B) (x=y)|(y=x)C) (x=y=z)D) x=y)!(y=x) 参考答案:A【解析】本题考察关系表达式和逻辑表达式,y大于等于x同时y小于等于z,因此x=y和y=z是逻辑与的关系。因此A选项正
6、确。11、有以下程序 #include void fun (char *c) while(*c) if( *c = a & *c = z) *c =*c - (a - A); c+; main() char s81; gets(s); fun(s); puts(s); 当执行程序时从键盘上输入Hello Beijing,则程序的输出结果是A) hello beijingB) Hello BeijingC) HELLO BEIJINGD) hELLO Beijing 参考答案:C【解析】主程序读取整个字符串存于s中,调用fun函数,字符指针c指向数组s。函数fun的功能是把指针c所指向的字符数组
7、中的所有小写字符转换为大写。gets函数可以把空格作为字符串的一部分输入,以回车作为输入结束。如果*c为小写字符,则*c=*c-32(转大写)。因此C选项正确。12、若有以下程序 #include main() int a=6, b=0, c=0; for ( ;a&(b=0); ) b += a; a -= c+; printf(%d,%d,%dn, a,b,c); 则程序的输出结果是A) 5,6,0 B) 6,0,0 C) 6,6,1 D) 5,6,1 参考答案:C【解析】本题重点考察C语言中for语句和逻辑表达式,for语句的一般形式为: for(表达式1;表达式2;表达式3) 语句其循
8、环中的表达式1(循环变量赋初值)、表达式2(循环条件)和表达式3(循环变量增量)都是选择项, 即可以缺省,但;不能缺省。该题目中省略了表达式1(循环变量赋初值)和表达式3(循环变量增量)。for ( ;a&(b=0); )b+=a;a-=c+;相当于while(a&(b=0)) b+=a;a-=c+;。因此C选项正确。13、有以下程序 #include main() double x=2.0, y; if( x0.0 ) y=0.0; else if( (x5.0) & (!x) ) y=1.0 / ( x+2.0 ); else if( x10.0 ) y=1.0 / x; else y=1
9、0.0; printf( %fn , y ); 程序运行后的输出结果是A) 0. B) 0. C) 0. D) 1. 参考答案:C【解析】本题重点考察if语句,变量x和y均为double类型,由于变量x赋值为2.0,因此执行if(x5.0)&(!x),即条件为0,继续执行if( x10.0 ),条件为1,即执行y=1.0 / x;。依据printf()函数输出类型中f是以小数形式输出单、双精度实数。因此C选项正确。14、若a是数值类型,则逻辑表达式 (a=1)|(a!=1)的值是A) 1B) 0C) 2D) 不知道a的值,不能确定 参考答案:A【解析】逻辑或|要求只要两边的运算对象有一个非零,
10、结果就为真,虽然不知道a的值,但是若a为1,则左边运算对象为1,若a的值不是1,则右边运算对象的值为1,所以总能保证一边非零,所以结果为真,即115、有以下程序#include main() int a=1,b=2,c=3,d=0; if (a=1 & b+=2)if (b!=2|c-!=3)printf(%d,%d,%dn,a,b,c); else printf(%d,%d,%dn,a,b,c); else printf(%d,%d,%dn,a,b,c);程序运行后的输出结果是A) 1,3,2 B) 1,3,3 C) 1,2,3 D) 3,2,1 参考答案:B【解析】else总是和最近的if
11、配对,所以进入第一个if语句中条件判断时,因为是逻辑与操作需要两边运算对象的值均为非零值,才为真,所以需要逐个执行判断的结果为1,不再执行第二个case语句中的操作而是进入第二个if语句条件判断,因为b!=2条件成立所以整个条件表达式的值为真,所以不再执行逻辑或的第二个运算对象(c- !=3)c的值不变,也不再执行第一个else语句打印a的值1,b的值3,c的值316、若有以下程序 #include main() int a=1,b=2,c=3,d=4; if (a=2) | (b=1) c=2; if (c=3) & (d=-1) a=5; printf(%d,%d,%d,%dn, a,b,
12、c,d); 则程序的输出结果是A) 1,2,3,4B) 2,1,2,-1C) 5,1,2,-1D) 2,2,2,4 参考答案:D【解析】第一个if语句的判断条件中是逻辑或表达式,所以只要有一个运算对象为真结果就为真,且如果前面的已经为真,后面的表达式不再进行执行判断执行第一个if判断条件时a的值为2,整个表达式的值为真,b的值不变,c的值为2判断第二个if条件为逻辑与表达式,只有两个运算对象均非零,才为真,第一个表达式c=3,不成立,不再判断第二个运算对象,所以不执行d=-1操作和a=5操作所以结果为选项D17、设有定义:int a=0,b=1;,以下表达式中,会产生短路现象,致使变量b的值不
13、变的是A) a+ & b+B) a+ | +bC) +a & b+D) +a | +b 参考答案:A【解析】运算符+放在变量前面时,表示将变量+1,再参与其他操作,a+ & b+时,由于a值是0直接判定与运算结果为0,忽视b+的值,因此b值不发生改变,答案为A选项。18、以下表达式的值与x无关、其值恒为真的是A) 0 x 10 & x10 & x5 D) x5 参考答案:A【解析】逻辑与只有在&符号两边操作均为真时,逻辑与为真,故排除B,D选项;逻辑或当且只当|符号两边操作至少有一个为真时,逻辑或结果为真,x10 | x5 为真与x值有关,故排除C选项;答案为A选项。19、以下选项中错误的是A
14、) a&=b 与 a=a&b 等价B) a=b 与 a=ab 等价 C) a|=b 与 a=a|b 等价 D) a!=b 与 a=a!b 等价 参考答案:D【解析】D选项中,a!=b表示a不等于b时,运算结果为1,或者为0;而a=a!b是一种语法错误,!是非运算,且是单目运算符,只要求有一个操作数,故两者不等价,答案为D选项。20、若有定义:int a=0,b=0,c=0,d=0;,以下关于C语言表达式:(+a | +b) ? +c : +d 执行顺序的叙述正确的是A) 先执行+a,表达式+a的值为1;再执行+b,表达式+b的值为1,由此可确定(+a | +b)值为1,因此执行+cB) 先执行
15、+a,表达式+a的值为1,由此可确定(+a | +b)值为1,因此执行+cC) 先执行+b,表达式+b的值为1;再执行+a,表达式+a的值为1,由此可确定(+a | +b)值为1,因此执行+cD) 先执行+b,表达式+b的值为1,由此可确定(+a | +b)值为1,因此执行+c 参考答案:B【解析】表达式1?表达式2:表达式3,若表达式1为真,则执行表达式2,否则执行表达式3,+a表示先将变量a+1,再执行其他操作,逻辑或运算符遵循短路求值策略,即只有在仅靠左操作数的值无法确定该逻辑表达式的结果时,才会求解右操作数,表达式(+a | +b)中,左操作数+a的值为1,已经可以确定整个逻辑表达式的
16、结果为1,因此右操作数+b不再求解,直接执行表达式2,即+c,答案为B选项。21、若有定义:int a=0,b=0,c=0,d=0; ,有C语言表达式 (a+ & b+) ? c+ : d+,以下关于其执行顺序的叙述正确是A) 先执行a+,表达式a+的值为0,由此即可确定(a+&b+)的值为0,因此执行d+B) 先执行a+,表达式a+的值为0;再执行b+,表达式b+的值为0,由此可确定(a+ & b+)值为0,因此执行d+C) 先执行a+,表确定(a+ & b+)值为1,因此执行c+达式a+的值为1;再执行b+,表达式b+的值为1,由此可D) 先执行b+,表达式b+的值为1;再执行a+,表达式
17、a+的值为1,由此可确定(a+ & b+)值为1,因此执行c+ 参考答案:A【解析】表达式1?表达式2:表达式3,若表达式1为真,则执行表达式2,否则执行表达式3。逻辑与运算符遵循短路求值策略,即只有在仅靠左操作数的值无法确定该逻辑表达式的结果时,才会求解右操作数,表达式(a+&b+)中,左操作数a+的值为0,已经可以确定整个逻辑表达式的结果为0,因此右操作数b+不再求解,直接执行表达式3,即d+,答案为A选项22、下关于逻辑运算符两侧运算对象的叙述中正确的是()。A) 可以是任意合法的表达式B) 只能是整数0或非0整数C) 可以是结构体类型的数据D) 只能是整数0或1 参考答案:A【解析】C
18、语言的逻辑运算符比较特别,它的操作数没有明确的数据类型,可以是任意合法的表达式,所以选择A)。23、设有宏定义: #define IsDIV(k,n) ( ( k%n=1) ? 1 : 0)且变量m已正确定义并赋值,则宏调用: IsDIV(m,5) & IsDIV(m,7)为真时所要表达的是A) 判断m是否能被5和7整除B) 判断m被5和7整除是否都余1C) 判断m被5或者7整除是否余1D) 判断m是否能被5或者7整除 参考答案:B【解析】本题考查逻辑运算符的相关概念,逻辑与若要为真,那么两边都要为真,所需要m都能被5和7整除都余1,所以选项B正确。24、有以下程序#include main(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 选择 结构 13
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内