2000年9月全国计算机二级C语言考试真题及答案.doc
2000年9月全国计算机二级C语言考试真题及答案一、选择题(1)-(40)每小题1分, (41)-(50)每小题2分, 共60分下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项在答题卡相应位置上涂黑,答在试卷上不得分。(1) 下列电子邮件地址中正确的是(其中表示空格)AMalin&BmalinCLinMa&DLinMa(2) 下列说法中正确的是A为了使用Novell网提供的服务,必须采用FTP协议B为了使用Internet网提供的服务,必须采用TELNET协议C为了使用Novell网提供的服务,必须采用TCP/IP协议D为了使用Internet网提供的服务,必须采用TCP/IP协议(3) 下列说法中不正确的是A调制解调器(Modem)是局域网络设备B集线器(Hub)是局域网络设备C网卡(NIC)是局域网络设备D中继器(Repeater)是局域网络设备(4) 十进制数397的十六进制值为A18DB18EC277D361(5) 下列说法中不正确的是ACD-ROM是一种只读存储器但不是内存储器BCD-ROM驱动器是多媒体计算机的基本部分C只有存放在CD-ROM盘上的数据才称为多媒体信息DCD-ROM盘上多能够存储大约650兆字节的信息(6) Windows应用环境中鼠标的拖动操作不能完成的是A当窗口不是时,可以移动窗口的位置B当窗口时,可以将窗口缩小成图标C当窗口有滚动条时可以实现窗口内容的滚动D可以将一个文件移动(或复制)到另一个目录中去(7) 从Windows中启动MS-DOS方式进入了DOS状态,如果想回到Windos状态,在DOS提示符下,应键入的命令为AEXITBQUITCWINDDOS -U(8) 要在WINDOWS标准窗口的下拉菜单中选择命令,下列操作错误的是A用鼠标单击该命令选项B用键盘上的上下方向键将高亮度条移至该命令选项后再按回车键C同时按下ALT键与该命令选项后括号中带有下划线的字母键D直接按该命令选项后面括号中带有下划线的字母键(9) ASCLL码(含扩展)可以用一个字节表示,则可以表示的ASCLL码值个数为A1024B256C128D8O(10) 字长为32位的计算机是指A该计算机能够处理的数不超过232B该计算机中的CPU可以同时处理32位的二进制信息C该计算机的内存量为32MBD该计算机每秒钟所能执行的指令条数为32MIPS(11) 在DOS系统中,下列文件名中非法的是AABCDEFG1BABCDEFG1.234 C)ABCD_EFG D)ABCDEFG(12) DOS系统启动后,下列文件中驻留内存的是ACONFIG.SYSBCOMMAND.COMCAUTOEXEC.BATDMEM.EXE(13) DOS下的“DIR *2”命令将列出当前目录下的A所有名字末尾为字符2的非隐含文件和目录B所有名字末尾为字符2的非隐含文件C所有非隐含文件D所有非隐含文件和目录(14) 软驱的盘符为A,A盘上只有一个目录XYZ,而XYZ下有若干子目录和文件,若想把A盘的所有内容复制到C盘根目录下,应使用的命令为ACOPY A:*.* C:BCOPY A:*.* C:*.*CXCOPY A:*.* C: /SDDISKCOPY A: C:(15) 若要将当前盘目录下的文件A.TXT连接在文件B.TXT后面,应使用的命令为ACOPY A.TXT>>B.TXTBMOVE A.TXT>>B.TXTCPATH A.TXT>>B.TXTDTYPE A.TXT>>B.TXT(16) 若变量已正确定义并赋值,下面符合C语言语法的表达式是Aa:=b+1Ba=b=c+2Cint 18.5%3Da=a+7=c+b(17) C语言中运算对象必须是整型的运算符是A%=B/C=D=(18) 若已定义x和y为double类型,则表达式x=1,y=x+3/2 的值是A1B2C2.0D2.5(19) 若变量a、iI已正确定义,且i已正确赋值,合法的语句是Aa=1B+i;Ca=a+=5;Da=int(i);(20) 若有以下程序段,int c1=1,c2=2,c3;c3=1.0/c2*c1;则执行后,c3中的值是A0B0.5C1D2(21) 有如下程序main0 int y=3,x=3,z=1;printf(“%d %dn”,(+x,y+),z+2);运行该程序的输出结果是A3 4B4 2C4 3D3 3(22) 能正确表示逻辑关系:“a=10或a0”的C语言表达式是Aa>=10 or a<=0Ba>=0|a<=10Ca>=10 &&a<=0Da>=10a<=0(23) 有如下程序main0 int x=1,a=0,b=0;switch(x)case 0: b+;case 1: a+case 2: a+;b+printf(“a=%d,b=%dn”,a,B;该程序的输出结果是Aa=2,b=1Ba=1,b=1Ca=1,b=0Da=2,b=2(24) 有如下程序main0 float x=2.0,y;if(x<0.0) y=0.0;else if(x<10.0) y=1.0/x;else y=1.0;printf(“%fn”,y);该程序的输出结果是A0.000000B0.250000C0.500000D1.000000(25) 有如下程序main0 int a=2,b=-1,c=2;if(aif(b<0) c=0;else c+printf(“%dn”,C;该程序的输出结果是A0B1C2D3(26) 有如下程序main0 int i,sum;for(i=1;i<=3;sum+) sum+=i;printf(“%dn”,sum);该程序的执行结果是A6B3C死循环D0(27) 有如下程序main0 int x=23;do printf(“%d”,x-);while(!x);该程序的执行结果是A321B23C不输出任何内容D陷入死循环(28) 有如下程序main0 int n=9;while(n>6) n-;printf(“%d”,n);该程序段的输出结果是A987B876C8765D9876(29) 设有说明语句:char a=72;则变量aA包含1个字符B包含2个字符C包含3个字符D说明不合法(30) 有如下函数调用语句func(rec1,rec2+rec3,(rec4,rec5);该函数调用语句中,含有的实参个数是A3B4C5D有语法错(31) 有如下程序int runc(int a,intB return(a+B;main0 int x=2,y=5,z=8,r;r=func(func(x,y),z);printf(“%dn”,r);该程序的输出的结果是A12B13C14D15(32) 有如下程序段int *p,a=10,b=1p=&a; a=*p+b;执行该程序段后,a的值为A12B11C10D编译出错(33) 对于基类型相同的两个指针变量之间,不能进行的运算是A<B=C+D-(34) 以下函数返回a所指数组中小的值所在的下标值fun(int *a, int n) int i,j=0,p;p=j;for(i=j;iif(aireturn(p);在下划线处应填入的是Ai=pBap=aiCp=jDp=i(35) 有如下程序long fib(int n) if(n>2) return(fib(n-1)+fib(n-2);else return(2);main0 printf(“%dn”,fib(3);该程序的输出结果是A2B4C6D8(36) 在C语言中,函数的隐含存储类别是AautoBstaticCexternD无存储类别(37) 有如下程序#define N 2#define M N+1#define NUM 2*M+1#main() int i;for(i=1;i<=NUM;i+)printf(“%dn”,i);该程序中的for循环执行的次数是A5B6C7D8(38) 有以下函数char fun(char *p) return p; 该函数的返回值是A无确切的值B形参p中存放的地址值B一个临时存储单元的地址D形参p自身的地址值(39) 有如下程序段int a=14,b=15,x;char c=A;x=(a&&B&&(c<B);执行该程序段后,x的值为AtureBfalseC0D1(40) 若fp是指向某文件的指针,且已读到此文件末尾,则库函数feof(fp)的返回值是AEOFB0C非零值DNULL(41) 若有以下说明和定义fun(int *C main() int (*a)()=fun,*b(),w10,c;在必要的赋值之后,对fun函数的正确调用语句是Aa=a(w);B(*a)(&C;Cb=*b(w);Dfun (B;(42) 有如下说明int a10=1,2,3,4,5,6,7,8,9,10,*p=a;则数值为9的表达式是A*P+9B*(P+8)C*P+=9DP+8(43) 有如下程序main0 int n5=0,0,0,i,k=2;for(i=0;iprintf(“%dn”,nk);该程序的输出结果是A不确定的值B2C1D0(44) 若有以下的定义:int t32;能正确表示t数组元素地址的表达式是A&t32Bt3Ct1Dt2(45) 有如下程序main0 int a33=1,2,3,4,5,6,i,j,s=0;for(i=1;i<3;i+)for(j=0;jprintf(“%dn”,s);该程序的输出结果是A18B19C20D21(46) 有如下定义struct personchar name9; int age;strict person class10=“Johu”, 17,“Paul”, 19“Mary”, 18,“Adam 16,;根据上述定义,能输出字母M的语句是Aprinft(“%cn”,class3.mane);Bpfintf(“%cn”,class3.name1);Cprinft(“%cn”,class2.name1);Dprintf(“%cn”,class2.name0);(47) 以下对结构体类型变量的定义中,不正确的是Atypedef struct aaB#define AA struct aa int n; AA int n;float m; float m;AA; td1;AA td1;CstructDstruct int n; int n;float m; float m;aa; td1;stuct aa td1;(48) 若已建立如下图所示的单向链表结构,Pdata next在该链表结构中,指针p、s分别指向图中所示结点,则不能将s所指的结点插入到链表末尾仍构成单向链表的语句组是Ap =p->next; s->next=p; p->next=s;Bp =p->next; s->next=p->next; p->next=s;Cs->next=NULL; p=p->next; p->next=s;Dp=(*p).next; (*s).next=(*p).next; (*p).next=s;(49) 有如下程序main() char s=”ABCD”, *P;for(p=s+l; p该程序的输出结果是AABCDBACBDBCDBCD B C CDCD C D DD D(50) 有如下程序main() char ch25=“6937”,”8254”,*p2;int i,j,s=0;for(i=0;i<2;i+) pi=chi;for(i=0;i<2;i+)for(j=0;pij>0;j+=2)s=10*s+pij-0;printf(“%dn”,s);该程序的输出结果是A) 69825 B) 63825 C) 6385 D) 693825二、填空题(每空2分,共40分)请将每空的正确答案写在答题卡上1至20序号的横线上,答在试卷上不得分。 (1) 在DOS状态下,当执行当前盘目录中的程序A.EXE时,为了将本该在屏幕上显示的运行结果输出到文件A.DAT中,应使用的DOS命令为 1 。 (2) 在XCOPY、PATH、TREE三个DOS命令中,属于内部命令的是令是 2 。 (3) 设当前盘为C盘,为了将当前盘当前目录中第三个字符为X的所有文件同名复制到A盘的当前目录中,应使用的DOS命令为 3 。 (4) 要将当前盘的目录ABC设置为当前目录,应使用的DOS命令为 4。 (5) 计算机网络按通信距离划分为局域网与广域网,Novell网属于 5 。 (6) 以下程序的输出结果是 6 。main() unsigned short a=65536; int b;printf(“%dn”,b=a); (7) 若有定义:int a=10,b=9,c=8;接着顺序执行下列语句后,变量b中的值是 7 。c=(a-=(b-5);c=(a)+(b=3); (8) 表示“整数x的值大于5”时值为“真”的C语言表达式是 8 。 (9) 要使以下程序段输出10个整数,请填入一个整数。for(i=0;i<= 9 ;printf(“%dn”,i+=2);(10) 函数pi的功能是根据以下近似公式求值:(*)/6=1+1/(2*2)+1/(3*3)+.+1/(n*n)现在请你在下面的函数中填空,完成求的功能。#include “math.h”double pi(long n) double s=0.0; long i;for(i=1;i<=n;i+)s=s+ 10 ;return(sqrt(6*s);(11) 若输入字符串:abcde<回车>,则以下while循环体将执行 11 次。While(ch=getchar()=e) printf(“*”);(12) 以下函数用来求出两整数之和,并通过形参将结果传回,请填空。void func(int x,int y, 12 z) *z=x+y; (13) 若有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是 13 。int w10=23,54,10,33,47,98,72,80,61, *p=w;(14) 设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写出fun函数的首部14 。要求形参名为b。main() double s1022;int n; fun(s);(15) 以下程序的输出结果是 15 。void fun() static int a=0;a+=2; printf(“%d”,a);main() int cc;for(cc=1;cc<4;cc+) fun()printf(“n”);(16) 以下程序的输出结果是 16 。#define MAX(x,y) (x)>(y)?(x):(y)main() int a=5,b=2,c=3,d=3,t;t=MAX(a+b,c+d)*10;printf(“%dn”,t);(17) 若要使指针p指向一个double类型的报考存储单元,请填空。p= 17 malloc(sizeof(double);(18) 设有以下结构类型说明和变量定义,则变量a在内存所占字节数是 18 。Struct stud char num6;int s4;double ave; a,*p;(19) 以下函数把b字符串连接到a字符串的后面,并返回a中新字符串的长度。请填空。Strcen(char a, char b) int num=0,n=0;while(*(a+num)!= 19 ) num+;while(bn)*(a+num)=bn; num+; 20 ;return(num);参考答案一、选择题:(1)B (2)D (3)A (4)A (5)C (6)B (7)A (8)C (9)B (10)B(11)D (12)B (13)D (14)C (15)D (16)B (17)A (18)C (19)B (20)A(21)D (22)D (23)A (24)C (25)C (26)C (27)B (28)B (29)A (30)A(31)D (32)B (33)C (34)D (35)B (36)C (37)B (38)B (39)D (40)c(41)B (42)B (43)D (44)D (45)A (46)D (47)C (48)A (49)D (50)C二、填空题:1 A.EXE >A.DAT 或A >>A.DAT2 PATH3 COPY ?X*.* A:4 CD ABC5 局域网6 07 38 x>5|x<-59 18101.0/(i*i)11 012 int *13 P5或*(p+5)14 void fun(double b22) 或 void fun(double b022) 或 void fun(double (*b)22)15 24616 717 (double *)18 2219 '0'或020 n+或n+=1或n=n+118