二级C语言选择题完整版题库
第一节:C语言概述
1. C语言程序的模块化是通过以下哪个选项实现的答案:A)函数
2. 有以下程序
#include <stdio.h>
main()
{
int x=010, y=10;
printf("%d,%d ", ++x, y--)
}
3.以下选项中叙述正确的是答案:
B)C语言的标识符可分为关键字、预定义标识符和用户标识符三类
4. 以下选项中叙述正确的是答案:
B)函数体必须由{ 开始
5. 以下选项中叙述正确的是答案:
A)结构化程序的三种基本结构是循环结构、选择结构、顺序结构
6. 以下选项中叙述正确的是答案:A)使用三种基本结构就可以实现任何复杂算法
7. 以下选项中叙述正确的是答案:D)C程序中的语句要经过编译才能转换成二进制机器指令
8. 以下选项中叙述正确的是答案:
D)复杂任务可以分解成简单子任务
9. 以下叙述中错误的是答案:
B)书写风格良好的程序执行效率高
10. 以下选项中不能正确表示数值10000 的实型常量是答案:D)1.0E4.0
11. 结构化程序由顺序、选择、循环三种基本结构组成,以下相关叙述错误的是答案:A)三种基本结构不可以嵌套使用
12. 以下叙述正确的是答案:
A)计算机只接收由0和1代码组成的二进制指令或数据汩汩的读音
13. 简单程序设计步骤中不包括答案:
D)安装编译程序
14. 以下叙述正确的是答案:C
C)C编译程序把文件后缀为.c的源程序文件编译成文件后缀为.obj的二进制文件
15. 算法应当具有的特性不包括答案:
D)美观性
16. 以下叙述正确的是答案:
D)循环结构、选择结构、顺序结构都是结构化程序的基本结构17. 以下叙述正确的是答案:D)只使用三种
基本结构即可解决任何复杂问题
18. 下面叙述正确的是答案:
D)C语言程序的语句经过编译和链接转换成
二进制机器指令后才能执行
19. 下面叙述正确的是答案:A)任何复杂任
务都可以分解成简单子任务
20. 若变量已经定义且正确赋值,则针对程
序段:
temp=a; a=b; b=temp;
以下叙述中正确的是答案:
D)此段程序是从左至右依次执行
21. 以下叙述中错误的是答案:
C).OBJ文件和.EXE文件都是可直接执行的二
进制文件
22. 以下关于注释的叙述中错误的是答案:
C)注释的边界符号“/*”和“*/”必须成对
出现且可以嵌套
23. 以下说法正确的是答案:
A)C语言被称为“高级语言”是因为它用接
近人们习惯的自然语言和数学语言作为表达
形式,使人们学习和操作起来感到十分方便
24. 以下说法错误的是答案:
A)C语言提供了定义函数和子程序的功能
25. 以下是正确C语言标识符的是答案:
A)_8_
26. 以下叙述中正确的是答案:
A)一个程序要被称为结构化程序,则只能包
含循环结构、选择结构、顺序结构
27. 下面说法正确的是答案:
B)使用只包含三种基本结构的算法可以求解
复杂的问题
29. 以下选项中,合法的C语言实数是答案:
D).2e1
30. 以下叙述正确的是答案:
A)对于只包含表达式语句的程序段,执行顺
序与书写顺序一致
31. 以下叙述正确的是答案:
C)使用符号可以将一条#include 命令写在多
行里
第二节:数据类型、运算符与表达式
1. 以下选项中可用作C语言合法用户标识符
的是答案:C)_123
2. 以下选项中合法的C语言赋值语句是答
案:D)++i;
3. 有以下程序段,其中的变量已定义为int
类型
sum = pad = 5; pAd = sum++, pAd++, ++pAd;
printf( "%d ", pad );
程序段的输出结果是答案:D)5
4. sizeof( double ) 是答案:B)一个整型表达
式
5. 有以下程序(字母A的ASCII代码为65)
#include <stdio.h>
main()
{
char c1 = 'A', c2 = 'Y';
printf("%d, %d ", c1, c2 );
}
程序运行后的输出结果是答案:C)65, 89
6. 若有说明语句:char c = ':' ; 则变量c中存
放的是答案:D)1个字符
7. 有以下程序
#include <stdio.h>
main()
{
int a, b, c=241;
a = c/100 % 9;
b = ( -1 )&&( -1 );
printf("%d, %d ", a, b );
}
程序运行后的输出结果是答案:B)2,1
8. 有以下程序
#include <stdio.h>
main()
{
printf("%d ", NULL );
}
程序运行后的输出结果是答案:A)0
9. 若有定义语句:int a=12;,则执行语句:
a+= a-= a*a;后,a的值是答案:D)-264
11. 已知a=5,b=6,c=7,d=8,m=2,n=2,执行
(m=a>b)&&(n=c<d)后n的值为答案:C)2
12. 以下选项中,合法的C语言常量是答案:
A)1.234
13. 以下选项中,合法的C语言实数是答案:
A).2e0
14. 设a,b,c是整型变量且均已赋值,则以下
选项中错误的是答案:B)a = (b = 3) = 1;
15. 有如下程序
#include <stdio.h>
main()
{
int x = 072;
printf("%d ", x+1);
}
程序运行后的输出结果是答案:D)59
16. 以下选项中,合法的数值型常量是答案:C)3.1415
17. 以下选项中,合法的实数是答案:A)4.5E2
18. 若有定义int a, b, c; 以下选项中的赋值语句正确的是答案:D)a = (b = c) + 1;
19. 有如下程序
#include <stdio.h>
main()
{
int x = 0x13;
printf("%d ", x+1);
}
程序运行后的输出结果是答案:B)20
20. 设有定义:int a=0,b=1,c=1;以下选项中,表达式值与其它三个不同的是答案:
B)b=a==c
21. 设有两行定义语句:
int scanf;
float case;
则以下叙述正确的是答案:C)第2行语句不合法
22. 设有定义:double x=2.12;,以下不能完整输出变量x值的语句是答案:A
23. 设有定义:int a,b; float x; ,则以下选项中对语句所作的注释叙述错误的是答案:A)scanf("%d%d%f",&a,&b); /* 多余的格式符%f完全不起作用*/
24. 以下不能输出小写字母a的选项是答案:A)printf("%c ","a");
25. 有以下程序段
char c1,c2,c3;
scanf("%c%c%c",&c1,&c2,&c3);
若要给c1、c2、c3分别输入字母A、B、C,则以下对输入形式的描述正确的是答案:C)字母A、B、C之间不能有分隔符
26. 以下不属于C语言位运算符的是答案:B)!
27. 以下能正确表述算式sin(2πr+30°)的C 语言表达式是答案:
D)sin(2*3.14*r+3.14*30/180.0)
28. 设有定义:int x=11,y=12,z=0;,以下表达式值不等于12的是答案:D)z=(x==y) 29. 以下可以将任意一个两位整数n的个位
数与十位数对换的表达式为答案:
D)(n-n/10*10)*10+n/10
30. 设有以下程序段
int y;
y=rand() % 30+1;
则变量y的取值范围是答案:C)0<y≤30
31. 设有定义:int a=64,b=8;,则表达式
(a&b)||(a&&b)和(a|b)&&(a||b)的值分别为答
案:C)1和1
32. 关于C语言标识符,以下叙述错误的是
答案:A)标识符可全部由数字组成
33. 若有C语言表达式2+3*4+7/3,则以下选
项中关于执行顺序的叙述,正确的是答案:
D)先执行3*4得12,再执行2+12得14,再
执行7/3得2,最后执行14+2得16
34. 若想给已定义为int型的变量a,b,c,d赋值
为1,以下选项中错误的语句是答案:
D)a=b, b=c, c=d, d=1;
35. 若有定义:char c; int d; 程序运行时输
入:c=1,d=2<;回车>,能把字符1输入给变量
c、整数2输入给变量d的输入语句是答案:
C)scanf("c=%c,d=%d", &c,&d);
36. 若有定义:int a=0,b=0,c=0,d=0; ,对于表
达式(a++ && b++) ? c++ : d++,以下关于其执
行顺序的叙述正确是答案:C)先计算表达式
a++,其值为0,由此即可确定(a++ && b++)
值为0,因此计算d++
37. 以下不属于合法C语言转义字符的是答
案:C)'c'
38. 有以下程序
#include <stdio.h>
main( )
{ char c;
for(; (c=getchar()) != '#'; ) putchar(++c);
}
执行时如输入为:abcdefg##<;回车> , 则输出
结果是答案:C)bcdefgh
39. 有以下程序
#include <stdio.h>
main( )
{ int c, d;
c = 10^3;
d = 10+3;
printf("%d,%d ", c, d);
}
程序运行后的输出结果是答案:C)9,13
二月再见三月你好正能量句子40. 以下不属于C语言整数的是答案:C)12f
41. 有C语言表达式2*3+4+15%3 ,关于其执
行顺序,以下叙述正确的是答案:A)先执行
2*3得6,再执行6+4得10,再执行15%3得
0,最后执行10+0得10
42. 若想给已定义为int型的变量a、b、c、d
赋整数1,以下选项中错误的语句是答案:D)
d=c, c=b, b=a, a=1;
43. 若有定义:int a; float b; double c; ,程序
运行时输入:1,2,3<;回车>,能把1输入给变
量a、2输入给变量b、3输入给变量c的输
入语句是答案:
A)scanf("%d,%f,%lf", &a,&b,&c);
44. 有以下程序
#include <stdio.h>
void fun(int a[ ], int n)
{
int i;
for (i=0; i<n; i++)
{
if (i % 3 == 0)
a[i] -= n;
else
a[i] += n;
}
}
main( )
{ int c[5] = {6,7,8,9,10},i;
fun(c, 5);
for (i=0;i<5; i++) printf("%d,", c[i]);
printf(" ");
}
程序运行后的输出结果是答案:
A)1,12,13,4,15,
45. 有以下程序
#include <stdio.h>
main( )
{ int c,d;
c = (13>>1)|1;
d = (13>1)||1;
printf("%d,%d ", c, d);
}
程序运行后的输出结果是答案:C)7,1
46. 以下选项中,合法的C语言常量是答案:
C)21.84
47. 以下选项中,合法的C语言实数是答案:
B).1e0
阿尔卑斯比萨自助48. 设a,b,c是整型变量,且已正确赋初值,以下选项中错误的赋值语句是答案:
C)a = 2 = (b = 9) = 1;
49. 有如下程序
#include <stdio.h>
main( )
{
int x = 072;
printf("X=%d ", x+1);
}
程序运行后的输出结果是答案:A)X=59 50. 对于if(表达式) 语句,以下叙述正确的是答案:B)“表达式”的值可以是任意合法的数值
51. 有如下程序
#include <stdio.h>
main( )
{
int a = 0, b = 1;
if (a++ && b++)
printf("TRUE");
else
printf("FALSE");
printf("_OUT:a=%d,b=%d ", a, b);
}
程序运行后的输出结果是答案:
A)FALSE_OUT:a=1,b=1
52. 以下叙述正确的是答案:D)char c1, *c2, **c3, c4[2]; 是C语言的合法语句
53. 设有如下程序段
int a[1] = {0};
int b[] = {9};
char c[3] = {"A", "B"};
char d = "12";
以下叙述正确的是答案:A)a, b的定义合法,c, d的定义不合法
54. 以下选项中,合法的数值型常量是答案:B)3.2
55. 以下选项中,合法的实数是答案:D)1.5E2
56. 若已有定义语句:int a, b, c;,且变量已正确赋初值,则以下选项中正确的赋值语句是答案:B)a = (b = c) + 8;
57. 有以下程序
#include <stdio.h>
main( )
{
int x = 0x13; printf("INT:%d ", x+1);
}
程序运行后的输出结果是答案:C)INT:20
58. 有以下程序
#include <stdio.h>
main( )
{
int i, array[6] = {1, 5, 0, 4};
for (i=0; i<5; i++)
printf("%d,", array[i] & 4);
printf(" ");
}
程序运行后的输出结果是答案:B)0,4,0,4,0,
59. 设变量a,b和ch已正确定义并赋初值,
则以下叙述中错误的是答案:C)语句
ch=(unsigned int) a+b;是对a与b之和进行强
制类型转换,结果赋值给变量ch
60. 以下可以正确且安全的用作用户标识符
的一组选项是答案:D)_32int, long64
61. 以下关于运算符"/"的叙述正确的是答
案:B)只有其两边运算对象的类型都是整型
时,所做运算为整数整除运算
62. 若有定义:char ch; int a; double d;,当
输入为12345 678910.36时,以下选项中能给
各个变量正确输入数据的是答案:D)
scanf("%d%c%lf",&a,&ch,&d);
63. 如图所示一平面圆,圆心是(2,1),半径为
1:以下选项中,判断平面点(x,y)位于圆内时
为真的表达式是答案:
A)(x-2)*(x-2)+(y-1)*(y-1)<1
64. 以下叙述中正确的是答案:
C)'A'和'A'都是转义字符常量
65. C语言常量的类型从字面形式上可区分,
以下判断中正确的是答案:D)2.0E3 --- 实型
66. 以下选项中,算术表达式的值与其他三
个不同的是答案:C)3/5
67. 设有定义:int k=3,i=2; 以下选项中,变
量k的值与其他三个不同的是答案:C)k=i--;
68. 设有如下语句:
int k=0;
k=printf("OK ");
则以下叙述中正确的是答案:
A)变量k得到的是输出字符的总个数3
69. 以下叙述中错误的是答案:
A)C语言逻辑运算的结果是0和任意非0值
为逻辑运算的对象
70. C语言的逻辑表达式在特定情况下会产生
“短路”现象。若有如下逻辑表达式:
x++ && y++
则以下叙述中正确的是答案:A)若x的值为
0,则y++操作被“短路”,y值不变
71. 以下表达式中,其值不等于数值3的是
答案:D)0 +'3'
72. 有如下程序
#include <stdio.h>
void fun(int *a,int *b)
{ for( ; (*a<*b) || (getchar()!='@') ; )
{ (*a)++; (*b)--; }
}
main()
{ int i=0,j=5;
fun(&i,&j);
aux接口
printf("%d,%d ",i,j);
}
程序运行时在第一列开始输入:
ab@<;回车>
则运行结果是答案:B)5,0
73. 以下是正确C语言实型常量的是答案:
D)+8.8e+8
74. 算术运算符和圆括号有不同的运算优先
级,对于表达式:a+b+c*(d+e),关于执行顺
序,以下说法正确的是答案:D)先执行a+b
得r1,再执行(d+e)得r2,再执行c*r2得r3,
最后执行r1+r3得表达式最后结果
75. 若有程序段:
int a,b; char d;
scanf("%d%c%d", &a, &d, &b);
若想把12输入给变量a,字符'k'输入给变量
d,34输入给变量b,程序运行时正确的输入
电信积分是答案:C)12k34
76. 有下列程序
#include <stdio.h>
main()
{
int a=0,b=0,c=0;
if (++a || ++b && ++c)
printf("%d,%d,%d ", a, b, c);
}
程序执行后的输出结果是答案:D)1,0,0
77. 关于字符常量'a',以下说法正确的是答
案:A
A)字符后的数141是八进制
78. 设a,b,c是整型变量且已正确赋有初值,
以下选项中的赋值表达式错误的是答案:
D)a = (b = 0) = 8
79. 有如下程序
#include <stdio.h>
main()
{
int x = 032;
printf("%d ", x);
}
程序运行后的输出结果是答案:D)26
80. 对于if(表达式) ,以下说法正确的是答案:A)“表达式”的值可以是1
81. 有如下程序
#include <stdio.h>
main()
{
int a = 0, b = 1;
if (a++ && b++)
printf("T");
else
printf("F");
a = b++;
printf("a=%d,b=%d ", a, b);
}
程序运行后的输出结果是答案:C)Fa=1,b=2 82. 有如下程序
#include <stdio.h>
main()
{
int i, data;
scanf("%d", &data);
for (i=0; i<5; i++)
{
if ((i < data && i % 2) || (i > data && i % 3 == 0)) continue;
printf("%d,", i);
}
}
程序运行时,从键盘输入:13<;回车>后,程序输出结果为答案:B)0,2,4,
83. 以下选项中,合法的C语言标识符是答案:B)_123
85. 以下说法正确的是答案:B)复合语句中包含的语句种类没有限制
86. 若有定义:int a,b,c;,想通过语句:scanf("%d,%d%d",&a,&b,&c);把1、2、3分别输入给变量a、b、c,则正确的键盘输入是答案:A)1,2<tab>3<;回车> 87. 以下各选项中的代码段执行后,变量y
的值不为1的是答案:C)int x=10,y=0; if(x=y)
y=1;
88. 以下选项中,与表达式flag ? a*=2 : a/=3
等价的是答案:C)flag!=0 ? a+=a : a/=3
第三节:顺序结构程序设计
1.有以下程序
#include <stdio.h>
main()
{
int a=2, c=5;
printf("a=%%d,b=%%d ", a, c );
}
程序运行后的输出结果是答案:
C)a=%d,b=%d
2. 有以下程序
#include <stdio.h>
#include <math.h>
main()
{
int a=1, b=4, c=2;
double x=10.5, y=4.0, z;
z = ( a+b )/c + sqrt( y ) * 1.2 / c + x;
printf("%f ", z);
}
程序运行后的输出结果是答案:C)13.700000
3. 若有定义:int a=0,b=0,c=0,d=0;,以下关于
C语言表达式:(++a || ++b) ? ++c : ++d 执行
顺序的叙述正确的是答案:
A)先计算表达式++a,其值为1,由此可确
定(++a || ++b)值为1,因此计算++c
4. 有下列程序
#include <stdio.h>
main( )
{ int a=123456, b;
while(a)
{ b = a%10;
a /= 10;
switch(b)
{ default: printf("%d", b++);
case 1:
case 2: printf("%d", b++); break;
case 3: printf("%d", b++); break;
case 4: printf("%d", b++);
}
}
}
程序执行后的输出结果是答案:
A)67564321
第四节:选择结构程序设计
1. 有以下程序
#include <stdio.h>
main()
{
char c;
while( ( c=getchar() )!= ' ' )
{
switch( c-'2' )
{
case 0 :
case 1 : putchar( c+4 );
case 2 : putchar( c+4 ); break;
case 3 : putchar( c+3 );
default : putchar( c+2 ); break;
}
}
printf( " " );
}
程序运行后从第一列开始输入以下数据
2473<;回车>
程序的输出结果是答案:A)668977
2. 有以下程序段,若变量已正确定义并赋值
if(a>b)printf("x=%d,", x);
else printf("y=%d,", y);
if(a<=b)i++;
else j++;
则与此程序段功能相同的选项是答案:
A)if(a>b){printf("x=%d,", x);j++;}
else {printf("y=%d,", y);i++;}
3. 以下程序的功能是判断输入的一个整数
是否能被3或7整除,若能整除,输出YES,
否则输出NO。在下划线处应填入的选项是
#include <stdio.h>
main()
{ int k;
printf("Enter a int number : "); scanf("%d", &k );
if ________ printf("YES ");
else printf("NO ");
}答案:D)( (k%3==0) || (k%7==0) )
4. 对于if(表达式) 语句,以下叙述正确的是
答案:A)“表达式”的值可以是任意合法的
数值
5. 有如下程序
#include <stdio.h>
main()
{
int a = 0, b = 1;
if (a++ && b++)
高考美术printf("T");
else
printf("F");
printf("a=%d,b=%d ", a, b);
}
程序运行后的输出结果是答案:B)Fa=1,b=1 6. 有如下程序
#include <stdio.h>
main()
{
char a = '3', b = 'A';
int i;
for (i=0; i<6; i++)
{
if (i % 3) putchar(a + i);
else putchar(b + i);
}
printf(" ");
}
程序运行后的输出结果是答案:C)A45D78 7. 有如下程序
#include <stdio.h>
main()
{
int x = 0x13;
if (x = 0x18) printf("T");
printf("F");
printf(" ");
}
程序运行后的输出结果是答案:D)TF
8. 有如下程序
#include <stdio.h>
main()
{
int a = 0, b = 1;
if (++a == b++)
printf("T");
else
printf("F");
printf("a=%d,b=%d ", a, b);
} 程序运行后的输出结果是答案:C)Ta=1,b=2
9. 有如下程序
#include <stdio.h>
main()
{
if ('
10. 有以下程序段
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(a>b) a=b;
if(a>c) a=c;
printf("%d ",a);
该程序段的功能是答案:D
A)输出a、b、c中值相等的数值
B)输出a的原始值
C)输出a、b、c中的最大值
D)输出a、b、c中的最小值
11. 有以下程序
#include <stdio.h>
main()
{
int x;
scanf("%d",&x);
if(x>10) printf("1");
else if(x>20) printf("2");
else if(x>30) printf("3");
}
若运行时输入:35<;回车>,则输出结果是答
案:C)1
12. 有以下程序段
scanf("%d%d%d",&a,&b,&c);
if(a<b) a==b;
if(a<c) a==c;
printf("%d ",a);
该程序段的功能是答案:D)输出a的原始值
13. 以下程序段中,不能实现“如果a<b则
x=10,否则x=-10”的是答案:A)if(a<b) x=10;
if(b<a) x=-10;
14. 有以下程序
#include <stdio.h>
main()
{ char *s="120119110";
int n0,n1,n2,nn,i;
n0=n1=n2=nn=i=0;
do{
switch(s[i++])
{ default : nn++;
case '0' : n0++;
case '1' : n1++;
case '2' : n2++;
}
} while(s[i]);
printf("n0=%d,n1=%d,n2=%d,nn=%d
",n0,n1,n2,nn);
}
程序的运行结果是答案:
C)n0=3,n1=8,n2=9,nn=1
15. 有以下程序
#include <stdio.h>
main( )
{ int a,b;
for (a=0; a<3; a++)
{ scanf("%d", &b);
switch(b)
{ default: printf("%d,", ++b);
case 1: printf("%d,", ++b);
case 2: printf("%d,", ++b);
}
}
}
执行时输入:1 2 3<;回车>,则输出结果是答
案:C)2,3,3,4,5,6,
16. 有以下程序
#include <stdio.h>
main( )
{ int a,b;
for (a=0; a<3; a++)
{ scanf("%d", &b);
switch(b)
{ default: printf("%d,", b++);
case 1: printf("%d,", b++);
case 2: printf("%d,", b++);
}
}
}
程序运行时输入:1 2 3<;回车>,则输出结果
是答案:B)1,2,2,3,4,5,
17. 有如下程序
#include <stdio.h>
main( )
{
int i, data;
scanf("%d", &data);
for (i=0; i<10; i++)
发布评论