选择结构作业解答(3)
一、选择题:
1. 判断char型变量ch是否为数字的表达式的是:
a) ?0? < = ch <= ?9? b) (ch > ?0?)&&( ch 9?) c) (ch >= ?0?)&&( ch <= ?9?) d) (ch >= ?0?)||( ch <= ?9?) 答案:c)
2. 能正确表示a和b不同时为0的逻辑表达式的是:
a) a*b==0 b) (a==0)||( b==0) c) (a==0&&b!=0)&&( b==0&&a!=0) d)(a! = 0)||( b != 0)
答案:d)
3. 能表示a不能被2整除且a、b不相等,但a、b的和等于0的C语言逻辑表达式是:
a) a==-b && a%2==0 b) a!=b && a+b==0 && a%2 c) !(a%2)&&a==-b d) a%2==0 a+b==0 答案:b) 4. 有以下程序:
#include
void main { int x=2,y=3,z;
char ch=‘a’; z=(x||!y)&&(ch>?A?); }
程序运行后z的值是 a)true b)false c)0 d)1
答案:d)
说明:C语言的逻辑运算的结果是0或1;
5. 关于if后面一对圆括号中的表达式,叙述正确的是
a) 只能用关系表达式 b) 只能用逻辑表达式
c) 只能用关系表达式或逻辑表达式 d) 可以使用任意合法的表达式
答案:d) 说明:if后面一对圆括号中的表达式用来决定执行哪个分支。判断的根据是该表达式的值是否为非0。所以任意合法的表达式都可以。
6. 对switch后面一对圆括号中的表达式,叙述正确的是
a) 只能用数字 b) 可以是浮点数 c) 只能用整型数据或字符型数据 d)以上叙述都不对
答案:c)
说明:C语言中规定,switch后面一对圆括号中的表达式的值必须是确定的值,具体执行switch中的哪个分支,由该值决定。只有整型、字符型表达式或关系,逻辑表达式才能得到确定的值。 7. 以下不正确的if语句是
a) if (a
c) if (a=b) printf(“equal”); c)if (a>b)&&(b>c) printf(“max=%d”, a); 答案:c)
说明:C语言中规定,if语句的格式应为:if( 表达式) 语句; else 语句2 8. 有以下程序:
#include
void main()
{ int m=-2;
if(m=0) printf(“@@@”); else printf(“%%%”); } 程序运行后的输出结果是:
a)@@@ b)%%% c)%% d)@@@%%% 答案:b)
说明:C语言中if语句执行过程是:先计算if后面的表达式的值,如果表达式的值非0,执行if后
面的语句;否则执行 else 后面的 语句; 本题中,if语句为:
if( m=0 ) printf(“@@@”); else printf(“%%%”);
if后的表达式为:? m=0 ?是一个赋值表达式。值为0;所以执行else分支。 9. 有以下程序:
#include
void main()
{ int a=12,b=20,t=18;
if(a>b) t=a;a=b;b=t;
printf(“a=%d,b=%d,t=%d”,a,b,t); } 程序运行后的输出结果是:
a)a=12,b=20,t=18 b)a=20,b=18,t=18 c) a=20,b=12,t=12 d)a=20,b=18,t=12 答案:b)
说明:语句{ if(a>b) t=a;a=b;b=t; printf(“a=%d,b=%d,t=%d”,a,b,t); }的执行过程为: 先判断?a>b?是否成立,因为?a=12, b=20?,所以?a>b?的值为0;则语句?t=a;?不会执行。所以被执行的语句依次为:?a=b;b=t; printf(“a=%d,b=%d,t=%d”,a,b,t);? 10. 有以下程序:
#include
{ int t=65;
if(t>45) printf(“%d”,t);
else printf(“%d”,t); if(t>35) printf(“%d”,t);
else printf(“%d”,t); if(t>25) printf(“%d”,t); } 程序运行后的输出结果是:
a)65 b)6565 c) 656565 d)不确定的值 答案:c)
11. 有以下程序:
#include
{ int t=8;
if(t-->=8) printf(“%d\\n”,t--); else printf(“%d\\n”,t++); } 程序运行后的输出结果是:
a)9 b)8 c) 7 d)6 答案:c)
说明:(1)t的初值为8;
(2)语句?if(t- ->=8) printf(“%d\\n”,t--);
else printf(“%d\\n”,t++);?的执行过程为:
首先计算表达式?t- ->=8?的值;值为1;之后t变为7;
然后执行语句?printf(“%d\\n”,t--); ,输出的值为7,之后t变为6;?
12. 有以下程序:
#include
{ int a=2,b=5,c=3,d=2,x; if(a%3>b) if(c>d)
if(b else x=--c ; else x=++b ; } 程序运行后的x的值是: a)6 b)3 c) 2 d)7 答案:a) 说明:C语言中规定,if语句中的else总是和它上面的离它最近的未曾匹配过的if相匹配。所以与? if(a%3>b) ?匹配的else为?else x=++b ;? 13. 与?y=(x>0?x:x<0?-x:0)?的功能相同的if语句是 a) if (x) b)if (x) if(x>0) y=x; if(x==0) y=0; else if(x<0) y=-x; else if(x<0) y=-x; else y=0; else y=x; c) y=-x; d) y=0; if (x>=0) if (x) if(x>0) y=x; if(x>0) y=x; b) if (x>0) y=x; else y=-x; else if(x==0) y=0; else if(x<0) y=-x; else y=0; else y=-x; 答案:a) 14. 若a、b、c1、c2均是整型变量,x,y是浮点型变量,则以下正确的switch语句是 a) switch (c1+c2){ case 1:y=a+b;break; case 2:y=a-b;break; case 1:y=b-a;break; } c) switch (c1+c2); { case c1:y=a-b;break; case c2:x=a*b;break; default:x=a+b; } 答案:d) b) switch (x+y){ case 1: case 2:printf(“%d”,a+b);break; } d)switch (a-b){ default: y=a*b;break; case 10: case 9: x=a+b;break; case 7: case 5: y=b-a;break; } 15. 以下关于switch和break语句的说法中正确的是 a) break语句只能用在switch语句中; b) 在switch语句中,可以根据需要决定是否使用break语句; c) 在switch语句中必须使用break语句; d) 以上选项都不正确; 答案: b) 16. 有以下程序: #include { int c; c=getchar(); switch(c-?2?) { case 0: case 1: putchar(c+4); case 2: putchar(c+4);break; case 3: putchar(c+3); case 4: putchar(c+2);break;} } 程序运行后,输入2<回车>,输出结果是: a)66 b)6 c)6654 d)没有输出内容 答案:a) 二、填空题: 1. 关系运算符、逻辑运算符、算术运算符和赋值运算符的运算优先级顺序由高到低的排列顺序是 算 术运算符、关系运算符、逻辑运算符、赋值运算符 。 2. 满足|y|<9的C语言表达式是 y>-9&&y<9 。 3. 设字符变量ch的值是大写英文字母,将它转换为相应的小写英文字母的C语言表达式是 ch=ch+32 。 4. 判断字符变量ch的值是英文字母的C语言表达式是 ch>=?a?&&ch<=?z?|| ch>=?A?&&ch<=?Z? 。 5. 通过函数y=4+|x|计算函数值的if语句是 if(x>=0) y=4+x; else y=4-x; 。 6. 以下程序的功能是输入3个整型变量num1、num2、num3的值,然后对这3个变量按从小到大的顺 序排序。请填空。 #include void main(){ int num1,num2,num3,temp; printf(“please input three numbers:”); scanf(“%d%d%d”,&num1,&num2,&num3); if( ⑴ ){ temp=num1;num1= num2; num2=temp; } if( ⑵ ){ temp=num1;num1= num3; num3=temp; } if( ⑶ ){ temp=num2;num2= num3; num3=temp; }} 答案: (1)num1>num2 (2)num1>num3 (3)num2>num3 7. 以下程序的功能是输入3个整型变量num1、num2、num3的值,求它们中的最大值。请填空。 #include void main(){ int num1,num2,num3,temp;

