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)