2002年9月全国计算机等级考试二级C语言试卷(含参考答案) 下载本文

A)9,9 B)8,9 C)1,8 D)9,8

(34) 以下程序中函数reverse的功能是将a所指数组中的内容进行逆置。 void reverse(int a[ ],int n) { int i,t; for(i=0;i

{ t=a[i]; a[i]=a[n-1-i];a[n-1-i]=t;} }

main()

{ int b[10]={1,2,3,4,5,6,7,8,9,10}; int i,s=0;  reverse(b,8);

 for(i=6;i<10;i++) s+=b[i];  printf(“%d\\n”,s); }

程序运行后的输出结果是 A) 22 B) 10 C) 34 D) 30 (35) 有以下程序 main()

{ int aa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}}; int i,s=0

for(i=0;i<4;i++) s+=aa[i][1]; printf(“%d\\n”,s); }

程序运行后的输出结果是 A) 11 B) 19 C) 13 D) 20 (36) 有以下程序 #include main()

{ char *p=“abcde\\Ofghjik\\0”; printf(“%d\\n”,strlen(p)); }

程序运行后的输出结果是 A) 12 B) 15 C) 6 D) 5

(37) 程序中头文件typel.h 的内容是: #define N 5 #define M1 N*3 程序如下:

#define “type1.h” #define M2 N*2 main() { int i;

i=M1+M2; printf(“%d\\n”,i); }

程序编译后运行的输出结果是: A) 10 B) 20 C) 25 D) 30

(38) 有以下程序 #include main()

{ FILE *fp; int i=20,j=30,k,n; fp=fopen(“d1.dat”“w”);

fprintf(fp,“%d\\n”,i);fprintf(fp,“%d\\n”j); fclose(fp);

fp=fopen(“d1.dat”, “r”); fp=fscanf(fp,“%d%d”,&k,&n); printf(“%d%d\\n”,k,n); fclose(fp); }

程序运行后的输出结果是

A) 20 30 B) 20 50 C) 30 50 D) 30 20 (39) 以下叙述中错误的是

A) 二进制文件打开后可以先读文件的末尾,而顺序文件不可以 B) 在程序结束时,应当用fclose函数关闭已打开的文件

C) 在利用fread函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据

D) 不可以用FILE定义指向二进制文件的文件指针 (40) 有以下程序 #include

main(int argc,char *argv[]) { int i,len=0;

for(i=1;iprintf(“%d\\n”,len); }

程序编译连接后生成的可执行文件是ex1.exe,若运行时输入带参数的命令行是: ex1 abcd efg 10<回车> 则运行的结果是:

A) 22 B) 17 C) 12 D) 9 (41) 有以下程序 int fa(int x) { return x*x; } int fb(int x) { return x*x*x; }

int f(int (*f1)(),int (*f2)(),int x) { return f2(x)-f1(x); } main() { int i;

i=f(fa,fb,2); printf(“%d\\n”,i); }

程序运行后的输出结果是 A) -4 B) 1 C) 4 D) 8 (42) 有以下程序 int a=3;

main() { int s=0;

{ int a=5; s+=a++; }

s+=a++;printf(“%d\\n”,s); }

程序运行后的输出结果是 A) 8 B) 10 C) 7 D) 11 (43) 有以下程序

void ss(char *s,char t) { while(*s)

{ if(*s==t) *s=t-?a?+?A?;  s++; } }

main()

{ char str1[100]=“abcddfefdbd”,c=?d?; ss(str1,c); printf(“%s\\n”,str1); }

程序运行后的输出结果是

A) ABCDDEFEDBD B) abcDDfefDbD C) abcAAfefAbA D) Abcddfefdbd (44) 有以下程序 struct STU

{ char num[10]; float score[3]; }; main()

{ struct stu s[3]={{“20021”,90,95,85}, {“20022”,95,80,75},

{“20023”,100,95,90}},*p=s; int i; float sum=0; for(i=0;i<3,i++)

sum=sum+p->score[i]; printf(“%6.2f\\n”,sum); }

程序运行后的输出结果是

A) 260.00 B) 270.00 C) 280.00 D) 285.00 (45) 设有如下定义: struck sk { int a; float b; }data; int *p;

若要使P指向data中的a域,正确的赋值语句是 A) p=&a; B) p=data.a; C) p=&data.a; D) *p=data.a; (46) 有以下程序

#include struct NODE

{ int num; struct NODE *next; }; main()

{ struct NODE *p,*Q,*R;

p=(struct NODE*)malloc(sizeof(struct NODE)); q=(struct NODE*)malloc(sizeof(struct NODE)); r=(struct NODE*)malloc(sizeof(struct NODE)); p->num=10; q->num=20; r->num=30; p->next=q;q->next=r;

printf(“%d\\n”,p->num+q->next->num); }

程序运行后的输出结果是 A) 10 B) 20 C) 30 D) 40 (47) 若有以下说明和定义 typedef int *INTEGER; INTEGER p,*q; 以下叙述正确的是

A) P是int型变量 B) p是基类型为int的指针变量

C) q是基类型为int的指针变量 D) 程序中可用INTEGER代替int类型名 (48) 有以下程序 main()

{ unsigned char a,b,c; a=0x3; b=a|0x8; c=b<<1; printf(“%d%d\\n”,b,c); }

程序运行后的输出结果是

A) –11 12 B) –6 –13 C) 12 24 D) 11 22 (49) 有以下程序 #include main()

{ char *p,*q;

p=(char*)malloc(sizeof(char)*20); q=p;

scanf(“%s%s”,p,q); printf(“%s%s\\n”,p,q); }

若从键盘输入:abc def<回车>,则输出结果是: A) def def B) abc def C) abc d D) d d

(50) 以下程序中函数f的功能是将n个字符串按由大到小的顺序进行排序。 #include

void f(char p[][10],int n) { char t[20]; int i,j; for(i=0;i