您好,欢迎来到意榕旅游网。
搜索
您的当前位置:首页C语言习题四选择结构程序设计

C语言习题四选择结构程序设计

来源:意榕旅游网


习题四 选择结构程序设计

1. 设变量x和y均已正确定义并赋值。以下if语句中,在编译时将产生错误信息的是______。

A、if(x++); B、if(x>y && y!=0); C、if(x>0) x-- D、if(y<0) {;}

else y++; else x++;

解析:本题考查的是if语句。if后表达式两侧的圆括号不可少,最后是一条语句或是用花括号括起来的一组语句。选项A和B是在表达式后跟了一条空语句,选项D是在表达式后跟了一组空语句,选项C中x--是表达式而不是语句,所以在编译时会出现错误信息。故本题答案选C。

2. 有以下程序

main()

{ int i;

for(i=1;i<=40;i++)

{ if(i++%5==0)

if(++i%8==0) printf (\"%d\

printf(\"\\n\"); }

执行后的输出结果是______。

A、5 B、24 C、32 D、40

解析:本题考查的是if语句的应用。在满足for 语句条件下,第一个if语句的条件是指i先对5取余后,再自行加1;第二个if语句的条件是指:i=i+1后,再对8取余。故本题答案选C。

3. 在嵌套使用if语句时,C语言规定else总是______。

A、和之前与其具有相同缩进位置的if配对 B、和之前与其最近的if配对

C、和之前与其最近的且不带else的if配对 D、和之前的第一个if配对

解析:本题考查的是if语句的使用规则。在嵌套使用if语句时,C语言规定else总是和之前与其最近的且不带else的if配对。故本题答案为C。

4. 有以下程序

main()

{ int i=1,j=2,k=3;

if(i++==1&&(++j==3||k++==3))

printf(\"%d %d %d\\n\

程序运行后的输出结果是______。

A、1 2 3 B、2 3 4 C、2 2 3 D、2 3 3

解析:本题考查的是条件判断语句。本题中执行\"i++==1&&(++j==3||k++==3)\"时,先执行i++==1,由于i++是先运算,后自加,所以表达式\"i++==1\"的值为真,其值为1,然后执行括号中的表达式,由于++j是先自加,后运算,所以表达式\"++j==3\" 的值为真,根据短路原理,右边的表达式\"k++==3\"不再进行运算,直接得出括中表达的值为1,相与后整个表达式的值也为1,输出i,j,k时,由于未执行过k,所以它们的值分别为2,3,3。故本题的答案为D。

5.有以下程序:

main()

{ int i;

for(i=0;i<3;i++)

switch(i)

{case 0:printf(\"%d\

case 2:printf(\"%d\

default:printf(\"%d\

程序运行后的输出结果是______。

A、022111 B、021021 C、000122 D、012

解析:此题考点是switch语句。switch语句执行完一个case后面的语句后,流程控制转移到下一个case继续执行。“case 常量表达式”只是起语句标号作用,并不是在该处进行条件判断。在执行switch语句时,根据switch后面表达式的值找到匹配的入口标号,就从此标号开始执行下去,不再进行判断。如果想在执行一个case分支后,使流程跳出switch结构,即终止switch语句的执行。可以用一个break语句来达到此目的。本题中没有使用break终止switch语句的执行。在此题中当i=0时,执行第一个case语句,因为它后面没有break,所以一直到执行完default语句结束,再执行下一循环。故本题答案为C。

6. 下列条件语句中,功能与其他语句不同的是______。

A、if(a) printf(\"%d\\n\

B、if(a==0) printf(\"%d\\n\

C、if (a!=0) printf(\"%d\\n\

D、if(a==0) printf(\"%d\\n\

解析:此题考的是if语句中逻辑表达式值的判断。if(a)表示a值为真(即不等于0都为真)的话,就输出x的值,否则输出y的值;if(a==0)表示如果a与0等值,即a不为真,就输出y

的值,否则输出x的值,此与选项A等价;再看选项C,a不等于0,即为真,输出x,否则输出y,与前两个都同意;而选项D恰好与前几项的意思相反,它是a为0时,输出x,为真时输出y。故本题答案为D。

7.有以下程序

main()

{ char k; int i;

for(i=1;i<3;i++)

{ scanf(\"%c\

switch(k)

{ case '0': printf(\"another\\n\");

case '1': printf(\"number\\n\");}

}}

程序运行时,从键盘输入:01↙,程序执行后的输出结果是______。

A、another B、another C、another D、number

number number number number

another number

解析:此题考点是switch语句。本题中没有使用break终止switch语句的执行,本题当k为0时,执行完case '0'后将继续执行case '1'。故本题答案为C。

8.以下4个选项,不能看作一条语句的是______。

A、{;} B、a=0,b=0,c=0; C、if(a>0); D、if(b==0)m=1;n=2;

解析:if语句是用来判定所给的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一。在if和else后面可以只含一个内嵌的操作语句,也可以有多个操作语句,此时用花括号“{}”将几个语句括起来成为一个复合语句。选项D中没有将两个操作语句括起来,不能看作一条语句。故本题答案为D。

9.以下程序的输出结果是______。

main()

{ int a=-1,b=1, k;

if((++a<0)&&!(b--<=0))

printf(\"%d %d\\n\

else

printf(\"%d %d\\n\

}

A、-1 1 B、0 1 C、1 0 D、0 0

解析:本题的考查点是if条件的判断。++a是先运算后使用,b--是先使用后运算。执行++a后,a值为0,不满足条件,所以a为0,b仍为1,接下去执行else语句,输出1 0。故本题答案为C。

10. 有以下程序

main()

{ int c;

while((c=getchar() )!='\\n') {

switch(c-'2') {

case 0: case 1: putchar(c+4);

case 2:putchar(c+4);break;

case 3:putchar(c+3);

default:putchar(c+2);break; } }

}

A、6677 B、6666 C、66778777 D、6688766

解析:本题的考查点是switch()语句。getchar()函数是从键盘接受一个字符输入;当用户键入的字符不是回车符时,会进入一个多分支选择语句,根据表达式c-'2'的值进行分支选择;putchar()是在屏幕上打印一个字符,最后的结果应当为 6677。故本题答案为A。

11.有定义语句:int a=1,b=2,c=3,x;,则以下选项中各程序段执行后,x的值不为3的是______。

A、if (celse if (belse x=3; else x=1;

C、if (a<3) x=3; D、if (aif (a<2) x=2; if (bif (a<1) x=1; if (c解析:本题的考查点是if语句。选项A,因为前面两个条件都不满足,所以执行最后一种操作,x=3;选项B,a<3成立,执行第一种操作,x=3;选项C,a<3成立,执行第一种操作,x=3;a<2成立,执行第二种操作,此时x=2;a<1不成立,最后的不执行,所以执行此段程序后x=2;选项ф,a12.以下关于逻辑运算符两侧运算对象的叙述中正确的是______

A、只能是整数0或1 B、只能是整数0或非0整数

C、可以是结构体类型的数据 D、可以是任意合法的表达式

解析:本题考查的是C语言运算符的基本应用。逻辑运算符两侧的运算对象不但可以是0和1,也可以是任意基本类型或指针类型的数据,还可以是任意合法表达式。故本题答案为D。

13. 若x是int型变量,且有下面的程序片段

for(x=3;x<6;x++) printf((x%2)?(\"**%d\"):(\"##%d\\n\"),x);

上面程序片段的输出结果是______。

① **3 ② ##3 ③ ##3 ④ **3##4

##4 **4 **4##5 **5

**5 ##5

A、① B、② C、③ D、④

解析:本题的考查点是条件运算符。本题答案为D。

14.有以下计算公式

若程序前面已在命令行中包含math.h文件,不能够正确计算上述公式的程序段是______。

A、if(x>=0) y=sqrt(x); B、y=sqrt(x);

else y=sqrt(-x); if(x<0) y=sqrt(-x);

C、if(x>=0) y=sqrt(x); D、y=sqrt(x>=0?x:-x);

if(x<0) y=sqrt(-x);

解析:题面公式的意思是当x大于或等于0,则y的值就取x的平方根,如果x的值小于0,则y的值就取x的相反数的平方根。sqrt(number)用于返回函数参数的平方根,如果number

的值为负数,则返回零。选项B的功能是取x(无论x的值为正、负还是零)的平方根赋值给y,然后再判断x是否小于0,如果小于0,则取x的相反数的平方根赋值给y。这显然不符合题面公式的意思,所以选项B的程序不能正确计算题面公式。故本题答案为B。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务