选择结构作业解答(3)一、选择题:1.判断char型变量ch是否位数字的表达式的是:a)‘0’ < = ch <= ’9’ b) (ch > ‘0’)&&( ch <’9’)c) (ch >= ‘0’)&&( ch <= ’9’) d) (ch >= ‘0’)||( ch <= ’9’)答案:b)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%2c) !(a%2)&&a==-b d) a%2==0 a+b==0答案:d)解答:4.有以下程序:#include<stdio.h>void main{ int x=2,y=3,z;char ch=‘a’;z=(x||!y)&&(ch>’A’);}程序运行后z的值是a)true b)false c)0 d)15.关于if后面一对圆括号中的表达式,叙述正确的是a) 只能用关系表达式 b) 只能用逻辑表达式c) 只能用关系表达式或逻辑表达式 d) 可以使用任意合法的表达式6.对switch后面一对圆括号中的表达式,叙述正确的是a) 只能用数字 b) 可以是浮点数c) 只能用整型数据或字符型数据 d)以上叙述都不对7.以下不正确的if语句是a) if (a<b) t=a; b) if (a!=b && b);c) if (a=b) printf(“equal”); c)if (a>b)&&(b>c) printf(“max=%d”, a);8.有以下程序:#include<stdio.h>void main(){ int m=-2;if(m=0) printf(“@@@”);else printf(“%%%”); }程序运行后的输出结果是:a)@@@ b)%%% c)%% d)@@@%%% 9.有以下程序:#include<stdio.h>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=18c) a=20,b=12,t=12 d)a=20,b=18,t=1210.有以下程序:#include<stdio.h>void main(){ 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)不确定的值11.有以下程序:#include<stdio.h>void main(){ int t=8;if(t-->=8) printf(“%d\n”,t--);else printf(“%d\n”,t++); }程序运行后的输出结果是:a)9 b)8 c) 7 d)612.有以下程序:#include<stdio.h>void main(){ int a=2,b=5,c=3,d=2,x;if(a%3>b)if(c>d)if(b<d) x=++b;else x=++d;else x=--c;else x=++b; }程序运行后的x的值是:a )6 b)3 c) 2 d)713. 与“y=(x>0?x:x<0?-x:0)”的功能相同的if 语句是b) if (x>0) y=x; else if(x<0) y=-x; else y=0;14. 若a 、b 、c1、c2均是整型变量,x ,y 是浮点型变量,则以下正确的switch 语句是15. 以下关于switch 和break 语句的说法中正确的是a) break 语句只能用在switch 语句中;b) 在switch 语句中,可以根据需要决定是否使用break 语句; c) 在switch 语句中必须使用break 语句; d) 以上选项都不正确; 16. 有以下程序:#include<stdio.h> void main(){ 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);a) switch (c1+c2){case 1:y=a+b;break ; case 2:y=a-b;break; case 1:y=b-a;break;}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;}c ) switch (c1+c2); {case c1:y=a-b;break ; case c2:x=a*b;break; default:x=a+b;}b )if (x) if(x>0) y=x; else if(x<0) y=-x; else y=0;c) y=-x;if (x) if(x>0) y=x; else if(x==0) y=0; else y=-x; a) if (x) if(x>0) y=x; else if(x<0) y=-x; else y=0; d) y=0; if (x>=0) if(x>0) y=x; else y=-x;case 4: putchar(c+2);break;}}程序运行后,输入2<回车>,输出结果是:a)66 b)6 c)6654 d)没有输出内容二、填空题: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<stdio.h>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>num37.以下程序的功能是输入3个整型变量num1、num2、num3的值,求它们中的最大值。
请填空。
#include<stdio.h>void main(){int num1,num2,num3,temp;printf(“please input three numbers:”);scanf(“%d%d%d”,&num1,&num2,&num3);if(num1>num2) max=num1;else ⑴ ;if( ⑵ ) max= num3;printf(“The largest number is : %d.\n”, max); }答案:(1)max=num2(2)num3>max8.以下程序的功能是从键盘输入一个年份year的值(4位十进制数),判断其是否闰年。
闰年的条件是:能被4整除,但不能被100整除;或者能被400整除。
请填空。
#include<stdio.h>void main(){int year,leap=0;printf(“please input the year:”);scanf(“%d”,&year);if(year%400==0) leap=1;else if( ⑴ ) leap=1;else ( ⑵ )if( ⑶ ) printf(“ %d is a leap year.\n”, year);else printf(“ %d is not a leap year.\n”, year); }答案:(1)year%4==0&& year%100!=0(2)leap=0(3)leap9.以下程序运行后,若从键盘输入5 5<回车>,则程序的输出结果是:#include<stdio.h>void main(){int a,b;scanf(“%d%d”, &a,&b);if(a>6)if(a<10) a++;else a--;if(b>6){if(b<10) b++;}else b--;printf(“ a= %d , b=%d\n”, a, b);}答案: a= 5,b=410.以下程序运行后,若从键盘输入-123<回车>,则程序的输出结果是:#include<stdio.h>void main(){int digit,in,s=0;scanf(“%d”, &in);if(in<0) in=-in;digit =in%10;s=s+ digit * digit ;digit =in/100;s=s+ digit * digit ;printf(“ sum= %d \n”, s); }答案: sum= 1011.以下程序运行后,若从键盘输入6<回车>,则程序的输出结果是:#include<stdio.h>void main(){int n;scanf(“%d”, &n);printf(“ %d%c\n”, n,(n%4==0)?’*’:’#’); }答案: 4#12.以下程序运行后,若从键盘输入4<回车>,则程序的输出结果是:#include<stdio.h>void main(){int n; scanf(“%d”, &n);printf(“ %d%c\n”, n,(n%4==0)?’*’:’#’); }答案: 4*13.以下程序的功能是输入一个2~99之间的数据,判断该数据是否是一个同构数。