1997年9月全国计算机等级考试二级C语言试卷(含答案)
发布时间:2006-10-14 8:53:57   收集提供:gaoqian

一、选择题((1)-(40)每小题1分,(41)-(50)每小题2分,共60分)
下列各题 A) 、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项在答题卡相应位置上涂黑,答在试卷上不得分。
(1) 应用软件是指
A) 所有能够使用的软件 B) 能被各应用单位共同使用的某种软件
C) 所有微机上都应使用的基本软件 D) 专门为某一应用目的而编制的软件
(2) 下列述叙中错误的是
A) 计算机要经常使用不要长期闲置不用
B) 为了延长计算机的寿命,应避免频繁开关计算机
C) 在计算机附近应避免磁场干扰
D) 计算机用几小时后,应关机一会儿再用
(3) 下列字符中,ASCII码值最小的是
A) A B) a C) Z D) x
(4) 用晶体管作为电子器件制成的计算机属于
A) 第一代 B) 第二代 C) 第三代 D) 第四代
(5) 下列各不同进制的四个无符号数中,最小的数是
A) (11011001)2 B) (37)8 C) (75)10 D) (2A)16
(6) 二进制数1110111.11转换成十六进制数是
A) 77.C B) 77.3 C) E7.C D) E7.3
(7) 下列各无符号十进制数中,能用八位二进制表示的是
A) 296 B) 333 C) 256 D) 199
(8) 计算机的软件系统可分类为
A) 程序与数据 B) 系统软件与应用软件
D) 操作系统与语言处理程序 D) 程序、数据与文档
(9) 486机中的CPU同时能处理的二进制位数为
A) 8 B) 16 C) 32 D) 64
(10) 在使用计算机的过程中,需要重新启动DOS,则要
A) 按Ctrl+Break键 B) 按^C键 C) 按Ctrl+Alt+Del键 D) 按^H键
(11) 现要从软盘启动DOS(软盘中已存有DOS系统),设有如下一些操作:①打开计算机电源;②将该软盘插入A驱动器;③关好A驱动器门。则冷启动的操作顺序应为
A) ①→②→③ B) ③→②→① C) ②→①→③ D) ②→③→①
(12) 设当前盘中某一文件路径为\A\C\B\ABC.C,当前目录为\A。下列命令中错误的是
A) CD.. B) RD \A\C\B
C) TYPE \A\C\B\ABC.C D) TYPE C\B\ABC.C
(13) 设当前盘中的根目录下有一子目录AB,在子目录AB下有一文件PQ.BAS。现要查看文件PQ.BAS的内容,应使用命令
A) TYPE \AB PQ.BAS B) TYPE \AB\PQ.BAS
C) TYPE \PQ.BAS D) DIR \AB\PQ.BAS
(14) 自动批处理文件必须放在
A) C盘根目录中 B) A盘根目录中
C) 启动盘的任一个目录中 D) 启动盘的根目录中
(15) 设当前盘当前目录为C:\USER\XY\P,且当前盘当前目录为空,则下列命令中能正确执行的是
A) RD C:\USER\XY\P B) RD USER\XY\P
C) MD \USER\XY\P\USER D) MD \USER\XY\P\X\Y
(16) 下列DOS命令中,合法的是
A) DISKCOMP A.C B.C B) TYPE A.C >> B.C
C) COMP A: B: D) COMP A: A:
(17) 设当前盘为C盘,所用的所有软盘已格式化,且容量相同,则下列DOS命令中错误的是
A) DISKCOPY A: A: B) COPY A:*.* C) COPY *.* D) COPY A:*.* C:
(18) 下列DOS命令中错误的是
A) TYPE A.TXT>PRN B) TYPE A.TXT PRN
C) COPY *.TXT PRN D) COPY CON PRN
(19) 下列四组DOS命令中,互相等价的一组是
A) COPY A:*.* B:与DISKCOPY A: B:
B) COPY ABC.TXT+XYZ.TXT与TYPE XYZ.TXT >> ABC.TXT
C) COPY ABC.TXT+XYZ.TXT XYZ.TXT与COPY XYZ.TXT+ABC.TXT
D) TYPE *.FOR>CON与COPY *.FOR CON
(20) 设C盘目录结构如下:






且C盘根目录下文件AUTOEXEC.BAT的内容为
 CD FORTRAN
 CD \TC
如果在A驱动器中插入一张根目录中只有扩展名为.C的若干文件(即A盘中无DOS系统文件)的软盘片,则由C盘启动DOS系统后,第一次键入下列命令中,正确的是
A) COPY A:\*.C B) COPY A:\*.C TC
C) COPY A:\*.C FORTRAN D) CD USER
(21) C语言提供的合法的数据类型关键字是
A) Double B) short C) integer D) Char
(22) 在C语言中,合法的长整型常数是
A) 0L B) 4962710 C) 0.054838743 D) 2.1869e10
(23) 表达式:10!=9的值是
A) true B) 非零值 C) 0 D) 1
(24) 合法的C语言中,合法的长整型常数是
A) '\t' B) "A" C) 65 D) A
(25) 若有说明和语句:
 int a=5;
 a++;
 此处表达式a++的值是
A) 7 B) 6 C) 5 D) 4
(26) 在下列选项中,不正确的赋值语句是
A) ++t; B) n1=(n2=(n3=0)); C) k=i==j; D) a=b+c=1;
(27) 若有说明:int i,j=7, *p=&i;,则与i=j;等价的语句是
A) I= *P; B) *P=*&J; C) i=&j; D) i=* *p;
(28) 不能把字符串:Hello!赋给数组b的语句是
A) char b[10]={'H','e','l','l','o','!'};
B) char b[10];b="Hello!";
C) char b[10];strcpy(b,"Hello!");
D) char b[10]="Hello!";
(29) 若有以下说明:
 int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};
 char c='a',d,g;
 则数值为4的表达式是
A)a[g-c] B)a[4] C)a['d'-'c'] D)a['d'-c]
(30) 若有以下说明:
 int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
 则数值为6的表达式是
A) *p+6 B) *(p+6) C) *p+=5 D) p+5
(31) 若有以下说明:
 int w[3][4]o={{0,1},{2,4},{5,8}};
 int(*p)[4]=w;
 则数值为4的表达式是
A) *w[1]+1 B) p++,*(p+1) C) w[2][2] D) p[1][1]
(32) 若程序中有下面的说明和定义
 struct abc
 {int x;char y;}
 struct abc s1,s2;
则会发生的情况是
A) 编译进错 B) 程序将顺利编译`连接`执行
C) 能顺利通过编译`连接`但不能执行 D) 能顺利通过编译`但连接出错
(33) 能正确表示a≥10或a≤0的关系表达式是
A)a>=10 or a<=0 B)a>=10│a<=0
C)a>=10││a<=0 D)a>=10 ││a<=0
(34) 下面程序的输出是
main()
{ int x=3,y=6,a=0;
while(x++!=(y+=o1))
{ a+o=1;
if(y
#include
main()
{ char ss[10]="12345";
strcat(ss,"6789");
gets(ss);printf("%s\n",ss);
}
A) ABC B) ABC9 C) 123456ABC D) ABC456789
(35) 下面程序的输出是
main()
{ char *a="12134211";
int v1=0,v2=0,v3=0,v4=0,k;
for(k=0;s[k];k++)
switch(s[k])
{ default:v4++;
case '1': v1++;
case '3': v3++;
case '2': v2++; }
printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4); }
A) v1=4,v2=2,v3=1,v4=1 B) v1=4,v2=9,v3=3,v4=1
C) v1=5,v2=8,v3=6,v4=1 D) v1=8,v2=8,v3=8,v4=8
(36) 下面程序的输出是
main()
{int k=11;printf("k=%d,k=%o,k=%x\n",k,k,k);}
A) k=11,k=12,k=11 B) k=11,k=13,k=13
C) k=11,k=013,k=0xb D) k=11,k=13,k=b
(37) 若有以下程序段,w和k都是整型变量:
 ┆
w=k;
LB: if(w==0) go to LE;
w--;
printf("*");
goto LB;
LE: ┆
则不能与上面程序段等价的循环语句是
A)for(w=k;w!=0;w--) printf("*"); B)for(w=k;w;--w)printf("*");
C)w=k; D)w=k;
while(w--!=0)printf("*");w++; do{ w--;printf("*");}while(w!=0);
(38) 若有说明,double *p,a;则能通过scanf语句正确给输入项读入数据的程序段是
A)*p=&a; scanf("%lf",p); B)p=(double *)malloc(8);scanf("%f",p);
C) p=&a;scanf("%lf",a); D)p=&a; scanf("%le",p);
(39) 当执行下面程序且输入:ABC时,输出的结果是
#include
#include
main()
{ char ss[10]="12345";
gets(ss);printf("%s\n",ss); }
A) ABC B) ABC9 C) 123456ABC D) ABC456789
(40) 若有以下的说明和语句:
main()
{int t[3][2], *pt[3],k;
fpr(k=o; k<3;k++)pt[k]=t[k];
}
 则以一选项中能正确表示t数组元素地址的表达式是
A) &t[3][2] B) *pt[0] C) *(pt+1) D) &pt[2]
(41) 下面程序输出数组中的最大值,由s指针指向该元素.
main()
{ int a[10]={6,7,2,9,1,10,5,8,4,3,},*p,*s;
flr(p=a, s=a; p-a<10; p++)
if(---?---)s=p;
printf("The max:%d",*s):
}
则在if语句中的判断表达式应该是
A) p>s B) *p>*s C) a[p]>a[s] D) p-a>p-s
(42) 下面程序的输出是
#include
main()
{ char*a="abcdefgh";
fun(a);puts(a); }
fun (char * s)
{ int x=0,y;char c;
for(y=strlen(s)-1;xA)abcdefgh B)hgfdecba C)dcbahgfe D)hgfedcba
 (43) 若有以下函数调用语句: fun(a+b,(x,y),fun(n+k,d,(a,b)));在此函数调用语句中实参的个数是
A)3 B)4 C)5 D)6
(44) 下面程序的输出是
main()
{ int t=1; fun(fun(t));}
fun(int h)
{ static int a[3]={1,2,3};
int k;
for(k=0;k<3;k++) a[k]+=a[k]-h;
for(k=1;k<3;k++) printf("%d",a[k]);
printf("\n"); return(a[h]);}
A)1,2,3, B)1,3,5, C) 1,3,5, D) 1,3,5,
1,5,9, 1,3,5, 0,4,8, -1,3,7,
(45) C语言中,函数的隐含存储类别是
A)auto B)static C)extern D)无存储类别
(46) 下面程序的输出是
int w=3;
main()
{ int w=10; printf("%d\n",fun(5)*w); }
fun(int k)
{ if(k==0) return w;
return(fun(k-1)*k); }
A)360 B)3600 C)1080 D)1200
(47) 要求函数的功能是交换x和y中的值,且通过正确调用返回交换结果。能正确招待此功能的函数是
A)funa(int *x,int *y) B) funb(int x,int y)
{int *p; {int t;
*p=*x;*x=*y;*y=*p;} t=x;x=y;y=t;}
C) func(int *x,int *y) D) fund(int x,int y)
{*x=*y;*y=*x;} {*x=*x+*y; *y=*x-*y; *x=*x-*y; }
(48) 要求函数的功能是在一维数组中查找值;若找到则返回所在的下标值,否则返回0;数列放在到中。不能正确执行的函数是
A)funa(int *a,int n,int x ) B)funb(int *a,int n,int x)
{ *a=x; {int k;
while(a[n]!=x)n--; for(k=1;k<=n;k++)
return n; if(a[k]==x)return k;
} return 0; }
C)func(int a[],int n,int x ) D) fund(int a[],int n,int x )
{ int *k; { int k=0;
a[0]=x;k=a+n; do
while(*k!=x) k--; k++;
return k-n; while((k} if(a[k]==x)return k; else return 0; }
(49) 若有下面的说明和定义,则sizeof(struct aa) 的值是
struct aa
{ int r1;double r2; float r3;
union uu{char u1[5]; long u2[2]; } ua;
} mya;
A)30 B)29 C)24 D)22
(50) 用十进制数表示表达式:12/012的运算结果是
A)1 B)0 C)14 D)12
二、填空题:(每空2分,共40分)
请将每空的正确答案写在答题卡【1】-【20】序号的横线上,答在试卷上不得分。
(1) 与八进制小数0.1等值的十六进制小数为 【1】 。
(2) DOS命令分为内部命令和外部命令,SYS命令属于 【2】 。
(3) 要打印输出当前盘当前目录下的所有扩展名为.DAT的文件内容,应使用的DOS命令为 【3】 。
(4) 设当前系统提示符为"C:\USER>",执行命令"PROMPT $p"后,系统提示符变为 【4】 。
(5) 要建立当前盘当前目录下的全部文件与下一级子目录的目录信息文件MYDIR,应使用的DOS命令为 【5】 。
(6) 若想通过以下输入语句给a赋于1,给b赋于2,则输入数据的形式应该是 【6】 。
int a,b;
scanf("a=%b,b=%d,&a,&b);
(7) 函数mycmp (char*s,chat *t)的功能是比较字符串s和t的大小,当s等于t 时返回0,否则返回s和t的第一个不同字符的ASCOII码的差值,即当s>t时返回正值, 当s等于t 时返回0,否则返回s和t的第一个不同字符的ASCOII码的差值,即当s>t时返回正值, 当smycmp(char *s,char *t)
{ while(*s==*t)
{if(*s=='\0') return 0;
++s; ++t;}
return (【7】); }
(8) 下面程序的输出是【8】 。
#define MAX 5
int a[MAX],k;
main()
{ fun1();fun3(); fun2(); fun3();
printf("\n"); }
fun1()
{ for(k=0;kfun2()
{ int a[MAX],k;
for(k=0;k<5;k++) a[k]=k; }
fun3()
{ int k;
for(k=0;k(9) 若有以下定义和语句,则使指针p指向值为36的数组元素的表达式是【9】 。
int a[10]={19,23,44,17,37,28,49,36},*p;
p=a;
(10) 下面程序的输出是 【10】 。
main()
{ enum em{ em1=3,em2=1,em3};
char *aa[]={"AA","BB","CC","DD"};
printf("%s%s%s\n",aa[em1],aa[em2],aa[em3]); }
(11) 下面函数要求用来求出两个整数之和,并通过形参传回两数相加之和值,请填空。
 int add(int x,int y, 【11】 z)
{ 【12】 =x+y;}
(12) 有以下说明定义和语句,可用a.day引用结构体成员day, 请写出引用结构体成员a.day的其它两种形式 【13】 、【14】 。
struct{int day;char mouth;int year;}a,*b; b=&a;
(13) 下面fun函数的功能是将形参x的值转换成二进制数,所得二进制数的每一位数放在一维数组中返回,二进制数的最低位放在下标为0的元素中,其它依此类推。请填空。
fun(int x,int b[])
{ int k=0,r;
do
{ r=x% 【15】;
b[k++]=r;
x/=【16】; } while(x); }
(14) 现有如图所示的存储结构,每个结点含两个域,data是指向字符串的指针域,next是指向结点的指针域。请填空完成此结构的类型定义和说明。




struct link
{【17】 ; 【18】;} *head;
(15) 下面程序把从终端读入的文本用@作为文本结束标志)复制到一个名为bi.dat的新文件中,请填空。
#include
FILE *fp;
main()
{ char ch;
if((fp=fopen( 【19】))==NULL)exit(0);
while ((ch=getchar())!='@')fputc(ch,fp); 【20】




1997年9月基础知识和C语言程序设计答案及评分标准
一.选择题((1)~(40)题每题1分,(41)~(50)题每题2分,共60分)
(1)D (2)D (3)A (4)B (5)B (6)A (7)D (8)B (9)C (10)C
(11)D (12)B (13)B (14)D (15)C (16)B (17)C (18)B (19)B (20)A
(21)B (22)A (23)D (24)A (25)C (26)D (27)B (28)B (29)D (30)C
(31)D (32)A (33)D (34)D (35)C (36)D (37)C (38)D (39)A (40)C
(41)B (42)D (43)A (44)D (45)C (46)B (47)D (48)C (49)D (50)C
二.填空题(每空2分,共40分) ((1)至(5)题中所有字母都允许大、小写或大小写混合)
(1) 1 0.2或(0.2)16
(2) 2 外部命令(答外部不扣分)
(3) 3 COPY *.DAT PRN
(4) 4 C:\USER
(5) 5 DIR >MYDIR
(6) 6 a=1,b=2
(7) 7 *s=*t
(8) 8 o246802468
(9) 9 p=p+7或p+=7
(10)10 DDBBCC
(11)11 int * 12 * z
(12)13 (*b).day 14 b->day
说明:答案[13]和[14]可以互换
(13)15 2 16 2
(14)17 char *data 18 struct link *next
说明:答案[17]和[18]可以互换
(15)19 "bi.dat","w" (说明:"w"内以w开头的字符串都可以) 20 fclose(fp)



 
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