江苏省计算机二级考试C语言试卷汇编(2001-2005) 下载本文

第三部分 江苏省二级统考近五年试题汇编

第三部分 江苏省二级统考近五年试题汇编

【说明】基础题部分全部略去。

2001年春季笔试题及上机题 一、 选择题

21.以下所列语句中,合法的语句是: 。

A. a=1,b=2 B.++a; C.a=a+1=5; D.y=int(a); 22.以下所列字符常量中,不合法的是: 。

A.’\\0xff’ B.’\\65’ C.’$’ D.’\\x1a’

23.如有以下定义:“int y[4][4]={1,2,3,4,5,6,7,8,9,10},*py1=y[1],(*py2)[4]=y;”,则不能正确引用值为7的数组元素的表达式是: 。

A.*(y[1]+2) B.*(y+1)+2 C.py1[2] D.py2[1][2] 24.以下不致造成死循环的语句是: 。

A. for(y=0,x=1;x>++y;x=i ++)i =x; B. for(; ;x+=i ); C. while(x=8)x--;

D. for(i =10,sum=0;sum<=i ;)sum= --i ;

25.以下说法中正确的是: 。

A. 一个结构只能包含一种数据类型

B. 不同结构中的成员不能有相同的成员名 C. 两个结构变量不可以进行比较

D. 关键字typedef用于定义新的数据类型

26.设有定义:”float y=3.45678;int x;”,则以下表达式中能实现将y中数值保留小数点后2位,第3位四舍五入的表达式是: 。

A.y=(y*100+0.5)/100.0 B. x=y*100+0.5,y=x/100.0 C. y=y*100+0.5/100.0 D.y=(y/100+0.5)*100.0 27. 以下程序段输出结果是: 。 int a=10,b=11,c=12,s;

s=a++<=10&&b--<=2&&c++;printf(“%d,%d,%d,%d”,s,a,b,c);

A. 0,11,10,13 B. 1,11,10,13 C. 0,11,10,12 D.1,11,10,12 28.下列程序段执行后变量j的值是: 。

int j;char *s=”x\\045\\” ”;for(j=0;*s++;j++); A. 7 B. 3 C. 4 D. 5

29.设有以下说明,则值为210的表达式是: 。 struct s

{ int a;int *b;};

int x0[]={110,120},x1[]={210,220}; struct s x[]={{100},{200}},*p=x; x[0].b=x0;x[1].b=x1;

第三部分 江苏省二级统考近五年试题汇编

A. *p->b B. (++p)->a C. *(p++)->b D.*(++p)->b

30.设有“char s[]=”Program”,*p=s;”,则以下叙述中正确的是: 。 A. 数组s的内容与指针变量p中内容相同 B. 数组s的长度与strlen(p)的值相等 C. p[5]的值等于s[5]的值 D. sizeof(s)等于sizeof(*p) 二、填空题

1.若有定义语句“static char str[4][20]={“thank”,”you”,”very”,”much!”};” 则str数组中存储’\\0’的数组元素有: 个。

2.设有语句“int a=2,b=3,c=2;a+=b*=(++b-c++); “,变量b的值是 。 3.以下程序输出结果是: 。 #define T(x,y,z) x*y*z/4

main()

{ int a=1,b=3,c=5;

printf(\4.以下程序输出结果是: 。 main()

{printf(\fun(int n)

{if(n= =1)return 1; return n-fun(n-1); } 5.以下程序输出结果是: 。 main()

{ enum color{RED=5,BLUE,WHITE=0,BLACK};

char *colorname[]={\ printf(\6.【程序】

main()

{ int j,k,s,m;

for(k=1;k<10;k++) { s=1;m=k+2;

for(j=k;j

printf(\程序输出结果s= ,k= 。

7.【程序】

func(int a,int b) { return a+b;} main()

{int x=6,y=7,z;

z=func(func(x++,y++),func(--x,--y)); printf(\

以上程序输出结果是 (所用编译系统传递函数参数的顺序为自右向左)。 8.【程序】

第三部分 江苏省二级统考近五年试题汇编

main()

{ int i,p[9]={1,2,3,4,5,6,7,8,9},*p1[3],**p2; for(i=0;i<3;i++)p1[i]=&p[6-3*i]; p2=p1+2;

for(i=1;i<3;i++)

printf(\程序运行时输出的第一行是 ,第二行是 。 9.【程序】

fun(int *s,int n1,int n2) { int t;

while(n1

*(s+n1)=*(s+n2); *(s+n2)=t; n1++;n2--; } }

main()

{ int a[10]={1,2,3,4,5,6,7,8,9,0}, i ,*p=a; fun(p,0,3); fun(p+3,1,6); for(i=0;i<10;i++)

{ if(i%5= =0)printf(\ printf(\ } }

程序输出的第一行是 ,第二行是 。 10.【程序】

#include main()

{ struct st{ int x,y;

}st1[5]={10,11,20,21,30,31,40,41,50,51},st2[5]; FILE *fp;int i ;

fp=fopen(\

fwrite(st1,sizeof(struct st),5,fp); rewind(fp); for(i=0;i<3;i++)

{fread(&st2[i],sizeof(struct st),1,fp);

fseek(fp, sizeof(struct st),SEEK_CUR); /*本函数使用说明见试卷尾部注释*/ }

fseek(fp,-4L*sizeof(struct st),SEEK_END); for(i=3;i<5;i++)

{fread(&st2[i], sizeof(struct st),1,fp); fseek(fp, sizeof(struct st),SEEK_CUR);

第三部分 江苏省二级统考近五年试题汇编

}

for(i=0;i<5;i+=2)

printf(\ fclose(fp); }

以上程序输出结果的第一行是 ,第二行是 , 第三行是_____。

(1)rewind(文件类型指针):将文件的读写指针移动到文件的首部。 (2)fseek(文件类型指针,偏移量,起始位置):将文件的读写指针移动到文件的指定位置。

起始位置:分别用如下三个符号常量表示三种选择:SEEK_SET文件首,SEEK_END文件尾,SEEK_CUR文件当前位置。

偏移量:指针移动的目的地位置相对于起始位置的字节数,要求为长整型,数值为正数时表示从起始位置向后(文件尾)移动,反之向前(文件首)移动。

(3)fread(buffer,size,count,fp)/ fwrite(buffer,size,count,fp):fread函数用来依次读入一组数据,fwrite函数用来一次向文件中写一组数据,其中buffer指明起始地址,size表示要读写的字节数,count为要进行读写多少个size字节的数据项,fp为文件指针。

11.以下程序打印所有符合下列条件的3位正整数:是某一个数的平方数,其中有两位数字相同。如:100、121等。 main()

{int a,b,c,n,k; for(k=10; ;k++) {n= (1) ;

if(n>999) (2) ; a=n/100; b= (3) ; c=n;

if(!((a-b)*(b-c)*(c-a)))printf(\ } }

12.以下程序实现将a数组中后8个元素从大到小排序的功能。 void sort(int *x,int n); main()

{int a[12]={5,3,7,4,2,9,8,32,54,21,6,43},k; sort( (1) ,8);

for(k=0;k<12;k++)printf(\}

void sort(int *x,int n) { int j,t;

if(n= =1)return; for(j=1;j

{t=x[0];x[0]=x[j];x[j]=t;} sort(x+1, (3) );