1998年全国计算机等级考试二级c语言笔试试题含参考答案.docx
《1998年全国计算机等级考试二级c语言笔试试题含参考答案.docx》由会员分享,可在线阅读,更多相关《1998年全国计算机等级考试二级c语言笔试试题含参考答案.docx(17页珍藏版)》请在冰豆网上搜索。
1998年全国计算机等级考试二级c语言笔试试题含参考答案
全国计算机等级考试二级笔试卷
基础知识和C语言程序设计
(考试时间120分钟,满分100分)
1998年9月
一、选择题(
(1)-(40)每小题1分,(41)-(50)每小题2分,共60分)
下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)通常所说的主机主要包括
A)CPUB)CPU和内存C)CPU、内存与外存D)CPU、内存与硬盘
(2)在微机系统中,最基本的输入输出模块BIOS存放在
A)RAM中B)ROM中C)硬盘中D)寄存器中
(3)一个24*24点阵的汉字字形信息所占的字节数为
A)2B)24C)32D)72
(4)bit的意思是
A)字B)字长C)字节D)二进制位
(5)某学校的工资管理程序属于
A)系统程序B)应用程序C)工具软件D)文字处理软件
(6)与十六进制数BB等值的十进制数是
A)187B)188C)185D)186
(7)设一张软盘已染上病毒,能清除病毒的措施是
A)删除该软盘上的所有文件B)格式化该软盘
C)删除该软盘上的所有可执行文件C)删除该软盘上的所有批处理文件
(8)一张3.5英寸双面高密度软盘片的容量为
A)360KBB)720KBC)1.44MBD)1.2MB
(9)与二进制小数0.1等值的十六进制小数为
A)0.1B)0.2C)0.4D)0.8
(10)DOS系统的热启动与冷启动的不同之处为热启动时
A)不检测键盘、处设接口与内存B)不提示用户输入日期与时间
C)不用装入COMMAND.COM文件D)不能从软盘启动
(11)为了将磁盘上的文件K1,K2,K3,依次连接在文件K4的后面,应使用命令
A)COPYK1+K2+K3K4B)COPYK1+K2+K3+K4
C)COPYK1+K2+K3+K4K4D)COPYK4+K1+K2+K3
(12)下列文件名中可以作为批处理文件名的是
A)AUTOEXC.CB)AUTOEXECC)ATX.BATD)AUTO.TXT
(13)要打印输出当前盘的根目录下所有文件与子目录清单,应使用命令
A)DIR\>PRNB)TYPE\>PRNC)DIR>PRNC)TYPE>PRN
C)DIR>PRND)TYPE>PRN
(14)设可执行文件ABC.EXE所需要的本该由键盘输入的数据已经按格式存放在文件XYZ中,并要求执行结果放在XYZ中输入数据的后面。
下列命令中正确的是
A)ABCXYZB)ABC>XYZ
C)ABC<XYZD)ABC>>XYZ
(15)设当前盘中某一目录路径为\A\B\C,当前目录为\A。
下列命令中肯定出错的是
A)MD\A\CB)CD..C)MD\A\B\AD)MD\A\B
(16)设A盘的目录结构如下:
根目录
│
┌────┬────┬──┴───┬─────┬────┐
││││││
ABCD1子目录DX.CQ.DATD2子目录A.FOR
││
┌────┬┴──┬───┐┌─────┼────┐
│││││││
B.PASD3子目录Y.BASA.CA1.CD4子目录XYZ.C
│
┌───┬──┴─┬───┐
││││
QR.CNA.CA.TXTB.C
如果当前盘为C盘,A盘的当前目录为\D2,则下列对A盘上文件QR.C的指定中,合法的是
A)\D2\D4\QR.CB)D4\QR.CC)A:
D4\QR.CD)A:
D2\D4\QR.C
(17)下列DOS命令中,有错误的是
A)TYPEAAB.FOR>CONB)TYPE?
AB.FOR
C)COPY*.CCOND)COPYCONPRN
(18)设当前盘为A盘,为了将当前盘当前目录下的文件AB1.TXT连接在C盘根目录下的文件XYZ.TXT的后面,正确的命令是
A)COPYC:
\XYZ.TXT+AB1.TXTB)COPYAB1.TXT>>C:
\XYZ.TXT
C)TYPEAB1.TXT>C:
\XYZ.TXTD)AB1.TXT+C:
\XYZ.TXT>C:
\XYZ.TXT
(19)下列命令中合法的是
A)DISKCOPYA:
A:
B)DISKCOPYA:
C:
C)DISKCOPYC:
A:
D)DISKCOPYC:
D:
(20)设当前盘中某一目录路径为\A\B\C\D\XU,当前目录为\A。
要将根目录下扩展名为.C的所有文件复制到当前目录下,并将扩展名改为.FOR,应使用命令
A)COPY\*.C*.FORB)COPY*.C\A\*.FOR
C)COPY*.FOR\*.CD)COPY\A\*.C*.FOR
(21)下列不正确的转义字符是
A)'\\'B)'\"C)'074'D)'\0'
(22)若有以下定义:
chara;intb;
floatc;doubled;
则表达式a*b+d-c值的类型为
A)floatB)intC)charD)double
(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)设a=1,b=2,c=3,d=4,则表达式:
A)765.12<回车>B)i=100,f=765.12<回车>
C)100<回车>765.12<回车>D)x=100<回车>y=765.12<回车>
(29)设x和y均为int型变量,则执行下的循环后,y值为
for(y=1,x=1;y<=50;y++)
{if(x>=10))break;
if(x%2==1)
{x+=5;continue;}
x-=3;
}
A)2B)4C)6D)8
(30)给出以下定义:
charx[]="abcdefg";
chary[]={'a','b','c','d','e','f','g'};
则正确的叙述为
A)数组X和数组Y等价B)数组x和数组Y的长度相同
C)数组X的长度大于数组Y的长度D)数组X的长度小于数组Y的长度
(31)以下叙述中不正确的是
A)在不同的函数中可以使用相同名字的变量
B)函数中的形式参数是局部变量
C)在一个函数内定义的变量只在本函数范围内有效
D)在一个函数内的复合语句中定义的变量在本函数范围内有效
(32)假定a和b为int型变量,则执行以下语句后b的值为
a=1;b=10;
do
{b-=a;a++;}
while(b--<0);
A)9B)-2C)-1D)8
(33)设j为int型变量,则下面for循环语句的执行结果是
for(j=10;j>3;j--)
{if(j%3)j--;
--j;--j;
printf("%d",j);
}
A)63B)74C)62D)73
(34)设有以下宏定义:
#defineN3
#defineY(n)((N+1)*n)
则执行语句:
z=2*(N+Y(5+1));后,z的值为
A)出错B)42C)48D)54
(35)设P1和P2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是
A)k=*P1+*P2;B)p2=k;C)P1=P2;D)K=*P1*(*P2);
(36)设有如下定义:
intarr[]={6,7,8,9,10};
int*ptr;
则下列程序段的输出结果为
ptr=arr;
*(ptr+2)+=2;
printf("%d,%d\n",*ptr,*(ptr+2));
A)8,10B)6,8C)7,9D)6,10
(37)以下程序的输出结果是
main()
{inti,k,a[10],p[3]:
K=5;
for(i=0;i<10;i++)a[i]=i;
for(i=0;i<3;i++)p[i]=a[i*(i+1)];
for(i=0;i<3;i++)k+=p[i]*2;
printf("%d\n",k);
}
A)20B)21C)22D)23
(38)执行以下程序段后,m的值为
inta[2][3]={{1,2,3},{4,5,6}};
intm,*p;
p=&a[0][0];
m=(*p)*(*(p+2))*(*(p+4));
A)15B)14C)13D)12
(39)有以下程序段
chararr[]="ABCDE";
char*ptr;
for(ptr=arr;ptr
main()
{union
{intk;
chari[2];
}*s,a;
s=&a;
s->i[0]=0x39;s->i[1]=0x38;
printf("%x\n",s->k);
}
输出结果是
A)3839B)3938C)380039D)390038
(42)有以下程序
#include
main()
{inta,b,c=246;
a=c/100%9;
b=(-1)&&(-1);
printf("%d,%d\n",a,b);
}
输出结果是
A)2,1B)3,2C)4,3D)2,-1
(43)设有如下定义:
int(*ptr)*();
则以下叙述中正确的是
A)ptr是指向一维组数的指针变量
B)ptr是指向int型数据的指针变量
C)ptr是指向函数的指针,该函数返回一个int型数据
D)ptr是一个函数名,该函数的返回值是指向int型数据的指针
(44)有以下程序
#include
structstu
{intnum;
charname[10];
intage;
};
voidfun(structstu*p)
{printf("%s\n",(*p).name);}
main()
{
structstustudents[3]={{9801,"Zhang",20},
{9802,"Wang",19},
{9803,"Zhao",18}};
fun(students+2);
}
输出结果是
A)ZhangB)ZhaoC)WangD)18
(45)设有以下说明和定义:
typedefunion
{longi;intk[5];charc;}DATE;
structdate
{intcat;DATEcow;doubledog;}too;
DATEmax;
则下列语句的执行结果是
printf("%d",sizeof(structdate)+sizeof(max));
A)26B)30C)18D)8
(46)有以下程序
main()
{chara[]="programming",b[]="language";
char*p1,*p2;
inti;
p1=a;p2=b;
for(i=0;i<7;i++)
if(*(p1+i)==*(p2+i))printf("%c",*(p1+i));
}
输出结果是
A)gmB)rgC)orD)ga
(47)有以下程序
viodfun(inta,intb,intc)
{a=456;b=567;c=678;}
main()
{intx=10,y=20,z=30;
fun(x,y,z);
printf("%d,/%d\n",c,d);
}
输出结果是
A)30,20,10B)10,20,30C)456,567,678D)678,567,456
(48)有以下程序
intfun(intx,inty,int*cp,int*dp)
{*cp=x+y;*dp=x-y;}
main()
{inta,b,c,d;
a=30;b=50;
fun(a,b,&c,&d);
printf("%d,%d\n",c,d);
}
输出结果是
A)50,30B)30,J50C)80,-20D)80,20
(49)有以下程序
main()
{inti,j;
for(j=10;j<11;j++)
{for(i=9;i=j-1)printf("%d",j);
}
}
输出结果是
A)11B)10C)9D)1011
(50)有以下程序
#include"atdio.h"
intabc(intu,intv);
main()
{inta=24,b=16,c;
c=abc(a,b);
printf('%d\n",c);
}
ntabc(intu,intv)
{intw;
while(v)
{w=u%v;u=v;v=w}
returnu;
}
输出结果是
A)6B)7C)8D)9
二、填空题(每空2分,共40分)
请将每空的正确答案写在答题卡【1】-【20】序号的横线上,答在试卷上不得分.
(1)自动批自理文件名为【1】。
(2)DOS命令分为内部命令与外部命令,COMP命令属于【2】命令。
(3)设当前为C盘,现要用一条DOS命令在打印机上输出A盘当前目录下所有扩展名为.DAT的文件内容。
这一条DOS命令应为【3】。
(4)要将当前盘当前目录下的子目录XYZ中所有扩展名为.BAK的文件名改成扩展名为.FOR,应使用的DOS命令为【4】。
(5)设DOS外部命令文件所在的路径均已用PATH命令打通。
现要将当前盘当前目录下的文件WST.TXT设置为只读属性,应使用的DOS命令为【5】。
(6)设x和y均为int型变量,且x=1,y=2,则以下表达式的值为【6】。
1.0+x/y
(7)设i,j,k均为int型变量,则执行完下面的for循环后,k的值为【7】。
for(i=0,j=10;i<=j;i++,j--)
k=i+j;
(8)设有以下定义的语句:
inta[3][2]={10,20,30,40,50,60},(*p)[2];
p=a;
则*(*(p+2)+1)值为【8】。
(9)以下程序的输出结果是【9】。
#include
intfun(intx,inty)
{staticintm=0,i=2;
i+=m+1;
m=i+x+y;
returnm
}
main()
{intj=4,m=1,k;
k=fun(j,m);printf("%d,",k);
k=fun(j,m);printf("%d\n",k);
}
(10)函数fun的功能是:
使一个字符串按逆序存放,请填空
voidfun(charstr[])
{charm;inti,j;
for(i=0,j=strlen(str);i<【10】;i++,j--)
{m=str[i];
str[i]=【11】;
str[j-1]=m;
}
printf("%s\n",str);
}
(11)以下程序的功能是:
从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串,请填空。
#include"ctype.h"
#include"stdio.h"
main()
{charstr[81],*sptr;
inti;
for(i=0;i<80;i++)
{str[i]=getchar();
if(str[i]=='\n')break;
}
str[i]=【12】;
sptr=str;
while(*sptr)putchar(*sptr【13】);
}
(12)以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。
例如:
输入的两个字符串分别为abcdef和abceef,则输出为-1。
请填空。
#include
main()
{charstr[100],str2[100],c;
inti,s;
printf("\ninputstring1:
\n");gest(str1);
printf("\ninputstring2:
\n");gest(str2);
i=0;
while((strl[i]==str2[i]&&(str1[i]!
=【14】))
i++;
s=【15】;
printf("%d\n",s);
}
(13)以下程序的功能是:
从键盘上输入一个字符串,把该字符串中的小写字母转换为大写字母,输出到文件test.txt中,然后从该文件读出字符串并显示出来。
请填空。
#include
main()
{FILE*fp;
charstr[100];inti=0;
if((fp=fopen("text.txt",【16】))==NULL)
{printf("can'topenthisfile.\n");exit(0);}
printf("inputastring:
\n");gest(str);
while(str[i])
{if(str[i]>='a'&&str[i]<='z')
str[i]=【17】;
fputc(str[i],fp);
i++;
}
fclose(fp);
fp=fopen("test.txt",【18】);
fgets(str,100,fp);
printf("%s\n",str);
fclose(fp);
}
(14)以下程序可以把从键盘上输入的十进制数(long型)以二到十六进制形式输出,请填空。
#include.
main()
{charb[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C'
'D','E','F'};
intc[64],d,i=0,base;
longn;
printf("enteranumber:
\n");scanf("%ld",&n);
printf("enternewbase:
\n");scanf("%d",&base);
do
{c[i]=【19】;
i++;n=n/base;
}while(n!
=0);
printf("transmitenewbase:
\n");
for(--i;i>=0;--i)
{d=c[i];
printf("%c",b【20】;
}
}_
〖完〗
1998年9月
基础知识和C语言程序设计
答案及评分标准
一、选择题(
(1)-(40)题每题1分;(41)-(50)题每题2分)
(1)B
(2)B
(3)D
(4)D
(5)B
(6)A
(7)B
(8)C
(9)D
(10)A
(11)D
(12)C
(13)A
(14)B
(15)D
(16)C
(17)B
(18)A
(19)A
(20)A
(21)C
(22)D
(23)A
(24)D
(25)B
(26)C
(27)C
(28)B
(29)C
(30)C
(31)D
(32)D
(33)B
(34)C
(35)B
(36)D
(37)B
(38)A
(39)D
(40)D
(41)A
(42)A
(43)C
(44)B
(45)B
(46)D
(47)A
(48)C
(49)B
(50)C
二、填空题(每空2分,共4分)
(1)至(5)题中所有字母都允许大,小写或大小写混合
(1)【1】AUTOEXEC.BAT
(2)【2】外部(答外部命令不扣分)
(3)【3】COPYA:
*.DATPRN
(在COPY后面与A:
*.DAT后面都至少要有一个空格)
(4)【4】RENXYZ\*.BAK*.FOR或RENAMEXYZ\*.BAK*.FOR
(在REN或RENAME后面与XYZ\*.BAK后面都至少要有一个空格)
(5)【5】ATTRIB+RWST.TXT
(在ATTRIB后面与+R后面都至少有一个空格)或ATTRIBWST.TXT+R(在ATTRIB后面与WST.TXT后面都至少要有一个空格)
(6)【6】1.0或1
(7)【7】10
(8)【8】60
(9)【9】8,17
(10)【10】strlen(str)/2或strlen(str)/2.0或0.5*strlen(str)或j或j-1
【11】str[j-1]或*(str+j-1)
(11)【12】'\0'或0
【13】++
(12)【14】'\0'或0
【15】strl[i]-str2[i]
(13)【16】"w"或"w+"或"wt"或"w+t"或"""wt+"
【17】str[i]-32或str[i]-('a'-'A'或str[i]-'a'+'A'
【18】"r"或"r+"或"r+t"或"rt+"
(14)【19】n%base
【20】[d]