1997年4月全国计算机等级考试二级C语言试卷(含答案)
发布时间:2006-10-14 8:54:01   收集提供:gaoqian


一、 选择题((1)-(40)每小题1分, (41)-(50)每小题2分, 共60分)
下列各题 A) 、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1) 下列设备中只能作为输入设备的是
A) 磁盘驱动器 B) 鼠标器 C) 存储器 D) 显示器
(2) 下列DOS组合控制键中,能使标准输出同时送到屏幕与打印机的是
A) Ctrl+Break B) Ctrl+P C) Ctrl+C D) Ctrl+H
(3) 通常所说的386机是
A) 8位机 B) 16位机 C) 32位机 D) 64位机
(4) 二进制数01100100转换成十六进制数是
A) 64 B) 63 C) 100 D) 144
(5) 十六进制数100转换成十进制数是
A) 1024 B) 512 C) 256 D) 128
(6) 对于存有重要数据的5.25英寸软盘,防止计算机病毒感染的方法是
A) 不要与有病毒的软盘放在一起 B) 在写保护口贴上胶条
C) 保持软盘清洁 D) 定期对软盘格式化
(7) 在启动DOS系统时,启动盘的根录下必须包含的文件是
A) START.COM B) COMMAND.COM C) FORMAT.COM D) BOOT.COM
(8) DOS系统启动后,下列文件中常驻内存的是
A) DOS.COM B) COMMAND.COM C) DISKCOPY.COM D) SYS.COM
(9) 下列名字中,不能作为DOS磁盘文件名的是
A) JTU B) 93GZ.PRG C) CON D) ATT&T.BAS
(10) 下列命令中属于内部命令的是
A) SYS B) COMP C) DIR D) DISKCOMP
(11) 下列文件名中,能与ABC?.?匹配的是
A) AB12.C B) ABCD.FOR C) ABC.TXT D) ABCD.C
(12) 要列出当前盘当前目录中第三个字符为"B"的所有文件的清单,可使用的命令为
A) DIR **B*.* B) DIR ??B*.? C) DIR ??B.* D) DIR ??B*.*
(13) 设当前盘为C盘,其根目录下有两个子目录D1与D2,且当前目录为D1,若要进入子目录D2,可使用的命令为
A) CD D2 B) CD D2\ C) CD \D2 D) CD D1\D2
(14) 设当前盘为C盘,A盘当前目录为根目录。为了删除A盘目录\WS下扩展名为.TXT的所有文件,可用的命令为
A) DEL WS\*.TXT B) DEL \WS\*.TXT C) DEL A:\WS\?.TXT D) DEL A:WS\*.TXT
(15) 设当前盘为C盘,C盘当前目录为\AAA\BBB\A\B\X。下列命令中能正确执行的是
A) MD \AAA\BBB\A B) MD X C) MD \ D) MD \AAA\BBB\A\B\X
(16) 在下列各组的两个命令中,根据给定的条件,执行效果互相等价的是
A) DEL \DOS 与 RD \DOS(当前盘上有目录\DOS)
B) FORMAT A:与 DEL A:*.*(A盘为启动盘)
C) DISKCOPY A: B: 与 COPY A:*.* B:(A盘为启动盘)
D) COPY F1 F2 与 TYPE F1>F2(当前盘当前目录下有文件F1)
(17) 为了在1.2MB的高密驱动器A中格式化一张360KB的启动盘,可用的命令为
A) FORMAT A: B) FORMAT A:/S/1 C) FORMAT A:/S/4 D) FORMAT A:/S
(18) 要在打印机上输出当前盘当前目录下扩展名为.TXT的所有文件内容,正确的命令为
A) COPY *.TXT PRN B) COPY *.TXT>PRN C) TYPE *.TXT PRN D) TYPE *.TXT>PRN
(19) 设B盘目录结构如下:






设B盘的当前目录为\F2,要将A盘当前目录下的文件P.BAS复制到B盘的F3子目录中,可用的命令为
A) COPY P.BAS B: B) COPY A:P.BAS B:\
C) COPY A:P.BAS B:\F3 D) COPY A:P.BAS B:F3\
(20) 设当前盘为A盘,要将B盘当前目录下的两个文件A.TXT与X.TXT连接后以文件名Y.TXT存放到A盘的当前目录中,可用的命令为
A) COPY A.TXT+X.TXT A:Y.TXT B) COPY B:A.TXT+X.TXT A:Y.TXT
C) COPY B:A.TXT+B:X.TXT >Y.TXT D) COPY B:A.TXT+B:X.TXT Y.TXT
(21) C语言中最简单的数据类型包括
A) 整型、实型、逻辑型 B) 整型、实型、字符型
C) 整型、字符型、逻辑型 D) 整型、实型、逻辑型、字符型
(22) C语言中,运乍对象必须是整型数的运算符是
A) % B) \ C) %和\ D) * *
(23) 为表示关系x≥y≥z,应使用C语言表达式
A) (x>=y)&&(y>=z) B(x>=y)AND(y>=z) C)(x>=y>=z) D)(x>=y)&(y>=z)
(24) 下述对C语言字符数组的描术中错误的是
A) 字符数组可以存放字符串
B) 字符数组中的字符串可以整体输入、输出
C) 可以在赋值语句中通过赋值运算符"="对字符数组整体赋值
D) 不可以用关系运算符对字符数组中的字符串进行比较
(25) 设有如下定义: int x=10,y=3,z; 则语句
printf("%d\n",z=(x%y,x/y)); 的输出结果是
A) 1 B) 0 C) 4 D) 3
(26) 以下程序的输出结果是
main()
{ int x=10,y=10;
printf("%d %d\n",x--,--y); }
 A) 10 10 B) 9 9 C) 9 10 D) 10 9
(27) 定义如下变题和数组:
int i;
int x[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句的输出结果是
for(i=0;i<3;i++) printf("%d",x[i][2-1]);
A) 1 5 9 B) 1 4 7 C) 3 5 7 D) 3 6 9
(28) 若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为
A) a<>0 B) !a C) a=0 D) a
(29) 阅读程序:
#include
main()
{ int a[10]={1,2,3,4,5,6,7,8,9,0},*p;
p=a;
printf("%x\n",p);
printf("%x\n",p+9); }
该程序有两个printf 语句, 如果第一个printf 语句输出的是194, 则第二个printf语句的输出结果是
A) 203 B) 204 C) 1a4 D) 1a6
(30) 设有如下函数定义:
int f(char *s)
{ char *p=s;
while(*p!='\0') p++;
return(p-s); }
如果在主程序中用下面的语句调用上述函数,则输出结果为
printf("%d\n",f("goodbey!"));
A) 3 B) 6 C) 8 D) 0
(31) 以下说法中正确的是
A) C语言程序总是从第一个的函数开始执行
B) 在C语言程序中,要调用的函数必须在main()函数中定义
C) C语言程序总是从main()函数开始执行
D) C语言程序中的main()函数必须放在程序的开始部分
(32) 执行下面的程序后,a的值为
main()
{ int a,b;
for (a=1,b=1;a<=100;a++)
{ if(b>=20) break;
if(b%3==1) {b+=3; continue; }
b-=5; } }
A) 7 B) 8 C) 9 D) 10
(33) 以下程序段的输出结果是
int x=3;
 do { printf("%3d",x-=2);} while(!(--x));
A) 1 B) 3 0 C) 1-2 D) 死循环
(34) 定义如下变量: int n=10; 则下列循环的输出结果是
while(n>7)
{ n--;
printf("%d\n",n); }
 A) 10 B) 9 C) 10 D) 9
 9 8 9 8
 8 7 8 7
7 6
(35) 两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是
main( )
{ int x;
scanf("%d",&x);
if(x + + >5) printf("%d",x);
else printf("%d\n",x - -); }
A) 7和5 B) 6和3 C) 7和4 D) 6和4
(36) 设有如下定义: char *aa[2]={"abcd","ABCD"}; 则以下就法中正确的是
A) aa数组成元素的值分别是"abcd"和ABCD"
B) aa是指针变量,它指向含有两个数组元素的字符型一维数组
C) aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址
D) aa数组的两个元素中各自存放了字符'a'和'A'的地址
(37) 以下程序的输出结果是
main( )
{ int a=-1,b=4,k;
k=(+ +a〈0)&&!(b - -〈=0);
printf("%d%d%d\n",k,ab); }
A) 104 B) 103 C) 003 D) 004
(38) 设有以下定义:
int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};
int (*prt)[3]=a,*p=a[0];
则下列能够正确表示数组元素a[1][2]的表达式是
A) *((*prt+1) [2]) B) *(*(p+5)) C) (*prt+1)+2 D) *(*(a+1)+2)
(39) 下列程序的输出结果是
main( )
{ char*p1,*p2,str[50]="xyz";
p1="abcd";
p2="ABCD";
strcpy(str+2,strcat(p1+2,p2+1);
printf)"%s",str); }
A) xyabcAB B) abcABz C) ABabcz D) xycdBCD
(40) 执行下面的程序后,a的值是
#define SQR(X) X*X
main( )
{ int a=10,k=2,m=1;
a/=SQR(k+m)/SQR(k+m);
printf("%d\n",a); }
 A) 10 B) 1 C) 9 D) 0
(41) 下列程序执行后输出的结果是
#include
f(int a)
{ int b=0; static c=3:
a=c+ +,b+ +;
return (a); }
main( )
{ int a=2,i,k;
for(i=0;i〈2;i=+ +〉 k=f(a+ +);
printf("%d\n",k); }
 A) 3 B) 0 C) 5 D) 4
(42) 下列程序的输出结果是
main( )
{ int a[5]={2,4,6,8,10},*P,* *k;
p=a; k=&p;
printf("%d",*(p++)); printf("%d\n",* *k); }
A) 4 4 B) 2 2 C) 2 4 D) 4 6
(43) 阅读下列程序:
main( )
{ int n[3],i,j,k;
for(i=0;i〈3;i++〉 n[i]=0;
k=2;
for (i=0;i〈k;i++〉
for (j=0;j〈k;j++〉 n[j]=n[i]+1;
printf("%d\n",n[1]); }
下述程序运行后输出结果是
A) 2 B) 1 C) 0 D) 3
(44) 字符'0'的ASCII码的十进制数为48,且数组的第0个元素在低位,则以下程序的输出结果是
#include
main( )
{ union { int i[2]; long k; char c[4]; }r,*s=&r;
s->i[0]=0x39;
s->i[1]=0x38;
printf("%c\n",s->c[0]) }
A) 39 B) 9 C) 38 D) 8
(45) 设有以下定义:
typedef union { long i;int k[5];char c;}DATE;
struct date { int cat;DATE cow;double dog;}too;
DATE max;
则下列语句的执行结果是
printf("%d",sizeof(struct date)+sizeof(max));
A) 25 B) 30 C) 18 D) 8
(46) 执行以下程序后,y的值是
main ( )
{ int a[]={2,4,6,8,10};
int y=1,x,*p;
p=&a[1];
for(x=0;x<3;x++) y + = * (p + x);
printf("%d\n",y); }
A) 17 B) 18 C) 19 D) 20
(47) 下列程序执行后输出的结果是
int d=1;
fun (int q)
{ int d=5;
d + =p + +; printf("%d".d); }
main( )
{ int a=3;
fun(a);
d + = a + +; printf("%d\n",d); }
A) 8 4 B) 9 6 C) 9 4 D) 8 5
(48) 下列程序的输出结果是
main( )
{ char ch[2][5]={"6934,"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'&&p[i][j]<='9';j+=2) s=10*s+p[i][j]-'0';
printf("%d\n",s);
A) 6385 B) 69825 C) 63825 D) 693825
(49) 以下程序的输出结果是
fut (int**s,int p[2][3])
{ **s=p[1][1]; }
main( )
{ int a[2][3]={1,3,5,7,9,11},*p;
p=(int*)malloc(sizeof(int));
fut(&p,a);
primtf("%d\n",*p); }
A) 1 B) 7 C) 9 D) 11
(50) 以下程序的输出结果是
#include"ctype.h"
space (char *str)
{ int i,t;char ts[81];
for(i=0,t=0;str[i]!='\0';i+=2)
if(! isspace(*str+i)&&(*(str+i)!='a'))
ts[t++]=toupper(str[i]);
ts[t]='\0';
strcpy(str,ts); }
mian( )
{ char s[81]={"a b c d e f g"};
space(s);
puts(s); }
A) abcdeg B) bcde C) ABCDE D) BCDE
二、填空题(每空2分,共40分)
请将每空的正确答案写在答题卡上【1】-【20】序号的横线上,答在试卷上不得分。
(1) 十进制数112.375转换成十六进制数为 【1】 。
(2) 存储200个32×32点阵的汉字信息需 【2】 KB。
(3) 数字符号0的ASCII码十进制表示为48,数字符号9的ASCII码十进制表示为 【3】 。
(4) DOS命令分为内部命令与外部命令,TREE命令属于 【4】 命令。
(5) 自动批处理文件的文件名为【5】 。
(6)表示条件:10(7) 下列程序的输出结果是【7】
main()
{ char b[]="ABCDEFG";
char *chp=&b[7];
while(--chp>&b[0]) putchar(*chp);
putchar('\n'); }
(8) 下列程序的输出结果是【8】 。
int ast(int x,int y,int * cp,int * dp)
{ *cp=x+y; *dp=x-y; }
main()
{ int a,b,c,d;
a=4;b=3;
ast(a,b,&c,&d);
printf("%d %d/n",c,d); }
(9) 以下程序的功能是:人键盘上输入若干个学生的成绩, 统计并输出最高成绩和最低成绩,当输入负数时结束输入.请填空.
main()
{ float x,amax,amin;
scanf("%f",&x);
amax=x; amin=x;
while(【9】)
{ if(x>amax) amax=x;
if(【10】) amin=x;
scanf("%f",&x); }
printf("\namax=%f\namin=%f\n",amax,amin); }
(10) 下面程序通过函数average计算数组中各元素的平均值,请填空.
float average(int * pa,int n)
{ int i;
float avg=0.0;
for(i=0;iavg=【12】;
return avg; }
main()
{ int i,a[5]={2,4,6,8,10};
float mean;
mean=average(a,5); printf("mean=%f\n",mean);}
(11) 阅读程序:
#include "string.h"
#include "stdio.h"
strle(char a[],char b[])
{ int num=0,n=0;
while(*(a+num)!='\0'),num++;
while(b[n]){ *(a+num)=b[n];num++;n++;}
return (num);}
main()
{ char str1[81],str2[81],*p1=str1,*p2=str2;
gets(p1); gets(p2);
printf("%d\n",strle(p1,p2)); }
运行上面程序,如果从键盘上输入字符串qwerty和字符串abcd则程序的输出结果是 【13】 。
(12) 以下程序的输出结果是 【14】 。
fun(int n,int *s)
{ int f1,f2;
if(n = =1||n = =2) *s=1;
else { fun(n-1,&f1); fun(n-2,&f2); *s=f1+f2;} }
main()
{ int x;
fun(6,&x); printf("%d\n",x); }
(13) 阅读程序:
main()
{ char str1[]="how do you do" ,str2[10];
char *p1=str1,*p2=str2;
scanf("%s",p2); printf("%s",p2); printf("%s\n",p1); }
运行上面的程序,输入字符串HOW DO YOU DO 则程序的输出结果是【15】 。
(14) 以下程序由终端输入一个文件名,然后把从终端键盘输入的字符依次存放到该文件中,用#作为结束输入的标志.请填空.
#include
main()
{ FILE * fp;
char ch,fname[10];
printf("lnput the name of file\n");
gets(fname);
if((fp=【16】)==NULL)
{ printf("Cannot open\n"); exit(0);}
printf("Enter data\n");
while((ch=getchar())!='#') fputc(【17】,fp);
fclose(fp); }
(15) 以下函数creat用来建立一个带头结点的单向链表,新产生的结点总是插在链表的末尾。单向链表的头指针作为函数值返回.请填空:
#include
struct list { char data; struct list * next; };
struct list * creat()
{ struct list * h,* p,* q;
char ch;
h=【18】 malloc(sizeof(struct list));
p=q=h;
ch=getchar();
while(ch!='?')
{ p=【19】 malloc(sizeof(struct list));
p->data=ch;
p->next=p;
q=p;
ch=getchar();
}
p->next='\0';
【20】
}


1997年4月二级C笔试试卷参考答案
一 选择题((1)~(40)题每题1分,(41)~(50)题每题2分,共60分)
(1)B (2)B (3)C (4)A (5)C (6)B (7)B (8)B (9)C (10)C
(11)D (12)D (13)C (14)D (15)B (16)D (17)C (18)A (19)C (20)D
(21)B (22)A (23)A (24)C (25)D (26)D (27)C (28)D (29)D (30)C
(31)C (32)B (33)C (34)B (35)A (36)D (37)D (38)D (39)D (40)B
(41)D (42)C (43)D (44)B (45)B (46)C (47)A (48)A (49)C (50)D
二 填空题(每空2分,共40分)
 ((1)至(5)题中所有字母都允许大`小写或大小写混合)
(1) 【1】 70.6
(2) 【2】 25(答25KB不扣分)
(3) 【3】 57
(4) 【4】 外部(答外部命令不扣分)
(5) 【5】 AUTOEXEC.BAT(答AUTOEXEC扣1分)
(6) 【6】 (x>10 && x<100)││x<0 或(1010 && x<100) 或 0>x││(10< && x<100)
(并且括号有无都可以)
(7) 【7】 GFEDCB
(8) 【8】 7 1
(9) 【9】 x>=0.0 或 !(x<0) 或!(x<0.0)
 或0.0<=x 或!(0.0>x) 或! (0>x)
(10)【10】 xx 或 amin>=x
 【11】 *(pa+i) 或 pa[i]
 【12】 avg/n 或avg/(float)n 或 avg/(double)n
(11)【13】 10
(12)【14】 8
(13)【15】 HOW how do you do (说明:HOW 和how之间有无空格均可)
(14)【16】 fopen(fname,"w")说明:"w"开头的字符串均可)
 【17】 ch
(15)【18】 (struct list *)
 【19】 (struct list *)
 【20】 return(h); 或 return h;



 
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