1997年4月全国计算机等级考试二级C语言笔试试题

1997年4月全国计算机等级考试二级C语言笔试试题

 更新于:2007年9月19日   念时

一、选择题((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)COSP 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:\根目录 ─┬─F1子目录──F11子目录───FA.TXT

├─F2子目录┬─F21子目录─┬─FB.BAS
│ │ │
│ │ │
│ └─F22子目录 └─FC.TXT
└─
设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 〈stdio.h〉
f(int a)
{ int b=0;
statin c=3:
a=c+ +,b+ +;
returu(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〈stdio.h〉
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的ASCⅡ码十进制表示为48,数字符号9的ASCⅡ码十进制表示为3 .

(4)DOS命令分为内部命令与外部命信,TREE命令属于4命令.

(5)自动批处理文件的文件名为5 .

(6)表示条件:10
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
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 malioc(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
}


答案将在后期陆续公布……敬请关注!念时

你可能感兴趣的:(C语言)