2000年9月全国计算机等级考试二级C语言试卷(含答案)
发布时间:2006-10-14 8:53:58   收集提供:gaoqian

一、选择题((1)--(40)每小题1分, (41)--(50)每小题2分, 共60分
下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项在答题卡相应位置上涂黑,答在试卷上不得分。
 (1) 下列电子邮件地址中正确的是(其中□表示空格)
A) Malin&ns.cnc.ac.cn B) malin@ns.cac.ac.cn
C) Lin□Ma&ns.cnc.ac.cn D) Lin□Ma@ns.cnc.ac.cn
 (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的十六进制值为
A) 18D B) 18E C) 277 D) 361
 (5) 下列说法中不正确的是
A) CD-ROM是一种只读存储器但不是内存储器
B) CD-ROM驱动器是多媒体计算机的基本部分
C) 只有存放在CD-ROM盘上的数据才称为多媒体信息
D) CD-ROM盘上最多能够存储大约650兆字节的信息
 (6) Windows应用环境中鼠标的拖动操作不能完成的是
A) 当窗口不是最大时,可以移动窗口的位置
B) 当窗口最大时,可以将窗口缩小成图标
C) 当窗口有滚动条时可以实现窗口内容的滚动
D) 可以将一个文件移动(或复制)到另一个目录中去
 (7) 从Windows中启动MS-DOS方式进入了DOS状态,如果想回到Windos状态,在DOS提示符下,应键入的命令为
A) EXIT B) QUIT C) WIN D) DOS -U
 (8) 要在WINDOWS标准窗口的下拉菜单中选择命令,下列操作错误的是
A) 用鼠标单击该命令选项
B) 用键盘上的上下方向键将高亮度条移至该命令选项后再按回车键
C) 同时按下ALT键与该命令选项后括号中带有下划线的字母键
D) 直接按该命令选项后面括号中带有下划线的字母键
 (9) ASCLL码(含扩展)可以用一个字节表示,则可以表示的ASCLL码值个数为
A) 1024 B) 256 C) 128 D) 8O
(10) 字长为32位的计算机是指
A) 该计算机能够处理的最大数不超过232
B) 该计算机中的CPU可以同时处理32位的二进制信息
C) 该计算机的内存量为32MB
D) 该计算机每秒钟所能执行的指令条数为32MIPS
(11) 在DOS系统中,下列文件名中非法的是
A) ABCDEFG1 B) ABCDEFG1.234 C)ABCD_EFG D)ABCD\EFG
(12) DOS系统启动后,下列文件中驻留内存的是
A) CONFIG.SYS B) COMMAND.COM C) AUTOEXEC.BAT D) MEM.EXE
(13) DOS下的“DIR *2”命令将列出当前目录下的
A) 所有名字末尾为字符2的非隐含文件和目录
B) 所有名字末尾为字符2的非隐含文件
C) 所有非隐含文件
D) 所有非隐含文件和目录
(14) 软驱的盘符为A,A盘上只有一个目录\XYZ,而\XYZ下有若干子目录和文件,若想把A盘的所有内容复制到C盘根目录下,应使用的命令为
A) COPY A:\*.* C: B) COPY A:\*.* C:\*.*
C) XCOPY A:\*.* C:\ /S D) DISKCOPY A: C:
(15) 若要将当前盘目录下的文件A.TXT连接在文件B.TXT后面,应使用的命令为
A) COPY A.TXT>>B.TXT B) MOVE A.TXT>>B.TXT
C) PATH A.TXT>>B.TXT D) TYPE A.TXT>>B.TXT
(16) 若变量已正确定义并赋值,下面符合C语言语法的表达式是
A) a:=b+1 B) a=b=c+2 C) int 18.5%3 D) a=a+7=c+b
(17) C语言中运算对象必须是整型的运算符是
A) %= B) / C) = D) 〈=
(18) 若已定义x和y为double类型,则表达式x=1,y=x+3/2 的值是
A) 1 B) 2 C) 2.0 D) 2.5
(19) 若变量a、iI已正确定义,且i已正确赋值,合法的语句是
A) a==1 B) ++i; C) a=a++=5; D) a=int(i);
(20) 若有以下程序段,
int c1=1,c2=2,c3;
c3=1.0/c2*c1;
则执行后,c3中的值是
A) 0 B) 0.5 C) 1 D) 2
(21) 有如下程序
main0
{ int y=3,x=3,z=1;
printf(“%d %d\n”,(++x,y++),z+2);
}
运行该程序的输出结果是
A) 3 4 B) 4 2 C) 4 3 D) 3 3
(22) 能正确表示逻辑关系:“a≥=10或a≤0”的C语言表达式是
A) a>=10 or a<=0 B) a>=0|a<=10 C) a>=10 &&a<=0 D) a>=10‖a<=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=%d\n”,a,b);
}
该程序的输出结果是
A) a=2,b=1 B) a=1,b=1 C) a=1,b=0 D) a=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(“%f\n”,y);
}
该程序的输出结果是
A) 0.000000 B) 0.250000 C) 0.500000 D) 1.000000
(25) 有如下程序
main0
{ int a=2,b=-1,c=2;
if(aif(b<0) c=0;
else c++
printf(“%d\n”,c);
}
该程序的输出结果是
A) 0 B) 1 C) 2 D) 3
(26) 有如下程序
main0
{ int i,sum;
for(i=1;i<=3;sum++) sum+=i;
printf(“%d\n”,sum);
}
该程序的执行结果是
A) 6 B) 3 C) 死循环 D) 0
(27) 有如下程序
main0
{ int x=23;
do
{ printf(“%d”,x--);}
while(!x);
}
该程序的执行结果是
A) 321 B) 23 C) 不输出任何内容 D) 陷入死循环
(28) 有如下程序
main0
{ int n=9;
while(n>6) {n--;printf(“%d”,n);}
}
该程序段的输出结果是
A) 987 B) 876 C) 8765 D) 9876
(29) 设有说明语句:char a=’\72’;则变量a
A) 包含1个字符 B) 包含2个字符 C) 包含3个字符 D) 说明不合法
(30) 有如下函数调用语句
func(rec1,rec2+rec3,(rec4,rec5);
该函数调用语句中,含有的实参个数是
A) 3 B) 4 C) 5 D) 有语法错
(31) 有如下程序
int runc(int a,int b)
{ return(a+b);}
main0
{ int x=2,y=5,z=8,r;
r=func(func(x,y),z);
printf(“%\d\n”,r);
}
该程序的输出的结果是
A) 12 B) 13 C) 14 D) 15
(32) 有如下程序段
int *p,a=10,b=1
p=&a; a=*p+b;
执行该程序段后,a的值为
A) 12 B) 11 C) 10 D) 编译出错
(33) 对于基类型相同的两个指针变量之间,不能进行的运算是
A) < B) = C) + D) -
(34) 以下函数返回a所指数组中最小的值所在的下标值
fun(int *a, int n)
{ int i,j=0,p;
p=j;
for(i=j;iif(a[i]return(p);
}
在下划线处应填入的是
A) i=p B) a[p]=a[i] C) p=j D) p=i
(35) 有如下程序
long fib(int n)
{ if(n>2) return(fib(n-1)+fib(n-2));
else return(2);
}
main0
{ printf(“%d\n”,fib(3));
该程序的输出结果是
A) 2 B) 4 C) 6 D) 8
(36) 在C语言中,函数的隐含存储类别是
A) auto B) static C) extern D) 无存储类别
(37) 有如下程序
#define N 2
#define M N+1
#define NUM 2*M+1
#main()
{ int i;
for(i=1;i<=NUM;i++)printf(“%d\n”,i);
}
该程序中的for循环执行的次数是
A) 5 B) 6 C) 7 D) 8
(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的值为
A) ture B) false C) 0 D) 1
(40) 若fp是指向某文件的指针,且已读到此文件末尾,则库函数feof(fp)的返回值是
A) EOF B) 0 C) 非零值 D) NULL
(41) 若有以下说明和定义
fun(int *c){ }
main()
{ int (*a)()=fun,*b(),w[10],c;
┆
}
在必要的赋值之后,对fun函数的正确调用语句是
A) a=a(w); B) (*a)(&c); C) b=*b(w); D) fun (b);
(42) 有如下说明
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则数值为9的表达式是
A) *P+9 B) *(P+8) C) *P+=9 D) P+8
(43) 有如下程序
main0
{ int n[5]={0,0,0},i,k=2;
for(i=0;iprintf(“%d\n”,n[k]);
}
该程序的输出结果是
A) 不确定的值 B) 2 C) 1 D) 0
(44) 若有以下的定义:int t[3][2];能正确表示t数组元素地址的表达式是
A) &t[3][2] B) t[3] C) t[1] D) t[2]
(45) 有如下程序
main0
{ int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;
for(i=1;i<3;i++)
for(j=0;jprintf(“%d\n”,s);
}
该程序的输出结果是
A) 18 B) 19 C) 20 D) 21
(46) 有如下定义
struct person{char name[9]; int age;};
strict person class[10]={“Johu”, 17,
“Paul”, 19
“Mary”, 18,
“Adam 16,};
根据上述定义,能输出字母M的语句是
A) prinft(“%c\n”,class[3].mane);
B) pfintf(“%c\n”,class[3].name[1]);
C) prinft(“%c\n”,class[2].name[1]);
D) printf(“%^c\n”,class[2].name[0]);
(47) 以下对结构体类型变量的定义中,不正确的是
A) typedef struct aa B) #define AA struct aa
{ int n; AA {int n;
float m; float m;
}AA; }td1;
AA td1;
C) struct D) struct
{ int n; { int n;
float m; float m;
}aa; }td1;
stuct aa td1;
(48) 若已建立如下图所示的单向链表结构,
 P

 data next






在该链表结构中,指针p、s分别指向图中所示结点,则不能将s所指的结点插入到链表末尾仍构成单向链表的语句组是
A) p =p->next; s->next=p; p->next=s;
B) p =p->next; s->next=p->next; p->next=s;
C) s->next=NULL; p=p->next; p->next=s;
D) p=(*p).next; (*s).next=(*p).next; (*p).next=s;
(49) 有如下程序
main()
{ char s[]=”ABCD”, *P;
for(p=s+l; p}
该程序的输出结果是
A) ABCD B) A C) B D) BCD
BCD B C CD
CD C D D
D D
(50) 有如下程序
main()
{ char ch[2][5]={“6937”,”8254”},*p[2];
int i,j,s=0;
for(i=0;i<2;i++) p[i]=ch[i];
for(i=0;i<2;i++)
for(j=0;p[i][j]>’\0’;j+=2)
s=10*s+p[i][j]-‘0’;
printf(“%d\n”,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) 要将当前盘的目录A\B\C设置为当前目录,应使用的DOS命令为 [4]。
 (5) 计算机网络按通信距离划分为局域网与广域网,Novell网属于 [5] 。
 (6) 以下程序的输出结果是 [6] 。
main()
{ unsigned short a=65536; int b;
printf(“%d\n”,b=a);
}
 (7) 若有定义:int a=10,b=9,c=8;接着顺序执行下列语句后,变量b中的值是 [7] 。
c=(a-=(b-5));
c=(a%11)+(b=3);
 (8) 表示“整数x的绝对值大于5”时值为“真”的C语言表达式是 [8] 。
 (9) 要使以下程序段输出10个整数,请填入一个整数。
for(i=0;i<= [9] ;printf(“%d\n”,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 w[10]={23,54,10,33,47,98,72,80,61}, *p=w;
(14) 设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写出fun函数的首部[14] 。要求形参名为b。
main()
{ double s[10][22];
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(“%d\n”,t);
}
(17) 若要使指针p指向一个double类型的动态存储单元,请填空。
p= [17] malloc(sizeof(double));
(18) 设有以下结构类型说明和变量定义,则变量a在内存所占字节数是 [18] 。
Struct stud
{ char num[6];
int s[4];
double ave;
} a,*p;
(19) 以下函数把b字符串连接到a字符串的后面,并返回a中新字符串的长度。请填空。
Strcen(char a[], char b[])
{ int num=0,n=0;
while(*(a+num)!= [19] ) num++;
while(b[n]){*(a+num)=b[n]; num++; [20] ;}
return(num);
}




2000年9月全国计算机等级考试二级笔试试卷答案
一、选择题:
(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.DAT
[2] PATH
[3] COPY ??X*.* A:
[4] CD A\B\C
[5] 局域网
[6] 0
[7] 3
[8] x>5||x<-5
[9] 18
[10]1.0/(i*i)
[11] 0
[12] int *
[13] P[5]或*(p+5)
[14] void fun(double b[][22])
 或 void fun(double b[0][22])
 或 void fun(double (*b)[22])
[15] 246
[16] 7
[17] (double *)
[18] 22
[19] '\0'或0
[20] n++或n+=1或n=n+1



 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50