二级C语言真题Word格式.docx
《二级C语言真题Word格式.docx》由会员分享,可在线阅读,更多相关《二级C语言真题Word格式.docx(32页珍藏版)》请在冰点文库上搜索。
A)chara='
A'
b='
B'
;
B)floata=b=10.0;
C)inta=10,*b=&
a;
D)float*a,b=&
14、
下列选项中,不能用作标识符的是
A)_1234_
B)_1_2
C)int_2_
D)2_int_
15、有以下定义语句
doublea,b;
intw;
longc;
若各变量已正确赋值,则下列选项中正确的表达式是
A)a=a+b=b++
B)w%(int)a+b)
C)(c+w)%(int)a
D)w=a==b;
16、有以下程序
main(
)
{intm=3,n=4,x;
x=-m++;
x=x+8/++n;
printf("
%d\n"
x);
}
程序运行后的输出结果是
A)3
B)5
C)-1
D)-2
17、有以下程序
main()
{chara='
a'
b;
print("
%c,"
++a);
printf("
%c\n"
b=a++);
}
程序运行后的输出结果是
A)b,b
B)b,c
C)a,b
D)a,c
18、有以下程序
{ intm=0256,n=256;
printf("
%o%o\n"
m,n);
A)02560400
B)0256256
C)256400
D)400400
19、有以下程序
{ inta=666,b=888;
a,b);
程序运行后的输出结果是
A)错误信息
B)666
C)888
D)666,888
20、有以下程序
{ inti;
for(i=0;
i<
3;
i++)
switch(i){
case0:
%d"
i);
case2:
default:
A)022111
B)021021
C)000122
D)012
21、
若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<
10的是
A)abs(x-y)<
10
B)x-y>
-10&
&
x-y<
C)!
(x-y)<
-10||!
(y-x)>
D)(x-y)*(x-y)
22、有以下程序
main(
{inta=3,b=4,c=5,d=2;
if(a>
b)
if(b>
c)
d+++1);
else
++d+1);
d);
A)2
B)3
C)43
D)44
23、
下列条件语句中,功能与其他语句不同的是
A)if(a)printf("
elseprintf("
y);
B)if(a==0)printf("
C)if(a!
=0)printf("
D)if(a==0)printf("
24、有以下程序
{inti=0,x=0;
for(;
{if(i==3||i==5)continue;
if(i==6)break;
i++;
s+=i;
};
s);
A)10
B)13
C)21
D)程序进入死循环
25、
若变量已正确定义,要求程序段完成求5!
的计算,不能完成此操作的程序段是
A)for(i=1,p=1;
=5;
i++)p*=i;
B)for(i=1;
i++){p=1;
p*=i;
C)i=1;
p=1;
while(i<
=5){p*=i;
i++;
D)i=1;
do{p*=i;
}while(i<
=5);
26、有以下程序
{chara,b,c,d;
scanf("
%c,%c,%d,%d"
&
a,&
b,&
c,&
d);
c,%c,%c,%c\n"
a,b,c,d);
}
若运行时从键盘上输入:
6,5,65,66。
则输出结果是
A)6,5,A,B
B)6,5,65,66
C)6,5,6,5
D)6,5,6,6
27、
以下能正确定义二维数组的是
A)inta[][3];
B)inta[][3]=2{2*3};
C)inta[][3]={};
D)inta[2][3]={{1},{2},{3,4}};
28、有以下程序
intf(inta)
{returna%2;
}
{ints[8]={1,3,5,2,4,6},i,d=0;
for(i=0;
f(s[i]);
i++)d+=s[i];
A)9
B)11
C)19
D)21
29、
若有以下说明和语句,intc[4][5],(*p)[5];
p=c;
能正确引用c数组元素的是
A)p+1
B)*(p+3)
C)*(p+1)+3
D)*(p[0]+2))
30、有以下程序
)
{inta=7,b=8,*p,*q,*r;
p=&
q=&
b;
r=p;
p=q;
q=r;
%d,%d,%d,%d\n"
*p,*q,a,b);
A)8,7,8,7
B)7,8,7,8
C)8,7,7,8
D)7,8,8,7
31、
s12和s2已正确定义并分别指向两个字符串。
若要求:
当s1所指串大于s2所指串时,执行语句S;
则以下选项中正确的是
A)if(s1>
s2)S;
B)if(strcmp(s1,s2))S;
C)if(strcmp(s2,s1)>
0)S;
D)if(strcmp(s1,s2)>
32、设有定义语句intx[6]={2,4,6,8,5,7},*p=x,i;
要求依次输出x数组6个元素中的值,不能完成此操作的语句是
A)for(i=0;
6;
i++)printf("
%2d"
*(p++));
B)for(i=0;
*(p+i));
C)for(i=0;
*p++);
D)for(i=0;
i
33、有以下程序
#include<stdio.h>
{inta[
]={1,2,3,4,5,6,7,8,9,10,11,12,},*p=a+5,*q=NULL;
*q=*(p+5);
printf("
%d%d\n"
*p,*q);
A)运行后报错
B)66
C)611
D)510
34、有以下定义和语句
inta[3][2]={1,2,3,4,5,6,},*p[3];
p[0]=a[1];
则*p[0]+1)所代表的数组元素是
A)a[0][1]
B)a[1][0]
C)a[1][1]
D)a[1][2]
35、
有以下程序
main(
{charstr[
][10]={"
China"
"
Beijing"
},*p=str;
%s\n"
p+10);
}
程序运行后的输出结果是
A)China
B)Bejing
C)ng
D)ing
36、有以下程序
{chars[
]="
ABCD"
*p;
for(p=s+1;
p<s+4;
p++)printf("
p);
A)ABCDBCDCDD
B)ABCD
C)BCD
D)BCDCDD
37、
在函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则
A)称为函数的直接递归调用
B)称为函数的间接递归调用
C)称为函数的循环调用
D)C语言中不允许这样的递归调用
38、
已有定义:
inti,a[10],*p;
则合法的赋值语句是
A)p=100;
B)p=a[5];
C)p=a[2]+2;
D)p=a+2;
39、
以下叙述中正确的是
A)局部变量说明为static存储数,其生存期将得到延长
B)全局变量说明为static存储类,其作用域将被扩大
C)任何存储类的变量在未赋初值时,其值都是不确定的
D)形参可以使用的存储类说明符与局部变量完全相同
40、设有定义语句:
charc1=92,c2=92;
则以下表达式中值为零的是
A)c1^c2
B)c1&
c2
C)~c2
D)c1|c2
41、程序中对fun函数有如下说明
void*fun(
);
此说明的含义是:
A)fun了数无返回值
B)fun函数的返回值可以是任意的数据类型
C)fun函数的返回值是无值型的指针类型
D)指针fun指向一个函数,该函数无返回值
42、
]"
Yes\n/No"
*ps=s;
puts(ps+4);
*(ps+4)=0;
puts(s);
程序运行后的输出结果是(选项D中的第一行是空行)
A)n/NoYes
/No
B)/No
Yes
C)n/NO
Yes
/No
D)/NoYes
43、
{unsignedinta;
intb=-1;
a=b;
%u"
a);
A)-1
B)65535
C)32767
D)-32768
44、有以下程序
voidfun(int*a,inti,intj)
{intt;
if(i<j)
{t=a[i];
a[i]=a[j];
a[j]=t;
j--;
fun(a,i,j);
{intx[
]={2,6,1,8},i;
fun(x,0,3);
for(i=0;
i<4;
i++)printf("
x[i]);
\n"
A)1268
B)8621
C)8162
D)8612
45、
有以下说明和定义语句
structstudent
{intage;
charnum[8];
structstudentstu[3]={{20,"
200401"
},{21,"
200402"
},{10\9,"
200403"
}};
structstudent*p=stu;
以下选项中引用结构体变量成员的表达式错误的是
A)(p++)->
num
B)p->
C)(*p).num
D)stu[3].age
46、
有以下程序
]={1,3,5,7,2,4,6,0},i,j,k;
i<3;
for(j=2;
j>=i;
j--)
if(x[j+1]>x[j]){
k=x[j];
x[j]=x[j+1];
x[j+1]=k;
for(j=4;
j<7-i;
j++)
if(x[j+1]>x[j]){k=x[j];
for(i=0;
if(x[j]>x[j+1]){k=x[j];
i<8;
}
程序运行后的输出结果是:
A)75310246
B)01234567
C)76310462
D)13570246
47、有如下程序
#include〈stdio.h〉
{FILE
*fp1;
fp1=fopen("
f1.txt"
w"
fprintf(fp1,"
abc"
fclose(fp1);
若文本文件f1.txt中原有内容为:
good,则运行以上程序后文件f1.txt中的内容为
A)goodabc
B)abcd
C)abc
D)abcgood
48、48~50.以下程序的功能是:
建立一个带有头结点的单向链表,并将存储在数组中的字符依次转储到链表的各个结点中,请从与下划线处号码对应的一组选若中选择出正确的选项。
#include
stuctnode
{chardata;
structnode*next;
(48)CreatLis(char*s)
{structnode*h,*p,*q);
h=(structnode*)malloc(sizeof(structnode));
p=q=h;
while(*s!
='
\0'
{
p=(structnode*)malloc(sizeof(structnode));
p->
data=
(49);
q->
next=p;
q=
(50);
s++;
p->
next='
returnh;
{charstr[]="
linklist"
structnode*head;
head=CreatLis(str);
...
A)char*
B)structnode
C)structnode*
D)char
49、A)*s
B)s
C)*s++
D)(*s)++
50、A)p->
next
B)p
C)sD)s->
next
二、填空题
1、在64位高档微机中,CPU能同时处理 【1】
个字节的二进制数据。
2、
E-mail地址由域名和用户名两部分组成,它们之间用@分隔,其中在@后面的部分是 【2】
。
3、
Windows窗口一般由标题栏、菜单栏、控制按钮等部分组成。
为了移动窗口,则要用鼠标拖动 【3】
4、
计算机软件分为系统软件和应用软件,UNIX系统属于 【4】
5、
在Windows环境下,为了将屏幕内容存入剪贴板,应按 【5】
键。
6、
以下程序段的输出结果是 【6】
。
inti=9;
printf("
%o\n"
7、
以下程序运行后的输出结果是 【7】
main( )
{ inta,b,c;
a=25;
b=025;
c=0x25;
%d
a,b,c);
8、以下程序运行后的输出结果是 【8】 。
{ intp[7]={11,13,14,15,16,17,18};
inti=0,j=0;
while(i
j);
9、以下程序运行后的输出结果是 【9】
{ intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{ case0:
a++;
break;
case1:
b++;
}
case2:
}
10、以下程序运行后的输出结果是 【10】
{inta [4][4]={{1,2,3,4},{5,6,7,8},{11,12,13,14},{15,16,17,18}};
inti=0,j=0,s=0;
while(i++<4)
{
if(i==2||i==4)continue;
j=0;
do{s+=a[j];
j++;
}while(j<4);
11、以下程序运行后的输出结果是【11】
main( )
{ chara[]="
Language"
b[]="
Programe"
char*p1,*p2;
intk;
p1=a;
p2=b;
for(k=0;
k<=7;
k++)
if(*p1+k)==*(p2+k)}printf("
%c"
*(p1+k));
12、以下程序运行后的输出结果是【12】
{chara[]="
123456789"
inti=0;
p=a;
while(*p)
{if(i%2==0)*p='
*'
p++;
puts(a);
13、以下程序中,for循环体执行的次数是 【13】
#define N 2
#define M N+1
#define K M+1*M/2
for(i=1;
i〈K;
{...}
...
14、以下程序通过函数sunFun求。
这里f(x)=x2+1
{ printf("
Thesum=%d\n"
SunFun(10));
}
SunFun(intn)
{ intx,s=0;
for(x=0;
x<=n;
x++)
s+=F( 【14】 );
returns;
F(intx)
{ return
【15】 );
15、以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和。
请填空。
{ inti,a[20],sum,count;
sum=count=0;
for(i=0;
i<20;
i++)
【16】 );
fro(i=0;
{ if(a>0)
{ count++;
sum+= 【17】
printf("
sum=%d,count=%d\n"
sum,count);
16、以下程序中,函数sumColumM的功能是:
求出M行N列二维数组每列元素中的最小值,并计算它们的和值。
和值通过形参传回主函数输出。
#define
M2
N4
voidSumColumMin(inta[M][N],int*sum)
{ inti,j,k,s=0;
for(i=0;
i〈N;
{ k=0;
for(j=1;
j<M;
if(a[k][i]>a[j][i])k=j;
s+= 【18】 ;
【19】
=s;
{int x[M][N]={3,2,5,1,4,1,8,3},s;
SumColu