全国高等学校计算机等级考试二级C语言选择题试题库每题都有解析.docx
《全国高等学校计算机等级考试二级C语言选择题试题库每题都有解析.docx》由会员分享,可在线阅读,更多相关《全国高等学校计算机等级考试二级C语言选择题试题库每题都有解析.docx(78页珍藏版)》请在冰豆网上搜索。
全国高等学校计算机等级考试二级C语言选择题试题库每题都有解析
全国高等学校计算机等级考试(二级C语言)选择题试题库
答案
试题
C
1. 在C语言源程序中,以下叙述正确的是(C )。
A. main函数必须位于文件的开头
B. 每行只能写一条语句
C. 程序中的一个语句可以写成多行
D. 每个语句的最后必须有点号
C
2. 关于C语言的源程序的叙述中,错误的是( C )。
A. C语言的源程序由函数构成
B. main函数可以书写在自定义函数之后
C. 必须包含有输入语句
D. 一行可以书写多个语句
C
3. 关于C语言数据类型的叙述,正确的是( )。
A. 枚举类型不是基本类型
B. 数组不是构造类型
C. 变量必须先定义后使用
D. 不允许使用空类型
C
4. C程序中main函数的位置(C )。
A. 必须在最开始
B. 必须在系统库函数后面
C. 可以在自定义函数后面
D. 必须在最后
B
5. C语言的函数体由( B)括起来。
A. ( )
B. { }
C. [ ]
D. /* */
D
6. 关于C语言的叙述中,不正确的是( D)。
A. C程序可由一个或多个函数组成
B. C程序必须包含一个main()函数
C. C程序的基本组成单位是函数
D. 注释说明只能位于一条语句的后面
D
7. 以下叙述不正确的是(D )。
A. C程序的执行总是从main函数开始
B. 一个C源程序必须包含一个main函数
C. C语言程序的基本组成单位是函数
D. 在编译C程序源程序时,可发现注释中的拼写错误
C
8. 结构化程序设计的三种基本结构是( C )。
A. 函数结构、分支结构、判断结构
B. 函数结构、嵌套结构、平行结构
C. 顺序结构、分支结构、循环结构
D. 分支结构、循环结构、嵌套结构
C
9. 对于C语言源程序,以下叙述错误的是( C )。
A. 可以有空语句
B. 函数之间是平等的,在一个函数内部不能定义其它函数
C. 程序调试时如果没有提示错误,就能得到正确结果
D. 注释可以出现在语句的前面
D
10. 下面关于C语言用户标识符的描述,正确的是( )。
A. 不区分大小写
B. 用户标识符不能描述常量
C. 类型名也是用户标识符
D. 用户标识符可以作为变量名
D
11. 以下( D )是正确的变量名。
A. 5f
B. if
C. f.5
D. _f5
D
12. 以下(D )是正确的常量。
A. E-5
B. 1E5.1
C. 'a12'//字符串用双引号
D. 32766L
D
13. 以下( D)是正确的变量名。
A. a.bee
B. -p11
C. int
D. p_11
C
14. 以下( C)是正确的字符常量。
单引号括起来
A. "c"
B. '\\''
C. 'W'
D. "\32a"
A
15. 以下( A)是不正确的字符串常量。
双引号括起来
A. 'abc'
B. "12'12"
C. "0"
D. " "
B
16. 以下( B)是错误的整型常量。
A. -0xcdf
B. 018//八进制数不能超过8
C. 0xe
D. 011
B
17. 以下(B )是正确的浮点数。
A. e3//e前面必须有数字,指数必须为整数
B. .62
C. 2e4.5
D. 123
A
18. 若有说明语句:
char c='\95'; 则变量c包含( )个字符。
A. 1\ddd:
表示1到3位八进制数所代表的字符(ASCII码值)
B. 2\xhh表示1到2位十六进制数所代表的字符
C. 3
D. 语法错误
A
19. 若有定义:
int a=2; 则正确的赋值表达式是( )。
A. a-=(a*3)//a=a-(a*3)
B. double(-a)//(double)(-a)
C. a*3
D. a*4=3
C
20. 语句x=(a=3,b=++a);运行后,x、a、b的值依次为(c )。
A. 3,3,4//逗号运算符及逗号表达式
B. 4,4,3
C. 4,4,4
D. 3,4,3
B
21. 语句a=(3/4)+3%2;运行后,a的值为(b )。
A. 0
B. 1//注意除号/两边均为整型时,结果为整数(不含小数点)
C. 2
D. 3
A
22. char型变量存放的是( A)。
//考查变量类型
A. ASCII代码值
B. 字符本身
C. 十进制代码值
D. 十六进制代码值
C
23. 若有定义:
int x,a;则语句x=(a=3,a+1);运行后,x、a的值依次为(C )。
A. 3,3//考查逗号表达式及逗号运算符
B. 4,4
C. 4,3
D. 3,4
B
24. 若有定义:
int a; 则语句a=(3 * 4)+ 2 % 3;运行后,a的值为( bB)。
A. 12///////%取余
B. 14
C. 11
D. 17
A
25. 若有定义:
int a,b; double x,则以下不符合C语言语法的表达式是( Aa)。
A. x%(-3)//%两侧均应为整型数据
B. a+=-2
C. a=b=2
D. x=a+b
B
26. 若有定义:
int x=2,y=3;float i;,则以下符合C语言语法的表达式是( B )。
A. x=x*3=2//x*3不是一个变量名
B. x=(y==1)
C. i=float(x)//应改为i=(float)x
D. i%(-3)//%两侧均应为整型数据
C
27. 设double型变量a,b,c,e均有值;对代数式(3ae)/(bc),不正确的C语言表达式是( C )。
A. a/b/c*e*3
B. 3*a*e/b/c
C. 3*a*e/b*c//改为3*a*e/b/c
D. a*e/c/b*3
B
28. 下面叙述正确的是( b )。
A. 2/3 与 2.0/3.0 等价
B. (int)2.0/3 与 2/3 等价//强制类型转换将2.0转换成2
C. ++5 与 6 等价//单独写++5是错误的,可以写成a=++5
D. 'A'与"A"等价
A
29. 下面叙述中,错误的是( A )。
A. 其算术运算对象不包含函数
B. %(模运算符)的运算对象只能为整型量
C. 算术运算符的结合方向是"自左至右"
D. 自加和自减运算符的结合方向是"自右至左"
A
30. 下面叙述正确的是(A)。
//++--只能用于变量,而不能用于常量或表达式
A. 强制类型转换运算的优先级高于算术运算
B. 若a和b是整型变量,(a+b)++是合法的
C. 'A'*'B' 是不合法的
D. "A"+"B"是合法的
B
31. 若有定义:
int k,i=2,j=4; 则表达式 k=(++i)*(j--) 的值是(B )。
A. 8
B. 12 //注意前缀后缀的区别
C. 6
D. 9
C
32. 设整型变量a为5,使b不为2的表达式是(C )。
A. b=(++a)/3
B. b=6-(--a)
C. b=a%2//结果为1
D. b=a/2//QUZHENG
C
33. 若有定义:
int a=1,b=2,c=3; 则语句 ++a||++b&&++c;运行后b的值为( )。
A. 1
B. 0
C. 2//注意运算的不完全性
D. 3
B
34. 若有定义:
int i,j;则表达式(i=2,j=5,i++,i+j++)的值是( B )。
A. 7
B. 8
C. 9
D. 10
B
35. 若有定义:
int a,b;则表达式(a=2,b=5,a*2,b++,a+b)的值是(b )。
A. 7////a没有被赋值成为4,所以a=2
B. 8
C. 9
D. 10
B
36. 若有定义:
int m=5,n=3;则表达式(m+1,n+1,(--m)+(n--))的值是(B )。
A. 6///与上一题同理,mn没有被赋值
B. 7
C. 8
D. 9
B
37. 已知 int a;使用scanf()函数输入一个整数给变量a,正确的函数调用是( b )。
A. scanf("%d",a);
B. scanf("%d",&a);
C. scanf("%f",&a);
D. scanf("%lf",&a);
D
38. 已知 double a;使用scanf()函数输入一个数值给变量a,正确的函数调用是( d)。
A. scanf("%ld",&a);
B. scanf("%d",&a);
C. scanf("%7.2f",&a);//输入数据时不能规定精度
D. scanf("%lf",&a);
B
39. 已知 char a;使用scanf()函数输入一个字符给变量a,不正确的函数调用是( B )。
A. scanf("%d",&a);
B. scanf("%lf",&a);//字符型变量与整型等价,但不与浮点型等价
C. scanf("%c",&a);
D. scanf("%u",&a);
B
40. putchar()函数的功能是向终端输出(B )。
//char*str0;….;puts(str0);
A. 多个字符//puts()才是输出多个字符
B. 一个字符
C. 一个实型变量值
D. 一个整型变量表达式
D
41. getchar()函数的功能是从终端输入(D )。
A. 一个整型变量值
B. 一个实型变量值
C. 多个字符
D. 一个字符
D
42. 若有定义:
int x=1234,y=123,z=12;则语句printf("%4d+%3d+%2d", x, y, z);运行后的输出结果为(D )。
A. 123412312
B. 12341234123412341231231231212
C. 1234+1234+1234
D. 1234+123+12
A
43. 已有如下定义和输入语句,
int a; char c1,c2;
scanf("%d%c%c",&a,&c1,&c2);
若要求a、c1、c2的值分别为10、A和B,正确的数据输入是(A )。
A. 10AB//输入数据时,遇空格、回车、TAB、及非法输入或按规定的宽度结束
B. 10 A B
C. 10A B
D. 10 AB
B
44. 已有如下定义和输入语句:
int a,b;
scanf("%d,%d",&a,&b);//“格式控制”字符串中除了格式说明还有其他字符,则输入//时应在相应位置输入
若要求a、b的值分别为10和20,正确的数据输入是(B )。
A. 10 20
B. 10,20
C. a=10,b=20
D. 10;20
D
45. 以下程序的运行结果是( D)。
void main()
{
int a=65;
char c='A';
printf("%x,%d",a,c);
}
A. 65,a
B. 41,a
C. 65,65
D. 41,65
A
46. 下面叙述中,(A )不是结构化程序设计中的三种基本结构之一。
A. 数据结构
B. 选择结构
C. 循环结构
D. 顺序结构
A
47. 下面叙述中,(A )不是结构化程序设计三种基本结构的共同特点。
A. 先判断后执行
B. 单入口,单出口
C. 程序中没有执行不到的语句
D. 无死循环
A
48. 结构化程序设计不包括( A )。
A. 最优化
B. 自顶而下,逐步细化
C. 模块化设计
D. 结构化编码
D
49. 以下运算符中优先级最高的是(D )。
A. >
B. ||
C. &&
D. +//初等运算符()[]单目算术关系逻辑(不含!
)赋值逗号
A
50. 若有定义:
int x=3,y=4;则表达式 !
x||y 的值为( A)
A. 1////0//非零=1
B. O
C. 3
D. 4
A
51. 若有定义:
int i=7,j=8;则表达式 i>=j||i A. 1
B. 变量i的值
C. 0
D. 变量j的值
C
52. 若希望当a的值为奇数时,表达式的值为"真",a的值为偶数时,表达式的值为"假"。
则不能满足要求的表达式是( C)。
A. a%2==1
B. !
(a%2==0)
C. !
(a%2)//偶数时为1.奇数时为0
D. a%2
D
53. 若有定义:
int x=3,y=4,z=5;则值为0的表达式是(D )。
A. 'x'&&'y'//120&&121=1
B. x<=y//1
C. x||y+z&&y-z//////3//9&&-1
D. !
((xz||1)//考查运算符优先级
A
54. 若有定义:
int a=5,b=2,c=1;则表达式a-b A. 0
B. 1
C. 2
D. -1
A
55. 已知double a=5.2; 则正确的赋值表达式是(a )。
A. a+=a-=(a=4)*(a=3)
B. a=a*3=2///a*3不是变量
C. a%3////%两边都要是整形变量
D. a=double(-3)、、、(double)(-3)
A
56. 已知char a='R'; 则正确的赋值表达式是(A )。
A. a=(a++)%4
B. a+2=3
C. a+=256--
D. a='\078'
A
57. 已知int a='R'; 则正确的表达式是(A )。
A. a%10///A=82
B. a=int(3e2)
C. 2*a=a++
D. a=a+a=a+3与C同属一类错误
A
58. 设单精度型变量f、g的值均为2.0,使f为4.0的表达式是( A)。
A. f+=g
B. f-=g+2
C. f*=g-6
D. f/=g*10
B
59. 若有定义:
float x=3.5;int z=8;则表达式 x+z%3/4 的值为( B)。
A. 3.75
B. 3.5
C. 3
D. 4
A
60. 若有定义:
int a=1,b=2,c=3,d=4,x=5,y=6;则表达式 (x=a>b)&&(y=c>d) 的值为(A )。
A. 0
B. 1
C. 5
D. 6
A
61. 若有定义:
int a=2,b=3; float x=3.5,y=2.5;则表达式(float)(a+b)/2+(int)x%(int)y的值是( A)。
//(float)(a+b)/2=2.5
A. 3.5
B. 3.0
C. 2.5
D. 2.0
C
62. 若有定义:
int b=7; float a=2.5,c=4.7;则表达式a+(b/2*(int)(a+c)/2)%4的值是(C)。
A. 2.5//(b/2*(int)(a+c)/2)=10注意运算顺序
B. 3.5
C. 4.5
D. 5.5
C
63. 若有定义:
int a=6,b=2;char c1='a',c2='b';则表达式a+b%5+c2-c1的值是(C)。
A. 7
B. 8
C. 9
D. 表达式错误
B
64. 以下的if语句中,x的值一定被重新赋值的是( )。
A. if(x==y) x+=y;
B. if(x>y && x!
=y );//注意if语句后的空语句;
x+=y;
C. if(x!
=y)
scanf("%d",&x);
else
scanf("%d",&y);
D. if(x { x++;y++; }
B
65. C语言对if嵌套语句的规定:
else总是与( B)配对。
A. 第一个if
B. 之前最近的且尚未配对的if
C. 缩进位置相同的if
D. 之前最近的if
B
66. 对于整型变量x,下述if语句(B )与赋值语句:
x=x%2==0?
1:
0;
不等价。
A. if (x%2!
=0) x=0; else x=1;
B. if (x%2) x=1; else x=0;
C. if (x%2==0) x=1; else x=0;
D. if (x%2==1) x=0; else x=1;
B
67. 若有定义:
int x=1,y=2,z=4;则以下程序段运行后z的值为( B)。
if(x>y) z=x+y;
else z=x-y;
A. 3
B. -1
C. 4
D. 不确定
D
68. 若有定义:
int a=1,b=2,c=3;则执行以下程序段后a,b,c的值分别为(D )。
if (a
{c=a;a=b;b=c;}
A. a=1,b=2,c=3
B. a=2,b=3,c=1
C. a=2,b=3,c=3
D. a=2,b=1,c=1
D
69. 以下程序段运行后变量a的值为( )。
int x=6,y=5;
int a;
a=(--x==y++)?
x:
y+1;//X
已经被赋值为5了
A. 0
B. 1
C. 6
D. 5、、、、、、、//2013-05-27.晚上21.13
C
70. 以下程序的运行结果是( )。
//注意分支中有无break的区别
void main()
{
int n='e';
switch(n--)
{
default:
printf("error ");
case 'a':
case 'b':
printf("good "); break;//break.跳出
case 'c':
printf("pass ");
case 'd':
printf("warn ");
}
}
A. error
B. good
C. error good
D. warn
C
71. 以下程序的运行结果是( C )。
void main()
{
int n='c';
switch(n++)
{
default:
printf("error "); break;
case 'a':
case 'b':
printf("good "); break;
case 'c':
printf("pass ");
case 'd':
printf("warn ");
}
}
A. pass
B. warn
C. pass warn
D. error
D
72. 以下程序的运行结果是( )。
void main( )
{ int n=5;
if(n++>=6)先取值后运算n=6
printf("%d\n",n);
else
printf("%d\n",++n);先运算后取值n=7
}
A. 4
B. 5
C. 6
D. 7
B
73. 设有整型变量x,下述语句(B )不会出现死循环。
A. for(;;x+=1);
B. for(;(x=getchar())!
='\n';);
C. while
(1) {x++;}
D. for(x=10;;x--);
B
74. 对于整型变量x,与while(!
x)等价的是( B )。
A. while(x!
=0)
B. while(x==0)
C. while(x!
=1)
D. while(~x)
A
75. 对于整型变量x和y,语句
for(x=0,y=0;(y!
=123)&&(x<4);x++) y++;
中的“y++;”被执行(A )。
A. 4次
B. 0次
C. 123次
D. 3次
B
76. 在c语言中while循环和do--while循环的主要区别是(B)。
A. do--while循环体内可以使用break语句,while循环体内不能使用break语句
B. do--while的循环体至少无条件执行一次,while的循环体不是
C. do--while循环体内可以使用continue语句,while循环体内不能使用continue语句
D. while的循环体至少无条件执行一次,do--while的循环体不是
B
77. 以下程序段运行后,循环体运行的次数为( BB)。
int i=10,x;
for (;i<10;i++)x=x+i;
A. 10
B. 0
C. 1
D. 无限
D
78. 以下程序段运行后变量n的值为( D)。
int i=1,n=1;
for (;i<3;i++)
{continue;n=n+i;}//continue语句结束本次循环,转而进行下一次同层的循环过程
A. 4
B. 3
C. 2
D. 1
B
79. 以下程序的运行结果是( )。
void main()
{
int sum = 0, item = 0;
while(item < 5)
{
item++;
sum += item;
if(sum==5)
break;
}
printf("%d\n",sum);//sum不可能等于5
}
A. 10
B. 15
C. 5
D. 6
C
80. 以下程序的运行结果是(C )。
void main()
{
int sum = 0, item = 0;
while(item < 5)
{
item++;
sum += item;
if(sum>=6)
break;
}
printf("%d\