全国计算机等级考试二级C语言题库及答案超强Word格式.docx
《全国计算机等级考试二级C语言题库及答案超强Word格式.docx》由会员分享,可在线阅读,更多相关《全国计算机等级考试二级C语言题库及答案超强Word格式.docx(69页珍藏版)》请在冰豆网上搜索。
![全国计算机等级考试二级C语言题库及答案超强Word格式.docx](https://file1.bdocx.com/fileroot1/2023-1/4/21037a2e-7720-4198-b6a4-fdfb0556668d/21037a2e-7720-4198-b6a4-fdfb0556668d1.gif)
B)i=a%11;
C)a=a++,i++D)i=!
a;
16.有以下程序:
#include<
stdio.h>
main()
{ ints,t,A=10;
doubleB=6;
s=sizeof(A);
t=sizeof(B);
printf("
%d,%d\n"
,s,t);
}
在VC6.0平台上编译运行,程序运行后的输出结果是( D )。
A)10,6B)4,4C)2,4D)4,8
17.有以下程序:
{ chara,b,c,d;
scanf("
%c%c"
,&
a,&
b);
c=getchar();
d=getchar();
printf("
%c%c%c%c\n"
,a,b,c,d);
当执行程序时,按下列方式输入数据(从第1列开始,<
CR>
代表回车,注意:
回车也是一个字符)
12<
34<
则输出结果是( D )。
A)12
34
B)12
C)1234
D)12
3
18.下关于逻辑运算符两侧运算对象的叙述中正确的是( A )。
A)可以是任意合法的表达式B)只能是整数0或非0整数
C)可以是结构体类型的数据D)只能是整数0或1
19.有以下程序:
{ inta=0,b=0,c=0,d=0;
if(a=1)b=1;
c=2;
elsed=3;
%d,%d,%d,%d\n"
程序输出( C )。
A)1,1,2,0B)0,0,0,3C)编译有错D)0,1,2,0
20.有以下程序:
{ intx=1,y=0,a=0,b=0;
switch(x)
{ case1:
switch(y)
{ case0:
a++;
break;
case1:
b++;
}
case2:
case3:
}
a=%d,b=%d\n"
,a,b);
程序的运行结果是( B )。
A)a=2,b=2B)a=2,b=1C)a=1,b=1D)a=1,b=0
21.以下程序段中的变量已正确定义:
for(i=0;
i<
4;
i++,i++)
for(k=1;
k<
3;
k++);
printf("
*"
);
程序段的输出结果是( C )。
A)**B)****C)*D)********
22.有以下程序段:
inti,n;
for(i=0;
8;
i++)
{ n=rand()%5;
switch(n)
{ case1:
case3:
%d\n"
,n);
case2:
case4:
continue;
case0:
exit(0);
,n);
以下关于程序段执行情况的叙述,正确的是( D )。
A)for循环语句固定执行8次B)当产生的随机数n为4时结束循环操作
C)当产生的随机数n为1和2时不做任何操作D)当产生的随机数n为0时结束程序运行
23.有以下程序:
intf(intx);
{intn=1,m;
m=f(f(f(n)));
%d\n"
,m);
intf(intx)
{returnx*2;
}
程序运行后的输出结果是( A )。
A)8B)2C)4D)1
24.以下叙述中错误的是( A )。
A)可以给指针变量赋一个整数作为地址值
B)函数可以返回地址值
C)改变函数形参的值,不会改变对应实参的值
D)当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL
25.设已有定义:
floatx;
,则以下对指针变量p进行定义且赋初值的语句中正确的是( B )。
A)int*p=(float)x;
B)float*p=&
x;
C)floatp=&
D)float*p=1024;
26.以下数组定义中错误的是( D )。
A)intx[2][3]={1,2,3,4,5,6};
B)intx[][3]={0};
C)intx[][3]={{1,2,3},{4,5,6}};
D)intx[2][3]={{1,2},{3,4},{5,6}};
27.有以下程序:
voidfun(inta[],intn)
{ inti,t;
for(i=0;
n/2;
i++){t=a[i];
a[i]=a[n-1-i];
a[n-1-i]=t;
{ intk[10]={1,2,3,4,5,6,7,8,9,10},i;
fun(k,5);
for(i=2;
i++)printf("
%d"
,k[i]);
\n"
);
程序的运行结果是( A )。
A)321678B)876543C)1098765D)345678
28.有以下程序:
#defineN4
voidfun(inta[][N],intb[])
{ inti;
for(i=0;
N;
i++)b[i]=a[i][i]-a[i][N-1-i];
{ intx[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},y[N],i;
fun(x,y);
%d,"
,y[i]);
A)-3,-1,1,3,B)-12,-3,0,0,C)0,1,2,3,D)-3,-3,-3,-3,
29.设有定义:
chars[81];
inti=0;
,以下不能将一行(不超过80个字符)带有空格的字符串正确读入的语句或语句组是( C )。
A)gets(s);
B)while((s[i++]=getchar())!
='
\n'
s[i]='
\0'
;
C)scanf("
%s"
,s);
D)do{scanf("
%c"
s[i]);
}while(s[i++]!
s[i]='
30.设有定义:
charp[]={'
1'
,'
2'
3'
},*q=p;
,以下不能计算出一个char型数据所占字节数的表达式是( A )。
A)sizeof(p)B)sizeof(char)C)sizeof(*q)D)sizeof(p[0])
31.有以下程序:
string.h>
{ charstr[][20]={"
One*World"
,"
One*Dream!
"
},*p=str[1];
printf("
,strlen(p));
%s\n"
,p);
A)10,One*Dream!
B)9,One*Dream!
C)9,One*WorldD)10,One*World
32.有以下程序:
{ chars[]="
012xy\08s34f4w2"
inti,n=0;
for(i=0;
s[i]!
=0;
if(s[i]>
='
0'
&
&
s[i]<
9'
)n++;
程序运行后的输出结果是( B )。
A)0B)3C)7D)8
33.有以下程序:
fun(intx,inty)
{staticintm=0,i=2;
i+=m+1;
m=i+x+y;
returnm;
{intj=1,m=1,k;
k=fun(j,m);
,k);
执行后的输出结果是( A )。
A)5,11B)5,5C)11,11D)11,5
34.在C语言中,只有在使用时才占用内存单元的变量,其存储类型是( C )。
A)auto和staticB)extern和registerC)auto和registerD)static和register
35.下面结构体的定义语句中,错误的是( A )。
A)structord{intx;
inty;
intz;
}structorda;
B)structord{intx;
};
structorda;
C)structord{intx;
}a;
D)struct{intx;
36.有以下程序:
#include<
typedefstruct{intb,p;
}A;
voidf(Ac)/*注意:
c是结构变量名*/
{intj;
c.b+=1;
c.p+=2;
{inti;
Aa={1,2};
f(a);
printf("
,a.b,a.p);
A)2,4B)1,2C)1,4D)2,3
37.以下叙述中正确的是( A )。
A)在C语言中,预处理命令行都以"
#"
开头B)预处理命令行必须位于C源程序的起始位置C)#include<
必须放在C程序的开头D)C语言的预处理不能实现宏定义和条件编译的功能
38.有以下程序:
stdlib.h>
intfun(intn)
{ int*p;
p=(int*)malloc(sizeof(int));
*p=n;
return*p;
{ inta;
a=fun(10);
,a+fun(10));
程序的运行结果是( C )。
A)0B)10C)20D)出错
39.有以下程序:
{ unsignedchara=8,c;
c=a>
>
,c);
A)16B)1C)32D)0
40.读取二进制文件的函数调用形式为:
fread(buffer,size,count,fp);
,其中buffer代表的是( D )。
A)一个内存块的字节数B)一个整型变量,代表待读取的数据的字节数
C)一个文件指针,指向待读取的文件D)一个内存块的首地址,代表读入数据存放的地址
11.下列叙述中错误的是( B )。
A)C程序可以由多个程序文件组成B)一个C语言程序只能实现一种算法
C)C程序可以由一个或多个函数组成D)一个C函数可以单独作为一个C程序文件存在
12.以下选项中,能用作数据常量的是( A )。
A)115LB)0118C)1.5e1.5D)o115
13.按照C语言规定的用户标识符命名规则,不能出现在标识符中的是( D )。
A)大写字母B)下划线C)数字字符D)连接符
14.设变量已正确定义并赋值,以下正确的表达式是( A )。
A)x=y+z+5,++yB)int(15.8%5)C)x=y*5=x+zD)x=25%5.0
15.设有定义:
intx=2;
,以下表达式中,值不为6的是( A )。
A)2*x,x+=2B)x++,2*xC)x*=(1+x)D)x*=x+1
{ intx,y,z;
x=y=1;
z=x++,y++,++y;
%d,%d,%d\n"
,x,y,z);
程序运行后的输出结果是( C )。
A)2,3,3B)2,3,2C)2,3,1D)2,2,1
{ charc1,c2;
c1='
A'
+'
8'
-'
4'
c2='
5'
printf("
%c,%d\n"
,c1,c2);
已知字母A的ASCII码为65,程序运行后的输出结果是( A )。
A)E,68B)D,69C)E,DD)输出无定值
18.若有定义intx,y;
并已正确给变量赋值,则以下选项中与表达式(x-y)?
(x++):
(y++)中的条件表达式(x-y)等价的是( A )。
A)(x-y<
0||x-y>
0)B)(x-y<
0)C)(x-y>
0)D)(x-y==0)
{ intx=1,y=0;
if(!
x)y++;
elseif(x==0)
if(x)y+=2;
elsey+=3;
,y);
程序运行后的输出结果是( D )。
A)3B)2C)1D)0
20.若有定义:
floatx=1.5;
inta=1,b=3,c=2;
则正确的switch语句是( A )。
A)switch(a+b)
{case1:
*\n"
case2+1:
**\n"
B)switch((int)x);
case2:
C)switch(x)
{case1.0:
case2.0:
D)switch(a+b)
casec:
21.有以下程序:
{ inty=9;
for(;
y>
0;
y--)
if(y%3==0)printf("
,--y);
A)852B)963C)741D)875421
22.有以下程序:
{ inti,j,m=1;
for(i=1;
i<
i++)
{ for(j=3;
j>
j--)
{if(i*j>
3)break;
m*=i*j;
}
m=%d\n"
A)m=4B)m=2C)m=6D)m=5
intfun(intx,inty)
{ if(x!
=y)return((x+y)/2);
elsereturn(x);
{ inta=4,b=5,c=6;
printf("
,fun(2*a,fun(b,c)));
(A)
A)6B)3C)8D)12
24.有以下程序:
intadd(inta,intb){return(a+b);
{intk,(*f)(),a=5,b=10;
f=add;
…
则以下函数调用语句错误的是( D )。
A)k=f(a,b);
B)k=add(a,b);
C)k=(*f)(a,b);
D)k=*f(a,b);
25.有以下程序:
{intn,*p=NULL;
*p=&
n;
Inputn:
scanf("
p);
outputn:
该程序试图通过指针p为变量n读入数据并输出,但程序有多处错误,以下语句正确的是( A )
A)intn,*p=NULL;
B)*p=&
C)scanf("
p)D)printf("
26.下列定义数组的语句中,正确的是( A )。
A)#defineN10intx[N];
B)intN=10;
intx[N];
C)intx[0..10];
D)intx[];
{ inta[]={2,3,5,4},i;
switch(i%2)
{case0:
switch(a[i]%2)
{ case0:
a[i]++;
break;
case1:
a[i]--;
}break;
case1:
a[i]=0;
}
i++)printf("
%d"
,a[i]);
A)0304B)2050C)3344D)3040
{ intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;
i++)
for(j=i;
j<
=i;
j++)t+=b[i][b[j][i]];
,t);
A)3B)4C)1D)9
29.以下语句中存在语法错误的是( A )。
A)charss[6][20];
ss[1]="
right?
B)charss()[20]={"
C)char*ss[6];
D)char*ss()={"
rig