(完整版)c语言选择结构试题带答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、选择题
1. 以下非法的赋值语句是
A: n=(i=2,++i); B: j++; C: ++(i+1); D: x=j>0;
2. 已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1 && y+z/2 的值是A: 6 B: 0 C: 2 D: 1
3. 阅读以下程序:
main()
{ int x;
scanf(“%d”,&x);
if(x--<5) printf(“%d”,x);
else printf(“%d”,x++);
}
程序运行后,如果从键盘上输人5,则输出结果是()。
A: 3 B: 4 C: 5 D: 6
4. 有如下程序
main0
{ int a=2,b=-1,c=2;
if(a<b)
if(b<0) c=0;
else c++
printf("%d\n",c);
}
该程序的输出结果是
A: 0 B: 1 C: 2 D: 3
5. 有以下程序
#include <stdio.h>
main()
{ int a,b,c=246;
a=c/100%9;
b=(-1)&&(-1);
printf("%d,%d\n",a,b);
}
输出结果是( )。
A: 2,1 B: 3,2 C: 4,3 D: 2,-1
6.两次运行下面的程序,如果从键盘上分别输入6 和4,则输出结果是main( )
{ int x;
scanf("%d",&x);
if(x + + >5) printf("%d",x);
else printf("%d\n",x - -); }
A: 7 和5 B: 6 和3 C: 7 和4 D: 6 和4
7. 能表示x 为偶数的表达式是
A: x%2==0 B: x%2==1 C: x%2 D: x%2!=0
8. 下面的程序段中共出现了几处语法错误?
int a,b;
scanf("%d",a);
b=2a;
if(b>0) printf("%b",b);
A: 1 B: 2 C: 3 D: 4
9. C 语言中,逻辑“真”等价于
A: 大于零的数B: 大于零的整数C: 非零的数D: 非零的整数
10. C 语言的switch 语句中,case 后
A: 只能为常量
B: 只能为常量或常量表达式
C: 可为常量及表达式或有确定值的变量及表达式
D: 可为任何量或表达式
11. 已知int i=10;表达式"20-0<=i<=9"的值是
A: 0 B: 1 C: 19 D: 20
12. 设有int i, j, k; 则表达式i=1,j=2,k=3, i&&j&&k 的值为
A: 1 B: 2 C: 3 D: 0
13. 逻辑运算符两侧运算对象的数据类型
A: 只能是0 或1
B: 只能是0 或非0 正数
C: 只能是整型或字符型数据
D: 可以是任何类型的数据
14. 能正确表示“当x 的取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是()
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. 已知x=43,ch=’a’,y=0;则表达式(x>=y&&ch<’b’&&!y)的值是()
A: 0 B: 1 C: 语法错误D: 假
16. 执行下列语句后a 的值为
int a=5,b=6,w=1,x=2,y=3,z=4;
(a=w>x)&&(b=y>z);
A: 5 B: 0 C: 2 D: 1
17. 以下程序的输出结果是()
main()
{ int a=5,b=0,c=0;
if(a=b+c) printf(“***\n”);
else printf(“$$$\n”);
}
A: 有语法错误不能通过编译
B: 可以通过编译但不能通过连接
C: ***
D: $$$
18. 以下程序的输出结果是()
main()
{ int m=5;
if(m++>5) printf(“%d\n”,m);
else printf(“%d\n”,m--);
}
A: 4 B: 5 C: 6 D: 7
19. 若运行时给变量x 输入12,则以下程序的运行结果是()main()
{ int x,y;
scanf(“%d”,&x);
y=x>12?x+10:x-12;
printf(“%d\n”,y);
}
A: 0 B: 22 C: 12 D: 10
20. 若w=1,x=2,y=3,z=4,则表达式w<x?w:y<z?y:z 的值是A: 4 B: 3 C: 2 D: 1
21. 设有int a=2,b;则执行b=a&&1;语句后,b 的结果是
A: 0 B: 1 C: 2 D: 3
22. 设有int m=1,n=2;则++m==n 的结果是
A: 0 B: 1 C: 2 D: 3
23. 设有int n=2;则++n+1==4 的结果是
A: true B: false C: 1 D: 0
24. 设有int n=2;则++n+1==4,n 的结果是
A: 1 B: 2 C: 3 D: 4
25. 以下使i 的运算结果为4 的表达式是
A: int i=0,j=0; (i=3,(j++)+i);
B: int i=1,j=0; j=i=((i=3)*2);
C: int i=0,j=1; (j==1)?(i=1):(i=3);
D: int i=1,j=1; i+=j+=2;
26. 当a=5,b=2 时,表达式a= =b 的值为
A: 2 B: 1 C: 0 D: 5
27. 若执行以下程序时从键盘上输入9,_______则输出结果是
main()
{ int n;
scanf("%d",&n);
if(n++<10) printf("%d\n",n);
else printf("%d\n",n--);
}
A: 11 B: 10 C: 9 D: 8
28. main()
{ int a,b,d=241;
a=d/100%9;
b=(-1)&&(-1);
printf(“%d,%d”,a,b);
}
A: 6,1 B: 2,1 C: 6,0 D: 2,0
29. 若有int x=10,y=20,z=30;以下语句执行后x,y,z 的值是()
if (x>y)
z=x;x=y;y=z;
A: x=10,y=20,z=30
B: x=20,y=30,z=30
C: x=20,y=30,z=10
D: x=20,y=30,z=20
30. 下列表达式中能表示a 在0 到100 之间的是
A: a>0&a<100 B: !(a<0||a>100) C: 0<a<100 D: !(a>0&&a<100)
31. 为了避免嵌套的if—else 语句的二义性,C 语言规定else 总是与()
组成配对关系。
A: 缩排位置相同的if
B: 在其之前未配对的if
C: 在其之前未配对的最近的if
D: 同一行上的if
32. 已知:int x,a,b;下列选项中错误的if 语句是
A: if(a=b) x++; B: if(a<=b) x++;
C: if(a-b) x++; D: if(x) x++;
33. 当把以下四个表达式用作if 语句的控制表达式时,有一个选项与其它
三个选项含义不同,这个选项是()。
A: k%2 B: k%2==1 C: (k%2)!=0 D: !k%2==1
34. 设有定义:int a=2,b=3,c=4;,则以下选项中值为0 的表达式是()。
A: (!a==1)&&(!b==0) B: a C: a && b D: a||(b+b)&&(c-a)
35. 以下程序段的输出结果是。
int a=10,b=50,c=30;
if(a>b)
a=b;
b=c;
c=a;
printf("a=%d b=%d c=%d\n",a,b,c);
A: a=10 b=50 c=10 B: a=10 b=30 c=10 C: a=50 b=30 c=10 D: a=50 b=30 c=50
36. 以下4 个选项中,不能看作一条语句的是
A: {;} B: a=0,b=0,c=0; C: if(a>0); D: if(b==0) m=1;n=2;
以下题目为二级题
37. if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是
A)必须是逻辑值
B)必须是整数值
C)必须是正数
D)可以是任意合法的数值
38. 有以下程序段
int i,n;
for(i=0;i<8;i++)
{n=rand()%5;
switch (n)
{ case 1:
case 3:printf("%d\n",n); break;
case 2:
case 4:printf("%d\n",n);continue;
case 0:exit(0);
}
printf("%d\n",n);
}
以下关于程序段执行情况的叙述,正确的是
A)for循环语句固定执行8次
B)当产生的随机数n为4时结束循环操作
C)当产生的随机数n为1和2时不做任何操作
D)当产生的随机数n为0时结束程序运行
39.有以下程序
#include <stdio.h>
main()
{ int x=1,y=0;
if(!x) y++;
else if(x==0)
if (x) y+=2;
else y+=3;
printf("%d\n",y);
}
程序运行后的输出结果是
A)3 B)2 C)1 D) 0
41. 有以下程序:
#include <stdio.h>
main(){
int a=0,b=0,c=0,d=0;
if(a=1) b=1;c=2;
else d=3;
printf("%d,%d,%d,%d",a,b,c,d);
}
程序输出( ).
A)1,1,2,0 B)0,0,0,3 C)编译有错D) 0,1,2,0
42. 有以下程序:
#include <stdio.h>
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\n",a,b);
}
A) a=2,b=2 B) a=2,b=1 C) a=1,b=1 D) a=1,b=0
43. 若有定义int x, y; 并已正确给变量赋值,则以下选项中与表达式(x-y)?(x++) : (y++)中的条件表达式(x-y) 等价的是()
A) (x-y<0||x-y>0)
B) (x-y<0)
C) (x-y>0)
D)(x-y==0)
44 .有以下程序:
#include <stdio.h>
main(){
int x=1,y=0;
if ( !x ) y++;
else if (x==0)
if(x) y+=2;
else y+=3;
printf("%d\n",y);
}
程序运行后的输出结果是()
A) 3 B) 2 C) 1 D) 0
45. 若有定义: float x=1.5; int a =1,b=3,c=2;则正确的switch语句是()
A)switch(a+b)
{case 1: printf("*\n");
case 2+1 : printf("**\n");}
B)switch( (int)x );
{ case 1: printf("*\n");
case 2 : printf("**\n");}
C) switch( x );
{ case 1.0: printf("*\n");
case 2.0 : printf("**\n");}
D) switch( a+b )
{ case 1: printf("*\n");
case c: printf("**\n");}
46. 若变量已正确定义,在if ( W ) printf("%d\n",k); 中,以下不可替代W的是()。
A) a<>b+c B) ch=getchar() C) a==b+c D) a++
47. 下列叙述中正确的是( ) .
A) 在switch语句中,不一定使用break语句
B) 在switch语句中必须使用default
C) break语句必须与switch语句中的case配对使用
D) break 语句只能用于switch语句
48. 有如下嵌套的if语句
if ( a<b)
if(a<c) k=a;
else k=c;
else
if(b<c) k=b;
else k=c;
以下选项中与上述语句等价的语句是( )
A) k=(a<b)?((b<c)?a:b): ((b>c)?b:c); B) k=(a<b)?((a<c)?a:c): ((b<c)?b:c); C) k=(a<b)?a:b; k=(b<c)?b:c ; D) k=(a<b)?a:b; k=(a<c)?a:c ;
49. 设有宏定义:
#define IsDIV(k,n) ((k%n==1) ? 1:0)
且变量m已正确定义并赋值,则宏调用:
IsDIV(m,5) && IsDIV(m,7)
为真时所要表达的是:
A) 判断m是否能被5和7整除B) 判断m被5和7 整除是否都余1
C) 判断m被5或者7整除是否余1 D) 判断m是否能被5或者7整除
50. 有以下程序
#include <stdio.h>
main(){
int a=1, b=2, c=3, x;
x=(a^b)&c;
printf("%d\n",x);
}
程序运行结果是
A) 3 B) 1 C) 2 D) 0
51. 以下选项中,当x为大于1的奇数时,值为0的表达式是
A) x%2==0 B) x/2 C) x%2!=0 D) x%2==1
52. 有以下程序
#include <stido.h>
main(){
int x;
scanf("%d",&x);
if(x<=3) else
if(x!=10) printf("%d\n",x);
}
程序运行时,输入的值在哪个范围才会有输出结果()
A) 小于3的整数B) 不大于10的整数
C) 大于3或等于10的整数D) 大于3且不等于10的整数
53. 在以下给出的表达式中,与while(E)中的E不等价的表达式是()
A)(E>0 || E<0) B) (E==0) C) (!E==0) D)(E!=0)
54. 以下选项中与
if (a==1) a=b;
else a++;
语句功能不同的switch语句是()
A) switch(a==1)
{case 0: a=b; break;
case 1: a++;
}
B) switch(a)
{case 1: a=b; break;
default: a++;
}
C) switch(a)
{ default : a++; break;
case 1: a=b;
}
D) switch(a==1)
{case 1: a=b; break;
case 0: a++;
}
55. 有以下程序
#include <stdio.h>
main()
{
int a=1,b=2,c=3,d=0;
if( a==1 && b++==2)
if(b!=2 || c--!=3)
printf("%d,%d,%d\n",a,b,c);
else printf("%d,%d,%d\n",a,b,c);
else printf("%d,%d,%d\n",a,b,c);
}
程序运行后的输出结果是()
A) 1,3,2 B) 1,3,3 C) 1,2,3 D)3,2,1
56. 下列条件语句中,输出结果与其他语句不同的是()
A) if(a!=0) printf("%d\n",x); else printf("%d\n",y);
B) if(a==0) printf("%d\n",y); else printf("%d\n",x);
C) if(a==0) printf("%d\n",x); else printf("%d\n",y);
D) if(a) printf("%d\n",x); else printf("%d\n",y);
57. 有以下程序
#include <stdio.h>
main(){
int x=1, y=2, z=3;
if(x>y)
if(y<z) printf("%d",++z);
else printf("%d",++y);
printf("%d\n",x++);
}
程序的运行结果是()
A) 1 B) 41 C) 2 D) 331
58. 若有以下程序
#include <stdio.h>
main(){
int a=1,b=2,c=3,d=4,r=0;
if(a!=1) ; else r=1;
if(b==2) r+=2;
else; if(c!=3) r+=3;
else; if(d==4) r+=4;
printf("%d\n",r);
}
则程序的输出结果是()
A) 10 B) 7 C) 6 D) 3
59. 有以下程序
#include <stdio.h>
main(){
int a;
scanf("%d",&a);
if(a++<9) printf("%d\n",a);
else printf("%d\n",a--);
}
程序运行时从键盘输入9<回车>,则输出结果是
A) 10 B) 11 C) 9 D) 8
60.设x=3,y=-4,z=6,写出表达式 !(x>y)+(y!=z)||(x+y)&&(y-z) 的结果( )
A、0
B、1
C、-1
D、6
二、填空题
1、C语言中用_____表示逻辑值“真”,用_____表示逻辑值“假”
2、C语言中的关系运算符“!=”的优先级_____ “<=”的优先级。
3、C语言中的逻辑运算符“&&”的优先级_____ “||”的优先级。
4、C语言中的关系运算符"=="的优先级_____ 逻辑运算符“&&”的优先级
5、将下列数学式改写成C语言关系表达式或逻辑表达式
A) _______________
B) _______________
A) a=b 或a<c B) |x|>4
6、请写出以下程序的输出结果是_____________
#include <stdio.h>
main(){
int a=100;
if(a>100) printf("%d\n", a>100);
else printf("%d\n", a<=100);
}
7、请写出与以下表达式等价的表达式
A) _______________
B) _______________
A) !(x>0) B) !0
8、若变量已正确定义,以下语句段的输出结果是______________
x=0; y=2; z=3
switch( x ) {
case 0 : switch( y==2 )
{ case 1: printf(" * "); break;
case 2: printf(" % "); break;
}
case 1 : switch( z )
{ case 1: printf(" $ ");
case 2: printf(" * "); break;
default: printf(" # ");
}
}
9、int a=3;
a+=(a<1)?a:1;
printf(“%d”,a);
结果是__________
以下题目为二级题
10、有以下程序
#include <stdio.h>
main()
{ int x;
scanf("%d",&x);
if(x>15)printf("%d",x-5);
if(x>10)printf("%d",x);
if(x>5)printf("%d\n",x+5);
}
若程序运行时从键盘输入12<回车>,则输出结果为__________。
11、以下程序运行后的输出结果是_________。
#include <stdio.h>
main()
{ int x=10,y=20,t=0;
if(x==y)t=x;x=y;y=t;
printf("%d %d\n",x,y);
}
12、以下程序的运行结果是_________。
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 0: printf("*"); break;
case 1: printf("#"); break;
case 2: printf("$"); break;
}
default : printf("&");
}
printf("\n");
}
13、以下程序的运行结果i的值为_________.
main()
{
char ch='$';
int i=1,j;
j=!ch&&i++;
printf("%d",i);
}
14、以下程序用于判断a,b,c能否构成三角形,若能输出YES,若不能输出NO。
当a,b,c
输入三角形三条边长时,确定a,b,c能构成三角形的条件是需要同时满足三条件:a+b>c,a+c>b,b+c>a。
请填空。
main()
{
float a,b,c;
scanf(“%f%f%f”,&a,&b,&c);
if(____________)printf(“YES\n”);/*a,b,c能构成三角形*/
else printf(“NO\n”);/*a,b,c不能构成三角形*/
}
三、编程题
1. 从键盘输入一个学生的分数, 要求实现这样的判断功能: 如果分数大于
100,输出Input error! 如果分数介于100到90 之间, 输出Very Good! 如果分
数介于80 到90 只,输出Good! 如果分数介于70 到80 之间,输出Middle 如果
分数介于60到70 之间, 输出Pass!如果分数小于60,输出No Pass!
2. 输入一个整数,判断该数是奇数还是偶数。
3. 从键盘接收三个整数,编程求出最小数。
4. 从键盘接收一个字符,如果是字母,输出其对应的ASCII 码,如果是数字,按原样输出,否则给出提示信息: 输入错误!。
5. 输入一个字符,判断它是否是小写字母,是小写字母,则将它转换成大写字母,如果不是,则不转换,然后输出所得到字符。
6. 编程判断输入的正整数是否既是5 又是7的整倍数。
若是,输出yes,否则输出no。
7. 编写一个简单计算器程序,输入格式为:data1 op data2。
其中data1和data2
是参加运算的两个数,op 为运算符,它的取值只能是+、-、*、/。
8. 已知银行整存整取存款不同期限的月息利率分别为:
0.315% 期限一年
0.330% 期限二年
月息利率=0.345% 期限三年
0.375% 期限五年
0.420% 期限八年
要求输入存钱的本金和期限,求到期时能从银行得到的利息与本金的合计。
c语言习题--输入输出函数
1. 设i是int型变量,f是float型变量,用下面的语句给这两个变量输入值:
scanf("i=%d,f=%f",&i,&f); 为了把100和765.12分别赋给i和f,则正确的输入为
A)100<空格>765.12<回车> B)i=100,f=765.12<回车>
C)100<回车>765.12<回车> D)x=100<回车>,y=765.12<回车>
2. 以下程序的输出结果是
main( )
{int a=12,b=12;
printf("%d %d\n",--a,++b); }
A)10 10 B)12 12 C)11 10 D)11 13
4. 以下程序输出结果是
main( )
{ int m=5;
if(m++>5)printf("%d\n",m);
else printf("%d\n",m--); }
A)7 B)6 C)5 D)4
5. 当a=1,b=3,c=5,d=4时,执行下面一段程序后,x的值为
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)6
9. 设有语句int a=3;则执行了语句a+=a-=a*a;后,变量a的值是
A)3 B)0 C)9 D)-12
11. 以下程序的输出结果是
# include <stdio.h>
main()
{ int a=2,c=5;
printf("a=%%d,b=%%d\n",a,c); }
A) a=%2,b=%5 B) a=2,b=5 C) a=%%d,b=%%d D) a=%d,b=%d
13. 若x和y都是int型变量,x=100,y=200,且有下面的程序片段:printf("%d",(x,y)); 上面程序片段的输出结果是
A) 200 B) 100 C) 100 200 D) 输出格式符不够,输出不确定的值
15. 已知字母A的ASCII码为十进制的65,下面程序的输出是main()
{ char ch1,ch2;
ch1='A'+'5'-'3';
ch2='A'+'6'-'3';
printf("%d,%c\n",ch1,ch2);}
A) 67,D B) B,C C) C,D D) 不确定的值
16. 若执行下面的程序时从键盘上输入3和4,则输出是
A) 14 B) 16 C) 18 D) 20。