选择结构练习题 答案 期末参考题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二单元选择结构练习题
一、选择题:
1、若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是( A)。
A.1
B.0
C.2
D.3
2、 if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是(D )。
A.必须是逻辑值
B.必须是整数值
C.必须是正数
D.可以是任意合法的数值
3、有以下程序运行时,输入的值在哪个范围才会有输出结果(B )。
main(){
int x; scanf("%d",&x);
if(x<=3) ;
else if(x!=10) printf("%d\n",x); }
A.不等于10的整数 B.大于3且不等于10的整数
C.大于3或等于10的整数 D.小于3的整数
4、在嵌套使用if语句时,C语言规定else总是( C )。
A.和之前与其具有相同缩进位置的if配对 B.和之前与其最近的if配对C.和之前与其最近的且不带else的if配对 D.和之前的第一个if配对
5、若有表达式(w)?(--x):(++y),则其中与w 等价的表达式是(D )。
A.w==l
B.w==0
C.w!=l
D.w!=0
6、希望当num的值为奇数时,表达式的值为“真”,num的值为偶数时,表达式的值为“假”,则以下不能满足的表达式是( B )。
A. num%2==1
B. !(num%2==0)
C. !(num%2)
D. num%2
7、设有定义:int a=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是( C )。
A.if(a>
B. c=a,a=b,b=c; B.if(a>B. {c=a,a=b,b=c;}
C.if(a>B. c=a;a=b;b=c;
D.if(a>B. {c=a;a=b;b=c;}
8、若有表达式(w)?(--x):(++y),则其中与w 等价的表达式是(D )。
A.w==l
B.w==0
C.w!=l
D.w!=0
9、有以下程序运行时,输入的值在哪个范围才会有输出结果( B )。
main(){
int x; scanf("%d",&x);
if(x<=3) ;
else if(x!=10) printf("%d\n",x); }
A.不等于10的整数 B.大于3且不等于10的整数
C.大于3或等于10的整数 D.小于3的整数
10、若变量已正确定义,在if (W)printf(“%d\n,k”);中,以下不可替代W 的是 (A )
A.a<>b+c
B.ch=getchar()
C.a==b+c
D.a++
11.逻辑运算符两侧运算对象的数据类型 ( D ) 。
A)只能是0或1 B)只能是0或非0正数
C)只能是整型或字符型数据 D)可以是任何类型的数据
12.下列表达式中,不满足“当x的值为偶数时值为真,为奇数时值为假”的要
求。
( B)
A)x%2==0 B)!x%2!=0 C)(x/2*2-x)==0 D)!(x%2)
13.以下程序片段。
int x=2,y=3;
printf( A );
A)什么都不输出 B)输出为:***x=2
C)输出为:###y=2 D)输出为:###y=3
14.能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是。
( C )
A)(x>=1) && (x<=10) && (x>=200) && (x<=210)
B)(x>=1) | | (x<=10) | | (x>=200) | | (x<=210)
C)(x>=1) && (x<=10) | | (x>=200) && (x<=210)
D)(x>=1) | | (x<=10) && (x>=200) | | (x<=210)
15.C语言对嵌套if语句的规定是:else总是与。
( D )
A)其之前最近的if配对 B)第一个if配对
C)缩进位置相同的if配对 D)其之前最近的且尚未配对的if配对
16.设:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b) && (n=c>d)后n的值为。
( B )
A)1 B)2 C)3 D)4
17.下面 ____B______ 是错误的if语句(设int x,a,b;)
A)if (a=b) x++; B)if (a=<b) x++;
C)if (a-b) x++; D)if ( x ) x++;
18.以下程序片段 D。
main ( )
{ int x=0,y=0,z=0;
if (x=y+z) printf(“***”);
else printf(“###”); }
A)有语法错误,不能通过编译 B)输出:***
C)可以编译,但不能通过连接,所以不能运行 D)输出:###
19.对下述程序,是正确的判断。
A
main ( )
{ int x,y;
scanf(“%d,%d”,&x,&y);
if (x>y) x=y;y=x;
else x++;y++;
printf(“%d,%d”,x,y); }
A)有语法错误,不能通过编译 B)若输入3和4,则输出4和5
C)若输入4和3,则输出3和4 D)若输入4和3,则输出4和5
20.若w=1,x=2,y=3,z=4,则条件表达式w<x ? w : y<z ? y : z的值是。
D A)4 B)3 C)2 D)1
21.下述表达式中,可以正确表示x≤0或x≥1的关系。
B
A)(x>=1) | | (x<=0) B)x>=1 | x<=0
C)x>=1 && x<=0 D)(x>=1) && (x<=0)
22.下述程序的输出结果是。
C
main ( )
{ int a=0,b=0,c=0;
if (++a>0 || ++b>0) ++c;
printf(“%d,%d,%d”,a,b,c);
}
A)0,0,0 B)1,1,1 C)1,0,1 D)0,1,1
23.下述程序的输出结果是。
A
main ( )
{ int x=-1,y=4,k;
k=x++<=0 && !(y--<=0);
printf(“%d,%d,%d”,k,x,y);}
A)0,0,3 B)0,1,2 C)1,0,3 D)1,1,2
24.以下程序输出结果是 B 。
main ( )
{ 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;
case 3:a++; b++;
}
printf(“a=%d,b=%d”,a,b);
}
A)a=1,b=0 B)a=2,b=1 C)a=1,b=1 D)a=2,b=2
25.下述程序的输出结果是。
A
main ( )
{ int a,b,c;
int x=5,y=10;
a=(--y=x++)?–y : ++x ;
b=y++ ; c=x ;
printf(“%d,%d,%d”,a,b,c);
}
A)6,9,7 B)6,9,6 C)7,9,6 D )7,9,7
26.当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是。
A if (a<b)
if (c<d) x=1;
else
if (a<c) if (b<d) x=2;
else x=3;
else x=6;
else x=7;
A)1 B)2 C)3 D)4
27.在下面的条件语句中(其中S1和S2表示C语言语句),只有一个在功能上与其他三个语句不等价。
D
A)if (a) S1; else S2; B)if (a==0) S2; else S1;
C)if (a!=0) S1; else S2; D)if (a==0) S1; else S2;
28.若int i=10;执行下列程序后,变量i的正确结果是。
D
switch (i) {
case 9: i+=1 ;
case 10: i+=1 ;
case 11: i+=1 ;
default : i+=1 ;
}
A)10 B)11 C)12 D)13
29.若有说明语句int i=5,j=4,k=6;float f;则执行f=(i<j&&i<k)?i:(j<k)?j:k;语句后,f 的值为 A 。
A)4.0 B)5.0 C)6.0 D)7.0
30.若有定义:int a=3,b=2,c=1;并有表达式:①a%b,②a>b>c,③b&&c+1,④c+=1,则表达式值相等的是 D 。
A)①和②B)②和③C)①和③D)③和④
填空题:
1.C语言提供6种关系运算符,按优先级高低它们分别是__>______,__<______,___==_____,____>=___,___<=_____,____!=____等。
2.C语言提供三种逻辑运算符,按优先级高低它们分别是__!______,___&&_____,__||______。
3.将条件“y能被4整除但不能被100整除,或y能被400整除”写成逻辑表达式____int y/4=y/4 and int y/5<>y/5 ____。
4.设x,y,z均为int型变量;写出描述“x,y和z中有两个为负数”的C语言表达式:__(x<0+y<0+z<0)==2______。
5.已知A=7.5,B=2,C=3.6,表达式A>B && C>A || A<B && !C>B的值是___0_____。
6.有int x=3,y=-4,z=5;则表达式(x&&y)==(x||z)的值为____1____。
7.若有x=1,y=2,z=3,则表达式(x<y?x:y)==z++的值是___0_____。
8.执行以下程序段后,a=__0______,b=___9_____,c=_____11___。
int x=10,y=9, a,b,c ;
a = (x--=y++) ? x-- : y++ ;
b = x++ ;
c = y ;
读程题:
1.以下程序的输出结果是。
main()
{int a=1,b=0;
if(!a) b++;
else if(a==0)if(a)b+=2;
else b+=3;
printf(”%d\n”,b);
}
2.以下程序的输出结果是。
main()
{ int x=1,y=0;
if(!x) y++;
else if(x==0)
if (x) y+=2;
else y+=3;
printf("%d\n",y);
}
3. 以下程序的输出结果是。
main( )
{ int a=100;
if(a>100) printf("%d\n",a<=100);
else printf("%d\n",a<=100);
}
4、以下程序的输出结果是。
main()
{ int i;
for(i=0;i<3;i++)
{switch(i)
{ case 1: printf("%d",i);
case 2: printf("%d",i);
default: printf("%d",i);}}}
5、以下程序的输出结果是。
main( )
{ int i=0,j=0,a=6;
if((++i>0)||(++j>0)) a++;
printf("%d,%d,%d",i,j,a); }
6.若运行时输入100↙,写出以下程序的运行结果。
main ( )
{ int a ;
scanf(“%d”,&a);
printf(“%s”,(a%2!=0)?”No”:”Yes”);
}
7.写出以下程序的运行结果。
main ( )
{ int a=2,b=7,c=5;
switch (a>0) {
case 1: switch (b<0) {
case 1: printf(“@”); break ;
case 2: printf(“!”); break ; }
case 0: switch (c==5) {
case 1: pritnf(“*”) ; break ;
case 2: printf(“#”) ; b reak ;
default : printf(“#”) ; break ;
}
default : printf(“&”);
}
printf(“\n”);}
编程题:
1.有三个整数a,b,c,由键盘输入,输出其中最大的数。
2.编程输入整数a和b,若大于100,则输出百位以上的数字,否则输出两数之和。
3.给出一百分制成绩,要求输出成绩等级’A’,’B’,’C’,’D’,’E’。
90分以上为’A’,80-89分为’B’,70-79分为’C’,60-69分为’D’,60分以下为’E’。
4.提高题:给一个不多于5位的正整数,要求:①求出它是几位数;②分别打印出每一位数字;③按逆序打印出各位数字,例如原数是321,应输出123。
(2)
#include <stdio.h>
void main()
{
int a,b,c,d,sum;
printf("请输入两个数:\n");
scanf("%d%d",&a,&b);
if(a<=100&&b<=100)
printf("两个数小于100,它们的和是:%d\n",a+b);
if(a>100) printf("a>100,a百位以上的数字为:%d\n",a/100);
if(b>100) printf("b>100,b百位以上的数字为:%d\n",b/100);
(3)#include <stdio.h>
void main()
{int grade;
float score;
scanf("%f",&score);
if((score>=90)&&(100>=score))
grade=1;
if((score>=80)&&(89>=score))
grade=2;
if((score>=70)&&(79>=score))
grade=3;
if((score>=60)&&(69>=score))
grade=4;
if(59>=score)
grade=5;
switch(grade)
{
case 1: printf("A\n");break;
case 2: printf("B\n");break;
case 3: printf("C\n");break;
case 4: printf("D\n");break;
case 5: printf("E\n");break;
default:printf("error\n");
}
printf("%c\n",grade);
}
(4) #include <stdio.h>
void main()
{
int digits=0; //位数
int i=0;
long int temp;
long int number; //输入的数据
int a[5]; //存储各位
printf("Input a postive interger!\n");
scanf("%ld",&number);
if((number<0)||(number>=100000))
{
printf("Input Error!\n");
return;
}
temp=number;
while(temp!=0)
{
digits++;
temp=temp/10;
}
printf("The digits of the interger is %d\n",digits);
a[4]=number%10; //个位
temp=number/10;
a[3]=temp%10; //十位
temp=temp/10;
a[2]=temp%10; //百位
temp=temp/10;
a[1]=temp%10; //千位
a[0]=temp/10; //万位
while(i<digits)
{
printf("%d",a[4-i]);
i++;
}
printf("\n");
}。