2002年4月全国计算机二级C语言考试真题及答案.doc
2002年4月全国计算机二级C语言考试真题及答案一、选择题(1)(40)题每小题1分,(41)(50)题每小题2分,共和60分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。(1) 在计算机中,一个字长的二进制位数是A8B16C32D随CPU的型号而定(2) 计算机网络的突出优点是A速度快B资源共享C精度高D容量大(3) 计算机网络能传送的信息是:A所有的多媒体信息B只有文本信息C除声音外的所有信息D文本和图像信息(4) 切断计算机电源后,下列存储器中的信息会丢失的是:ARAMBROMC软盘D硬盘(5) 十进制数127转换成二进制数是A11111111B01111111C10000000D11111110(6) 要想打印存放在当前盘当前目录上所有扩展名为.TXT 的文件内容, 应该使用的DOS命令为ADIR *.TXT>PRNBTYPE *.TXT>PRNCCOPY *.TXT PRNDCOPY *.TXT>PRN(7) 将当前盘当前目录及其子目录中的全部文件 (总量不足1.2MB复制到一张空的A盘的根目录下,应该使用的DOS命令为AXCOPY *.*A: /MBXCOPY *.*A: /SCXCOPY *.*A: /PDXCOPY *.*A: /A(8) 在C盘根目录下执行PROMPT $p$g命令之后,DOS的提示符变为AC:>BC:>CC>DC:(9) DOS命令 "COPY CON DISP"中的CON代表A子目录B磁盘文件C键盘D显示器(10) 结构化程序设计所规定的三种基本控制结构是A输入、处理、输出B树形、网形、环形C顺序、选择、循环D主程序、子程序、函数(11) 要把高级语言编写的源程序转换为目标程序,需要使用A编辑程序B驱动程序C诊断程序D编译程序(12) 英文小写字母d的ASCII码为100,英文大写字母D的ASCII码为A50B66C52D68(13) Windows环境下,PrintScreen键的作用是A复制当前窗口到剪贴板B打印当前窗口的内容C复制屏幕到剪贴板D打印屏幕内容(14) 在Windows环境下,为了终止应用程序的运行,应A关闭该应用程序窗口B小化该应用程序窗口C双击该应用程序窗口的标题栏D将该应用程序窗口移出屏幕(15) 下列各带有通配符的文件名中,能代表文件XYZ.TXT的是A*Z.?BX*.*C?Z,TXTD?.?(16) 若有定义:int a=8,b=5,C;,执行语句C=a/b+0.4;后,c的值为A1.4B1C2.0D2(17) 若变量a是int类型,并执行了语句:a=A'+1.6;,则正确的叙述是Aa的值是字符CBa的值是浮点型C不允许字符型和浮点型相加Da的值是字符A的ASCII值加上1。(18) 以下程序段的输出结果是int a=1234;printf("-n",a);A12B34C1234D提示出错、无结果(19) 以下选项中不属于C语言的类型的是Asigned short imtBunsigned long intCunsigned intDlong short(20) 若有说明语句:int a,b,c,*d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是Ascanf("%d%d%d",&a,&b,&d;Bscanf("%d%d%d",&a,&b,&d;Cscanf("%d%d%d",a,b,d;Dscanf("%d%d%d",a,b,*d;(21) 在16位C编译系统上,若定义long a; ,则能给a赋40000的正确语句是Aa=20000+20000;Ba=4000*10;Ca=30000+10000;Da=4000L*10L;(22) 以下叙述正确的是A可以把define和if定义为用户标识符B可以把define定义为用户标识符,但不能把if定义为用户标识符C可以把if定义为用户标识符,但不能把define定义为用户标识符Ddefine和if都不能定义为用户标识符(23) 若定义:int a=511,*b=&a;, 则printf("%dn",*b);的输出结果为A无确定值Ba的地址C512D511(24) 以下程序的输出结果是main() int a=5,b=4,c=6,d;printf("%dn",d=a>b?(a>c?a:c):(b);A5B4C6D不确定(25) 以下程序中,while循环的循环次数是main() int i=0;while(i<10) if(i<1) continue;if(I=5) break; i+;.A1B10C6D死循环,不能确定次数(26) 以下程序的输出结果是main() int a=0,i;for(i=;i<5;i+) switch(i) case 0:case 3:a+=2;case 1:case 2:a+=3;default:a+=5;printf("%dn",a);A31B13C10D20(27) 以下程序的输出结果是main() int a=4,b=5,c=0,d;d=!a&&!b|!c;printf("%dn",d);A1B0C非0的数D-1(28) 以下程序的输出结果是#includemain() int i=0,a=0;while(i<20) for(;) if(i)=0) break;else i-;i+=11; a+=i;printh("%dn",a);A21B32C33D11(29) 以下程序的输出结果是char cchar(char ch)if(ch>=A&&ch<=Z') ch=ch-A'+a'return ch;main() char s="ABC+abc=defDEF",*p=s;while(*p) *p=cchar(*p);p+;printf("%sn",s);Aabc+ABC=DEFdefBabc+abc=defdefCabcaABCDEFdefDabcabcdefdef(30) 以下程序的输出结果是int f() static int i=0;int s=1;s+=i; i+;return s; main() int i,a=0;for(i=0;i<5;i+) a+=f();printf("%dn",a);A20B24C25D15(31) 以下程序段的输出结果是char s="141141abct"printf ("%dn",strlen(s);A9B12C13D14(32) 若有以下程序#includevoid f(int n);main() void f(int n); f(5);void f(int n) printf("%dn",n); 则以下叙述中不正确的是A若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数fB若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数fC对于以上程序,编译时系统会提示出错信息:提示对对f函数重复说明D函数f无返回值,所以可用void将其类型定义为无值型(33) 以下程序调用findmax函数返回数组中的值findmax(int *a,int n) int *p,*s;for(p=a,s=a; p-aif ( ) s=p;return(*s);main() int x5=12,21,13,6,18;printf("%dn",findmax(x,5);在下划线处应填入的是Ap>sB*p>*sCap>asDp-a>p-s(34) 以下程序的输出结果是main() char cf35="AAAA","BBB","CC"printf(""%s"n",ch1);A"AAAA"B"BBB"C"BBBCC"D"CC"(35) 在C语言中,形参的缺省存储类是AautoBregisterCstaticDextern(36) 若指针p已正确定义,要使p指向两个连续的整型报考存储单元,不正确的语句是Ap=2*(int*)malloc(sizeof(int);Bp=(int*)malloc(2*sizeof(int);Cp=(int*)malloc(2*2);D p=(int*)calloc(2,sizeof(int);(37) 以下程序的输出结果是main() char x=040; printf("%0n",x<<1);A100B80C64D32(38) 若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是Afopen("A:userabc.txt","r") Bfopen("A:userabc.txt","r+")Cfopen("A:userabc.txt","rb")Dfopen("A:userabc.txt","w")(39) 以下不能正确进行字符串赋初值的语句是Achar str5="good!"Bchar str="good!"Cchar *str="good!"Dchar str5=g',o',o',d'(40) 若有下面的说明和定义:struct test int ml; char m2; float m3;union uu char ul5; int u22; ua; myaa;则sizeof(struct test )的值是A12B16C14D9(41) 若有定义:int aa 8;。则以下表达式中不能代表数组元aa1的地址的是A&aa0+1B&aa1C&aa0+Daa+1(42) 以下程序的输出结果是f(int b,int m,int n) int i,s=0;for(i=m;ireturn s;main()int x,a=1,2,3,4,5,6,7,8,9;x=f(a,3,7);printf("%dn",x);A10B18C8D15(43) 若有以下定义和语句:int s45,(*ps)5;ps=s;则对s数组元素的正确引用形式是Aps+1B*(ps+3)Cps02D*(ps+1)+3(44) 以下程序的输出结果是main() int b33=0,1,2,0,1,2,0,1,2,i,j,t=1; for(i=0;i<3;i+) for(j=i;j<=i;j+) t=t+bibjj;printf("%dn",t);A3B4C1D9(45) 以下程序的输出结果是#include#includemain() char b18="abcdefg",b28,*pb=b1+3;while (-pb>=b1) strcpy(b2,pb);printf("%dn",strlen(b2);A8B3C1D7(46) 在说明语句:int *f();中,标识符f代表的是A一个用于指向整型数据的指针变量B一个用于指向一维数组的行指针C一个用于指向函数的指针变量D一个返回值为指针型的函数名(47) 不合法的main函数命令行参数表示形式是A) main(int a,char *c) B) main(int arc,char *arv)C) main(int argc,char *argv) D) main(int argv,char *argc)(48) 以下程序的输出的结果是int x=3;main() int i;for (i=1;incre() staic int x=1;x*=x+1;printf(" %d",x);A3 3B2 2C2 6D2 5(49) 若以下定义:struct link int data;struck link *next;a,b,c,*p,*q;且变量a和b之间已有如下图所示的链表结构:a bdata next data next 5 9 0 pcdata next 7 q指针p指向变量a,q指向变量c。则能够把c插入到a和b 之间并形成新的链表的语句组是:Aa.next=c; c.next=b;Bp.next=q; q.next=p.next;Cp->next=&c; q->next=p->next;D(*p).next=q; (*q).next=&b;(50) 设有以下说明语句typedef struct int n;char ch8;PER;则下面叙述中正确的是APER 是结构体变量名BPER是结构体类型名Ctypedef struct 是结构体类型Dstruct 是结构体类型名二、填空题(每空2分,共40分)请将每一个空的正确答案写在答案卡上,答在试卷上不得分。(1) 为了要将当前盘目录中的可执行程序ABC.EXE的输出结果存放到当前盘当前目录中的文件OUT.TXT中,则应使用的DOS命令为【1】 。(2) 计算机网络分为广域网和局域网,因特网属于【2】 。(3) 要想在当前目录下方便地执行C盘UCDOS目录中的程序,就应该先执行预设搜索路径的命令,该DOS命令为【3】 。(4) 要查看当前目录中扩展名为.DAT的所有文件目录,应该使用的DOS 命令为【4】 。(5) 在Windows环境下,当进行复制操作时,其复制的内容将存放在【5】中(6) 若从键盘输入58,则以下程序输出的结果是 【6】 。main() int a;scanf("%d",&a);if(a>50) printf("%d",a);if(a>40) printf("%d",a);if(a>30) printf("%d",a);(7) 以下程序的输出结果是【7】 。main() int a=177;printf("%on",a);(8) 以下程序的输出结果是【8】 。 main() int a=0a+=(a=8);printf("%dn",a);(9) 以下程序输出的结果是【9】 。main() int a=5,b=4,c=3,d;d=(a>b>c);printf("%dn",d);(10) 以下定义的结构体类型拟包含两个成员,其中成员变量info用来存入整形数据;成员变量link是指向自身结构体的指针.请将定义补充完整。struct node int info; 【10】 link;(11) 以下程序的输出结果是【11】 。main() int s,i; for(s=0,i=1;i<3;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() char s="abcdef" s3=0' printf("%sn",s);(14) 以下程序的输出结果是【14】 。main() int x=0;sub(&x,8,1);printf("%dn",x);sub(int *a,int n,int k) if(k<=n) sub(a,n/2,2*k);*a+=k;(15) 设有如下宏定义#define MYSWAP(z,x,y) z=x; x=y; y=z;以下程序段通过宏调用实现变量a、b内容交换,请填空。float a=5,b=16,c;MYSWAP( 【15】 ,a,b);(16) 以下程序用来统计文件中字符个数。请填空。 #include "stdio.h" main() FILE *fp; long num=0L; if(fp=fopen("fname.dat","r")=NULL) pirntf("Open errorn"); exit(0); while( 【16】 ) fgetc(fp); num+; printf("num=n",num-1); fclose(fp); (17) 以下程序中,select 函数的功能是:在N行M列的二维数组中,选出一个值作为函数值返回,并通过形参传回此值所在的行下标。请填空。#define N 3#define M 3 select(int aNM,int *n) int i,j,row=1,colum=1;for(i=0;i<n;i+)for(j=0;j<m;j+)if(aij>arowcolum)row=i;colum=j;*n= 【17】;return 【18】; main() int aNM=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所指字符串的长度,并作为函数值返回。请填空。int mystrlen(char *str) int i;for(i=0; 【19】!=0'i+);return(【20】);基础部分和C语言程序设计试题</m;j+)</n;i+)参考答案一、选择题(-(40)题每题1分,(41)-(50)题每题2分,其60分)(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分,共40分)(1) 【1】 ABC >OUT.TXT 或者 ABC.EXE>OUT.TXT(2) 【2】 广域网(3) 【3】 PATH C: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】 struct node *(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】 i20