1、2000 年 9 月二级 C 语言笔试真题及答案(考试时间:120 分钟,满分 100 分)一、选择题(1)-(40)每小题 1 分, (41)-(50)每小题 2 分, 共 60 分下列各题 A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项在答题卡相应位置上涂黑,答在试卷上不得分。(1) 下列电子邮件地址中正确的是(其中表示空格)A) Malin 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
2、 int y=3,x=3,z=1;printf(“%d %dn”,(+x,y+),z+2);运行该程序的输出结果是A) 3 4 B) 4 2 C) 4 3 D) 3 3(22) 能正确表示逻辑关系:“a=10 或 a0”的 C 语言表达式是A) a=10 or a=0|a=10 printf(“%d”,n);该程序段的输出结果是A) 987 B) 876 C) 8765 D) 9876(29) 设有说明语句:char a=72;则变量 aA) 包含 1 个字符 B) 包含 2 个字符 C) 包含 3 个字符 D) 说明不合法(30) 有如下函数调用语句func(rec1,rec2+rec3,(
3、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(“%dn”,r);该程序的输出的结果是A) 12 B) 13 C) 14 D) 15(32) 有如下程序段int *p,a=10,b=1p= a=*p+b;执行该程序段后,a 的值为A) 12 B) 11 C) 10 D) 编译出错(33) 对于基类型相同的两个指针变量之间,不能进行的运算是A) 2) ret
4、urn(fib(n-1)+fib(n-2);else return(2);main0 printf(“%dn”,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;inext; s-next=p; p-next=s;B) p =p-next; s-next=p-next; p-next=s;C) s-next=NU
5、LL; 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; p0;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 时,为了将本该在屏幕上显示
6、GF 0Eheads的运行结果输出到文件 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;pri
7、ntf(“%dn”,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,则以下 while 循环体将执行 11 次。While(ch=getchar()=e) printf(“*”);(12) 以下函数用来求出两整数之和,并通过形参将结果传回,请填空。void func(int x,int y, 12 z) *z=x+y;
8、(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(y)?(x):(y)mai
9、n() 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;w
10、hile(*(a+num)!= 19 ) num+;while(bn)*(a+num)=bn; 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.DAT2 PATH3 COPY ?X*.* A:4 CD ABC5 局域网6 07 38 x5|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+1