全国计算机等级考试 二级《C语言程序设计》考试笔试试卷.pdf
2002 年 4 月全国计算机等级考试二级 C 笔试试卷一、一、选择题(选择题(1 1)- -(4040)题每小题)题每小题 1 1 分,分, (4141)- -(5050)题每小题)题每小题 2 2 分,共和分,共和 6060 分)分)二、二、下列各题下列各题 A A) 、B B) 、C C) 、D D)四个选项中,只有一个选项是正确的,请将正确选)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。项涂写在答题卡相应位置上,答在试卷上不得分。三、三、(16)若有定义:inta=8,b=5,C;,执行语句 C=a/b+0.4;后,c 的值为四、四、A)1.4B)1C)2.0D)2五、五、(17)若变量 a 是 int 类型,并执行了语句:a=A+1.6;,则正确的叙述是六、六、A)a 的值是字符 CB)a 的值是浮点型七、七、C)不允许字符型和浮点型相加 D)a 的值是字符A的 ASCII 值加上 1。八、八、(18)以下程序段的输出结果是九、九、inta=1234;十、十、printf(%2dn,a);十一、十一、 A)12B)34C)1234D)提示出错、无结果十二、十二、 (19)以下选项中不属于 C 语言的类型的是十三、十三、 A)signedshortimtB)unsignedlongint十四、十四、 C)unsignedintD)longshort十五、十五、 (20)若有说明语句:inta,b,c,*d=&c;,则能正确从键盘读入三个整数分别赋给变量 a、b、c 的语句是十六、十六、 A)scanf(%d%d%d,&a,&b,d);B)scanf(%d%d%d,&a,&b,&d);十七、十七、 C)scanf(%d%d%d,a,b,d);D)scanf(%d%d%d,a,b,*d);十八、十八、 (21)在 16 位 C 编译系统上,若定义 longa;,则能给 a 赋 40000 的正确语句是十九、十九、 A)a=20000+20000;B)a=4000*10;二十、二十、 C)a=30000+10000;D)a=4000L*10L;二十一、二十一、(22)以下叙述正确的是二十二、二十二、A)可以把 define 和 if 定义为用户标识符二十三、二十三、B)可以把 define 定义为用户标识符,但不能把 if 定义为用户标识符二十四、二十四、C)可以把 if 定义为用户标识符,但不能把 define 定义为用户标识符二十五、二十五、D)define 和 if 都不能定义为用户标识符二十六、二十六、(23)若定义:inta=511,*b=&a;,则 printf(%dn,*b);的输出结果为二十七、二十七、A)无确定值 B)a 的地址 C)512D)511二十八、二十八、(24)以下程序的输出结果是二十九、二十九、main()三十、三十、 inta=5,b=4,c=6,d;三十一、三十一、printf(%dn,d=ab?(ac?a:c):(b);三十二、三十二、三十三、三十三、A)5B)4C)6D)不确定三十四、三十四、(25)以下程序中,while 循环的循环次数是三十五、三十五、main()三十六、三十六、inti=0;三十七、三十七、while(i10)三十八、三十八、if(i1)continue;三十九、三十九、if(I=5)break;四十、四十、 i+;四十一、四十一、四十二、四十二、.四十三、四十三、四十四、四十四、A)1B)10四十五、四十五、C)6D)死循环,不能确定次数四十六、四十六、(26)以下程序的输出结果是四十七、四十七、main()四十八、四十八、inta=0,i;四十九、四十九、for(i=;i5;i+)五十、五十、 switch(i)五十一、五十一、case0:五十二、五十二、case3:a+=2;五十三、五十三、case1:五十四、五十四、case2:a+=3;五十五、五十五、default:a+=5;五十六、五十六、五十七、五十七、五十八、五十八、printf(%dn,a);五十九、五十九、六十、六十、 A)31B)13C)10D)20六十一、六十一、(27)以下程序的输出结果是六十二、六十二、main()六十三、六十三、inta=4,b=5,c=0,d;六十四、六十四、d=!a&!b|!c;六十五、六十五、printf(%dn,d);六十六、六十六、六十七、六十七、A)1B)0C)非 0 的数 D)-1六十八、六十八、(28)以下程序的输出结果是六十九、六十九、#include七十、七十、 main()七十一、七十一、inti=0,a=0;七十二、七十二、while(i=A&ch=Z)ch=ch-A+a;八十六、八十六、returnch;八十七、八十七、八十八、八十八、main()八十九、八十九、chars=ABC+abc=defDEF,*p=s;九十、九十、 while(*p)九十一、九十一、*p=cchar(*p);九十二、九十二、p+;九十三、九十三、九十四、九十四、printf(%sn,s);九十五、九十五、九十六、九十六、A)abc+ABC=DEFdefB)abc+abc=defdef九十七、九十七、C)abcaABCDEFdefD)abcabcdefdef九十八、九十八、(30)以下程序的输出结果是九十九、九十九、intf()百、百、staticinti=0;百一、百一、 ints=1;百二、百二、 s+=i;i+;百三、百三、 returns;百四、百四、 百五、百五、 main()百六、百六、 inti,a=0;百七、百七、 for(i=0;i5;i+)a+=f();百八、百八、 printf(%dn,a);百九、百九、 百十、百十、 A)20B)24C)25D)15百十一、百十一、(31)以下程序段的输出结果是百十二、百十二、chars=141141abct;百十三、百十三、printf(%dn,strlen(s);百十四、百十四、A)9B)12C)13D)14百十五、百十五、(32)若有以下程序百十六、百十六、#include百十七、百十七、voidf(intn);百十八、百十八、main()百十九、百十九、voidf(intn);百二十、百二十、f(5);百二十一、百二十一、 百二十二、百二十二、 voidf(intn)百二十三、百二十三、 printf(%dn,n);百二十四、百二十四、 则以下叙述中不正确的是百二十五、百二十五、 A)若只在主函数中对函数 f 进行说明,则只能在主函数中正确调用函数 f百二十六、百二十六、 B)若在主函数前对函数 f 进行说明,则在主函数和其后的其它函数中都可以正确调用函数 f百二十七、百二十七、 C)对于以上程序,编译时系统会提示出错信息:提示对对 f 函数重复说明百二十八、百二十八、 D)函数 f 无返回值,所以可用 void 将其类型定义为无值型百二十九、百二十九、 (33)以下程序调用 findmax 函数返回数组中的最大值百三十、百三十、findmax(int*a,intn)百三十一、百三十一、 int*p,*s;百三十二、百三十二、 for(p=a,s=a;p-asB)*p*sC)apasD)p-ap-s百四十二、百四十二、 (34)以下程序的输出结果是百四十三、百四十三、 main()百四十四、百四十四、 charcf35=AAAA,BBB,CC;百四十五、百四十五、 printf(%sn,ch1);百四十六、百四十六、 百四十七、百四十七、 A)AAAAB)BBBC)BBBCCD)CC百四十八、百四十八、 (35)在 C 语言中,形参的缺省存储类是百四十九、百四十九、 A)autoB)registerC)staticD)extern百五十、百五十、(36)若指针 p 已正确定义,要使 p 指向两个连续的整型动态存储单元,不正确的语句是百五十一、百五十一、 A)p=2*(int*)malloc(sizeof(int);百五十二、百五十二、 B)p=(int*)malloc(2*sizeof(int);百五十三、百五十三、 C)p=(int*)malloc(2*2);百五十四、百五十四、 D)p=(int*)calloc(2,sizeof(int);百五十五、百五十五、 (37)以下程序的输出结果是百五十六、百五十六、 main()百五十七、百五十七、 charx=040;百五十八、百五十八、 printf(%0n,x1);百五十九、百五十九、 百六十、百六十、A)100B)80C)64D)32百六十一、百六十一、 (38)若要打开 A 盘上 user 子目录下名为 abc.txt 的文本文件进行读、写操作,下面符合此要求的函数调用是百六十二、百六十二、 A)fopen(A:userabc.txt,r)B)fopen(A:userabc.txt,r+)百六十三、百六十三、 C)fopen(A:userabc.txt,rb)C)fopen(A:userabc.txt,w)百六十四、百六十四、 (39)以下不能正确进行字符串赋初值的语句是百六十五、百六十五、 A)charstr5=good!;B)charstr=good!;百六十六、百六十六、 C)char*str=good!;D)charstr5=g,o,o,d;百六十七、百六十七、 (40)若有下面的说明和定义:百六十八、百六十八、 structtest百六十九、百六十九、 intml;charm2;floatm3;百七十、百七十、unionuucharul5;intu22;ua;百七十一、百七十一、 myaa;百七十二、百七十二、 则 sizeof(structtest)的值是百七十三、百七十三、 A)12B)16C)14D)9百七十四、百七十四、 (41)若有定义:intaa8;。则以下表达式中不能代表数组元 aa1的地址的是百七十五、百七十五、 A)&aa0+1B)&aa1C)&aa0+D)aa+1百七十六、百七十六、 (42)以下程序的输出结果是百七十七、百七十七、 f(intb,intm,intn)百七十八、百七十八、 inti,s=0;百七十九、百七十九、 for(i=m;in;i=i+2)s=s+bi;百八十、百八十、returns;百八十一、百八十一、 百八十二、百八十二、 main()百八十三、百八十三、 intx,a=1,2,3,4,5,6,7,8,9;百八十四、百八十四、 x=f(a,3,7);百八十五、百八十五、 printf(%dn,x);百八十六、百八十六、 百八十七、百八十七、 A)10B)18C)8D)15百八十八、百八十八、 (43)若有以下定义和语句:百八十九、百八十九、 ints45,(*ps)5;百九十、百九十、ps=s;百九十一、百九十一、 则对 s 数组元素的正确引用形式是百九十二、百九十二、 A)ps+1B)*(ps+3)C)ps02D)*(ps+1)+3百九十三、百九十三、 (44)以下程序的输出结果是百九十四、百九十四、 main()百九十五、百九十五、 intb33=0,1,2,0,1,2,0,1,2,i,j,t=1;百九十六、百九十六、 for(i=0;i3;i+)百九十七、百九十七、 for(j=i;j=i;j+)t=t+bibjj;百九十八、百九十八、 printf(%dn,t);百九十九、百九十九、 二百、二百、 A)3B)4C)1D)9二百一、二百一、(45)以下程序的输出结果是二百二、二百二、#include二百三、二百三、#include二百四、二百四、main()二百五、二百五、charb18=abcdefg,b28,*pb=b1+3;二百六、二百六、while(-pb=b1)strcpy(b2,pb);二百七、二百七、printf(%dn,strlen(b2);二百八、二百八、二百九、二百九、A)8B)3C)1D)7二百十、二百十、(46)在说明语句:int*f();中,标识符 f 代表的是二百十一、二百十一、 A)一个用于指向整型数据的指针变量二百十二、二百十二、 B)一个用于指向一维数组的行指针二百十三、二百十三、 C)一个用于指向函数的指针变量二百十四、二百十四、 D)一个返回值为指针型的函数名二百十五、二百十五、 (47)不合法的 main 函数命令行参数表示形式是二百十六、二百十六、 A)main(inta,char*c)B)main(intarc,char*arv)二百十七、二百十七、 C)main(intargc,char*argv)D)main(intargv,char*argc)二百十八、二百十八、 (48)以下程序的输出的结果是二百十九、二百十九、 intx=3;二百二十、二百二十、 main()二百二十一、二百二十一、inti;二百二十二、二百二十二、for(i=1;inext=&c;q-next=p-next;D)(*p).next=q;(*q).next=&b;二百五十一、二百五十一、(50)设有以下说明语句二百五十二、二百五十二、typedefstruct二百五十三、二百五十三、intn;二百五十四、二百五十四、charch8;二百五十五、二百五十五、PER;二百五十六、二百五十六、则下面叙述中正确的是二百五十七、二百五十七、A)PER 是结构体变量名 B)PER 是结构体类型名二百五十八、二百五十八、C)typedefstruct 是结构体类型 D)struct 是结构体类型名二百五十九、二百五十九、二、填空题二、填空题( (每空每空 2 2 分,共分,共 4040 分分) )二百六十、二百六十、 请将每一个空的正确答案写在答案卡上,答在试卷上不得分。请将每一个空的正确答案写在答案卡上,答在试卷上不得分。二百六十一、二百六十一、(6)若从键盘输入 58,则以下程序输出的结果是【6】 。二百六十二、二百六十二、main()二百六十三、二百六十三、inta;二百六十四、二百六十四、scanf(%d,&a);二百六十五、二百六十五、if(a50)printf(%d,a);二百六十六、二百六十六、if(a40)printf(%d,a);二百六十七、二百六十七、if(a30)printf(%d,a);二百六十八、二百六十八、二百六十九、二百六十九、(7)以下程序的输出结果是【7】 。二百七十、二百七十、 main()二百七十一、二百七十一、inta=177;二百七十二、二百七十二、printf(%on,a);二百七十三、二百七十三、二百七十四、二百七十四、(8)以下程序的输出结果是【8】 。二百七十五、二百七十五、main()二百七十六、二百七十六、inta=0二百七十七、二百七十七、a+=(a=8);二百七十八、二百七十八、printf(%dn,a);二百七十九、二百七十九、二百八十、二百八十、 (9)以下程序输出的结果是【9】 。二百八十一、二百八十一、main()二百八十二、二百八十二、inta=5,b=4,c=3,d;二百八十三、二百八十三、d=(abc);二百八十四、二百八十四、printf(%dn,d);二百八十五、二百八十五、二百八十六、二百八十六、(10)以下定义的结构体类型拟包含两个成员,其中成员变量 info 用来存入整形数据;成员变量 link 是指向自身结构体的指针.请将定义补充完整。二百八十七、二百八十七、structnode二百八十八、二百八十八、intinfo;二百八十九、二百八十九、【10】link;二百九十、二百九十、 二百九十一、二百九十一、(11)以下程序的输出结果是【11】 。二百九十二、二百九十二、main()二百九十三、二百九十三、ints,i;二百九十四、二百九十四、for(s=0,i=1;i3;i+,s+=i);二百九十五、二百九十五、printf(%dn,s);二百九十六、二百九十六、二百九十七、二百九十七、(12)以下程序的输出结果是【12】 。二百九十八、二百九十八、main()二百九十九、二百九十九、char*p=abcdefgh,*r;三百、三百、 long*q;三百一、三百一、q=(long*)p;三百二、三百二、q+;三百三、三百三、r=(char*)q;三百四、三百四、printf(%sn,r);三百五、三百五、三百六、三百六、(13)以下程序的输出结果是【13】 。三百七、三百七、main()三百八、三百八、chars=abcdef;三百九、三百九、s3=0;三百十、三百十、printf(%sn,s);三百十一、三百十一、 三百十二、三百十二、 (14)以下程序的输出结果是【14】 。三百十三、三百十三、 main()三百十四、三百十四、 intx=0;三百十五、三百十五、 sub(&x,8,1);三百十六、三百十六、 printf(%dn,x);三百十七、三百十七、 三百十八、三百十八、 sub(int*a,intn,intk)三百十九、三百十九、 if(k=n)sub(a,n/2,2*k);三百二十、三百二十、 *a+=k;三百二十一、三百二十一、三百二十二、三百二十二、(15)设有如下宏定义三百二十三、三百二十三、#defineMYSWAP(z,x,y)z=x;x=y;y=z;三百二十四、三百二十四、以下程序段通过宏调用实现变量 a、b 内容交换,请填空。三百二十五、三百二十五、floata=5,b=16,c;三百二十六、三百二十六、MYSWAP(【15】,a,b);三百二十七、三百二十七、(16)以下程序用来统计文件中字符个数。请填空。三百二十八、三百二十八、#includestdio.h三百二十九、三百二十九、main()三百三十、三百三十、 FILE*fp;longnum=0L;三百三十一、三百三十一、if(fp=fopen(fname.dat,r)=NULL)三百三十二、三百三十二、pirntf(Openerrorn);exit(0);三百三十三、三百三十三、while(【16】)三百三十四、三百三十四、fgetc(fp);num+;三百三十五、三百三十五、printf(num=%1dn,num-1);三百三十六、三百三十六、fclose(fp);三百三十七、三百三十七、三百三十八、三百三十八、(17)以下程序中,select 函数的功能是:在 N 行 M 列的二维数组中,选出一个最大值作为函数值返回,并通过形参传回此最大值所在的行下标。请填空。三百三十九、三百三十九、#defineN3三百四十、三百四十、 #defineM3三百四十一、三百四十一、select(intaNM,int*n)三百四十二、三百四十二、inti,j,row=1,colum=1;三百四十三、三百四十三、for(i=0;iN;i+)三百四十四、三百四十四、for(j=0;jarowcolum)row=i;colum=j;三百四十六、三百四十六、*n=【17】;三百四十七、三百四十七、return【18】;三百四十八、三百四十八、三百四十九、三百四十九、main()三百五十、三百五十、 intaNM=9,11,23,6,1,15,9,17,20,max,n;三百五十一、三百五十一、max=select(a,&n);三百五十二、三百五十二、printf(max=%d,line=%dn,max,n);三百五十三、三百五十三、三百五十四、三百五十四、(18)mystrlen 函数的功能是计算 str 所指字符串的长度,并作为函数值返回。请填空。三百五十五、三百五十五、intmystrlen(char*str)三百五十六、三百五十六、inti;三百五十七、三百五十七、for(i=0;【19】!=0;i+);三百五十八、三百五十八、return(【20】);20022002 年年 4 4 月全国计算机等级考试二级月全国计算机等级考试二级 C C 笔试答案笔试答案一、选择题(一、选择题(-(40)-(40)题每题题每题 1 1 分,分,(41)-(50)(41)-(50)题每题题每题 2 2 分,其分,其 6060 分)分)(1)D(2)B(3)A(4)A(5)B(6)C(7)B(8)B(9)C(10)C(11)D(12)D(13)C(14)A(15)B(16)B(17)D(18)C(19)D(20)A(21)D(22)B(23)D(24)C(25)D(26)A(27)A(28)B(29)B(30)D(31)A(32)C(33)B(34)B(35)A(36)A(37)A(38)B(39)A(40)A(41)C(42)A(43)C(44)B(45)D(46)D(47)C(48)C(49)C(50)B二、填空题答案(每空二、填空题答案(每空 2 2 分,共分,共 4040 分)分)(1)【1】ABCOUT.TXT 或者 ABC.EXEOUT.TXT(2)【2】广域网(3)【3】PATHC:UCDOS 或其它等效命令(4)【4】DIR*.DAT 或 DIR*.DAT/P 或 DIR*.DAT/W 或带其它参数也可(5)【5】剪贴板(6)【6】585858(7)【7】261(8)【8】16(9)【9】0(10)【10】structnode*(11)【11】5(12)【12】efgh(13)【13】abc(14)【14】7(15)【15】c(16)【16】!feof(fp)(17)【17】row(18)【18】arowcolum(19)【19】*(str+i)stri(20)【20】i