C语言考试试卷
- 格式:docx
- 大小:25.04 KB
- 文档页数:18
C语言考试试卷
二级C语言考试试卷
(考试说明及第一部分计算机基础知识略)
第二部分C语言程序设计
一、选择题(用答题卡答题,答案依次填
在21~30答题号内)
21. 若有声明语句
chars1[10]={0} ,s2[10]="books" ;则能将字符串"books" 赋给数组s1保存
的表达式是21 。
A.s1=”books”;
B.strcpy(s2,s1) ;
C.s1=s2 ;
D.strcat(s1,s2) ;
22. 表达式(a=4*5,b=a*2),b-a,a+=2 的值是22 。
A.2 B.20 C.22 D.42
23. 以下是一个自定义函数的头部,其中正确的是23 。
A.intfun(inta[
] ,b) B.intfun(inta[] ,inta)
C.intfun(int*a ,intb)
D.intfun(chara[][] ,intb)
24. 以下数组声明语句中正确的是24 。
A.intn ,a[n] ; B.inta[] ;
C.inta[2][3]={
{1} ,{2},{3}} ;D.inta[][3]={{1} ,
{2}
,
{3}} ;
25.已知在某 C语言编译系统中表达式sizeof(int) 的值是2,如果希望将常
量
在一个变量 a中,该变量声明语句应当是25 。
A.inta ; B.longinta ;
C.unsignedinta ;
D.unsignedlonginta
26. 以下声明语句中,用于声明一个行指针变量的是26 。
A.int*p(int) ;
B.int*p ;
C.int(*p)[3] ; D.int(*p)(int) ;-
70000;
正确地保存
27.已知A盘根目录下的一个文本数据文件data.dat中存储了100个int型数据,若需要修改该
文件中已经存在的若干个数据的值,只能调用依次
的正确调用形式是27 。fope
n
函数,已有声明语
句
FILE*fp;则fopen 函
数
A.fp=fopen( ”a: data.dat”,”r+”);
C.fp=fopen( ”a: data.dat”,”a+”);
28. 在以下程序中,需要在fun函数中声明一个in
t B .fp=fopen( ”a:
D.fp =fopen(”a:
型的变量,以下选项
中
data.d
at data.d
at
28
”,”w+”);
”,”w”);
不能用作该变量
的名字。
A.x B.y C.fabs D.fun
#include
inty ;
main()
{inta=1 ;
fun(a) ;
}
intfun(intx)
{
, /
* ;/*i
nt
型变量声明语句位
置
若干执行语句*/
*/
}
的是29.如有语句:intx,y=0,z,*p[3] ;p[0]=&x
29 。
A.y++ B.p++ C.*++p[0]
30. 设有声明语句:int
a[3][3]={1,2,3,4,5,6,7,8,9}
;p[1]=&y;p[2]=&z; D.(*p[0])++
;以下语句中
除
以下表达式中有语法错误
30 外均能输出 a[1][2]
的值。
A.prin tf( C.print f( “%d”,*(*(a+1)+
2))
“%d”,*(a[1]+2))
;
; B.print
f(
D.print
f(
“%d”,*(&a[2]
[0]“%d”,*(a+
1)[2])
-
1))
;
;
若
二、填空题(将答案填写在答题纸的响应答题号内,每个答案只占一行)
基本概念题(共 5分)
1.只能在循环体中出现的语句是(1)语句。
2.&既可以用作单目运算符也可以用作双目运算符,其中用作单目运算符时表示的功能是(2)。3.包含二目运算符的表达式可一般的表示为(x)op(y),其中op代表运算符 x、y代表操作数。op是“+”运算符,且x和y均为常量时,不能同时为(3)常量。 4.当(4)语句被执行时,程序的执行流程无条件地从一个函数跳转到另一个函数。
5.在函数内部声明局部变量时缺省了存储类型,该变量存储类型为(5)。
阅读程序写出运行结果题
(共
6.以下程序段运行后, x、y、z
10分)
的值分别
是
(6)。
intx=0,y=3,z=2;
if(x++&&y++)z--;
elseif(x+1==6||y--)z++;
7.设有以下宏定义:
#defineN3
#defineY(n)((N+1)*n)
则执行语句 z=2*(N+Y(5+1));
8.[程序]
intx=1;
后,z 的值为(7)。
main()
{inty,k;
y=f(3);printf( “%dn%d”,x,y);
}
intf(intx)
{if(x==3
){intx=
2;
returnx; }
elsereturnx;
}
该程序运行后,输出x的值是(8),y的值是(9)。
9.[程序]
main()
{
inta[3][3]={1,2,3,4,5,6,7,8,9},m,k,t;
for(m=0;m<3;m++)
for(k=0;k<=m;k++)
if((m+k)%2)t=a[m][k],a[m][k]=a[k][m],a[k][m]=t;
for(m=0;m<3;m++)
{for(k=0;k<3;k++)
printf(“%d”,a[m ][k]);
printf(“n”);
}
}
该程序执行时输出第一行是(10),第二行是(11)。
10.[程序]
#include
intconvert(chars1[],chars2[],int*n1)
{inti=0,j=0,k,s=0
,len;intvalue=0;
chartab[16]= ”0123456789ABCDEF”;
len=strlen(s1);
if(len%4)
{for(i=0;i
s=s*2+s1[i]-
‘0’;s2[j++]=tab[s];value=
value*16+s; }
while(i
{s=0;
for=(k=0;k<4;k++)s=s*2+s1[i+k]- ‘0’;
s2[j++]=tab[s];
value=value*16+s;
i=r+4;
s2[j]= ’0’;*n1=strlen(s2);
returnvalue;
}
main()
{charss1[]=”1001010”,ss2[10];i
ntx,y;
y=convert(ss1,ss2,&x);
printf(“%d n%s”,x,y,ss2);
}
该程序执行时输出第一行
是(12),第二行是(13),第三行是(14)。
11.[程序]
main()
{inta[3][3],i,j;
{for(j=0;j<3;j++)printf( numlist(&a[0][0],9);
for(I=0;I<3;I++)
“%d”,a[i][j]);
“n”);
prin
tf(
}
}
numlist(int*p,intn) {inti;
for(i=0;i< p="">
}
num(intn)
{if(n==0)return1;re
turnnum(n-1)*2+1;
}
程序执行时输出的第一行
是
(15)。
完善程序题(共15分)
12.程序功能:合并两个已经按照升序排列的一维数组。有n个元素的数组中,数组中n个元素已按升序排列,插入
Inse
rtm后
的
函数功能:将m插入
n+1个元素仍保持有序。
x指向的
含
voidinsert(intx[],intn,intm);
main()
{inta[10]={1,3,5,7,9},b[5]={2,4,8,
16,32},k;for(k=0;k<5;k++)
{insert(a,(16),b[k]);
}
for(k=0;k<10;k++)
printf("%d",a[k]);
}
voidinsert(intx[],intn,intm)