1999年4月全国计算机等级考试二级C语言笔试试题
一、选择题((1)-(40)每个选项1分,(41)-(50)每个选项2分,共60分)。
下列各题A)、B)、C)、D)四个有选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)微型计算机的性能主要取决于
A)内存B)中央处理器C)硬盘D)显示卡
(2)有一个数值152,它与十六进制数6A相等,那么该数值是
A)二进制数B)八进制数C)十进制数D)四进制数
(3)使用超大规模集成电路制造的计算机应该归属于
A)第一代B)第二代C)第三代D)第四代
(4)已知英文字母a的ASCII代码值是十六进制数61H,那字母子b 的ASCII代码值是
A)34H B)54H C)24H D)64H
(5)一片存储容量是1.44MB的软磁盘,可以存储大约140万个
A)ASCII字符 B)中文字符C)磁盘文件D)子目录
(6)在MS-DOS环境中同时按下[Ctrl]和[Break]两个键,其作用是
A)终止当前操作B)暂停当前操作C)关机D)热启动
(7)将二进制数10000001转换为十进制数应该是
A)127 B)129 C)126 D)128
(8)磁盘处于写保护状态,那么磁盘中的数据
A)不能读出,不能删改,也不能写入新数据 B)可以读出,不能删改,也不能写入新数据
C)可以读出,可以删改,但不能写入新数据 D)可以读出,不能删改,但可以写入新数据
(9)微型机启动后,DOS提示符是C:\>,现提示符变为C:\USER>,则说明刚执行过命令
A)PROMPT B)PROMPT USER C)PROMPT $P$G D)CD USER
(10)MS-DOS文件系统目录的组织形式属于
A)关系型结构 B)网络型结构 C)树型结构 D)直线型结构
(11)应用软件系统TH的总容量大约1MB,其主要程序文件存放在C:\TH目录中,而数据文件存放在C:\TH\DATA目录中。如要将它们完整地复制到A盘,应该使用的命令是
A)XCOPY C:\TH A:\ B)XCOPY C:\TH A:\ /S C) XCOPY C:\TH A:\ /M D)XCOPY C:\TH A:\ /P
(12)执行COPY A.+B.TXT这个DOS命令后,得到的磁盘文件是
A)A.TXT B)B.TXT C)AB.TXT D)A+B.TXT
(13)在WINDOWS中,将一个应用程序窗口最小化之后,该应用程序
A)仍在后台运行 B)暂时停止运行 C)完全停止运行 D)出错
(14)CD-ROM属于
A)感觉媒体 B)表示媒体 C)表现媒体 D)存储媒体
(15)在因特网(Internet)中电子公告板的缩写是
A)FTP B)WWW C)BBS D)E-mail
(16)设x、y、z和k都是int型变量,则执行表达式:x=(y=4,z=16,k=32)后,x的值为
A)4 B)16 C)32 D)52
(17)设有如下的变量定义:
int i=8,k,a,b;
unsinged long w=5
double x=1,42,y=5.2
则以下符合C语言语法的表达式是
A)a+=a-=(b=4)*(a=3) B)x%(-3); C)a=a*3=2 D)y=float(i)
(18)假定有以下变量定义:
int k=7,x=12;
则能使值为3 的表达式是
A)x%=(k%=5) B)x%=(k-k%5) C)x%=k-k%5 D)(x%=k)-(k%=5)
(19)以下叙述中正确的是
A)输入项可以是一个实型常量,如scanf(“%f,”3.5)
B)只有格式控制,没有输入项,也能正确输入数据到内存,例如:scanf(“a=%d,b=%d”)
C)当输入一个实型数据时,格式控制部分可以规定小数点后的位数,例如:scanf(“%4.2f”,&f)
D)当输入数据时,必须指明变量地址,例如:scanf(“%f”,&f)
(20)设x和y均为int型变量,则以下语句:x+=y;y=x-y;x-=y;的功能是
A)把x和y按从大到小排列 B)把x和y按从小到大排列
C)无确定结果 D)交换x和y中的值
(21)以下程序的输出结果是
A)10 10B)12 12C)11 10D)11 13
main( )
{ int a=12,b=12;
printf(“%d %d\n”,--a,++b);
}
(22)以下程序运行后,输出结果是
A)cde B)字符c的ASCII码值 C)字符c的地址 D)出错
main( )
{ char *s=“abcde”;
s+=2;
printf(“%ld\n”,s);
}
(23)以下程序输出结果是
A)7 B)6 C)5 D)4
main( )
{ int m=5;
if(m++>5)printf(“%d\n”,m);
else printf(“%d\n”,m--);
}
(24)当a=1,b=3,c=5,d=4时,执行下面一段程序后,x的值为
A)1 B)2 C)3 D)6
if(a<b=
if(c>d) x=1;
else
if(a<c=
if(b>d) x=2;
else x=3;
else x=3;
else x=6;
else x=7;
(25)在执行以下程序时,如果从键盘上输入:ABCdef<回车>,则输出为
A)ABCdef B)abcDEF C)abc D)DEF
#include
main( )
{ char ch;
while((ch=getchar( ))!=’\n’)
{ if(ch>=’A’ && ch<=’z’)ch=ch+32; else if(ch>=’a’ && ch<’z’)ch=ch+32; printf(“%c”,ch); } printf(“\n”); }
(26)下面能正确进行字符串赋值操作的语句是
A)char s[5]={“ABCDE”} B)char s[5]={‘A’、’B’、’C’、’D’、’E’};
C) char *s;s=“ABCDEF” D)char *s; scanf(“%s”,s);
(27)当执行以下程序段时
A)循环体将执行一次 B)循环体将执行两次
C)循环体将执行无限次 D)系统将提示有语法错误
x=-1;
do { x=x*x;} while(!x);
(28)执行以下程序后,输出的结果是
A)-1B)1 C)8 D)0
main( )
{ int y=10;
do {y--;} while(--y);
printf(“%d\n”,y--);
}
(29)在下列选项中,没有构成死循环的程序段是
A) int i=100
while (1)
{i=i%100+1;
if(i>100)break;
}
B) for(;;);
C)int k=1000;
do{++k} while (k>=1000)
D)int s=36
While(s);--s;
(30)执行语句:for(i=1;i++<4;)后;变量i的值是
A)3 B)4 C)5 D)不定
(31)以下程序运行后,如果从键盘上输入abcde<回车>,则输出结果为
A)8 B)7 C)6 D)5
#include
#include
func(char str[ ] )
{ int num =0;
while(*(str+num!=’\0’) num+ +;
return(num);
)
main( )
{char str[10],*p=str;
gets(p); printf(“%d\n”,func(p));
}
(32)运行以下程序后,如果从键盘上输入china#<回车>,则输出结果为
A)2,0B)5,0C)5,5D)2,5
#include
main( )
{int v1=0,v2=0;
char ch;
while((ch=getchar( ))!=’#’)
switch(ch)
{case ‘a’;
case ‘h’;
default; v1+ +;
case ‘0’; v2+ ;+
}
printf(“%d,%d\n”,v1,v2);
}
(33)若以下程序所生成的可执行文件名不;当打入以下命令执行该程序时;
FILE1 CHINA BEIJING SHANGHAI
程序的输出结果是
A)CHINA BEIJIANG SHANGHAI B)FILE1 CHINA BEIJING
C)C B S D)F C B
main(int argc,char *argv[])
{ while(argc-->0)
{ ++argv; printf(“%s”,*argv);}
}
(34)下面程序的运行结果是
A)12ba56 B)6521 C)6 D)62
main()
{ char ch[7]={“65ab21”};
int i,s =0
for(i=0;ch[i]>=’0’&&ch[i]<’9’;i+=2) s=10*s+ch[i]-‘0’ printf(“%d\n”,s); }
(35)运行下面的程序,如果从键盘上输入: ab <回车>
c <回车>
def <回车>
则输出结果为
A) a B)a C)ab D)avcdef
b b c
c c d
d d
e
f
#include
#define N 6
main( )
{ char c[N];
int i=o
for( ;i<N;c[i]=getchar(),i++=
for( i=0;i>N;i++) putchar(c[i]); printf(“\n”);
(36)以下程序运行后输出结果是
A)8 B)7 C)6 D)5
#include
ss(char *s)
{ char *p=s;
while(*p)p++;
return(p-s);
}
main( )
{ char *a=”abded”;
int i;
i=ss(a);
printf(“%d\n”,i);
}
(37)以下程序运行后,输出结果是
A)8,15 B)8,16 C)8,17 D)8,8
func(int a,int b)
{ static int m=0,i=2;
i+=m+1;
m=i+a+b
return(m);
}
main()
{ int k=4,m=1,p;
p=func(k,m);printf(“%d,”,p);
p=func(k,m);printf(“%d\n”,p);
}
(38)以下程序运行后,输出结果是
A)49.5 B)9.5 C)22.0 D)45.0
#include
#define PT 5.5
#define S(x) PT*x*x
main( )
{ int a=1,b=2;
printf(“%4.1f\n”,S(a+b))
}
(39)以下程序运行后,输出结果是
A)ABCDEFG B)CDG C)abcdefgh D)abCDefGh
main( )
{ static char a[]=”ABCDEFGH”,b[]=”abCDefGh”;
char p1,p2;
int k;
p1=a; p2=b;
for(k=0;k<-7;k++) if(*(p1+k)==*(p2+k)) printf(“%c”,*(p1+k)); printf(“\n”); }
(40)以下程序执行后,a的值是
A)4 B)1 C)0 D)运行时出错,无定值 mian()
{ int a,k=4,m=6,*p1=&k,*p2=&m; a=p1= =&m;
printf(“%d\n”,a); }
(41)以下程序运行后,输出结果是
A=84 B=99 C=95 D=44 int d=1;
fun(int p) { int d=5; d+=p++; printf(“%d”,d); }
main()
{int a=3; fun(a); d+=a++;
printf(“%d\n”,d); }
(42)以下程序运行后,输出结果是
A=6385 B=22 C=33 D=693825
main()
{char ch[2][5]={“693”,”825”},*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); }
(43)以下程序运行后,输出结果是
A=1 B=7 C=9 D=11
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);
printf(“%d\n”,*p); }
(44)设有如下定义:
int a=1,b=2,c=3,d=4,m=2,n=2; 则执行表达式:(m=a>b)&&(n=c>d)后,n的值为
A=1 B=2 C=3 D=0
(45)在执行以下程序时,为了使输出结果为,t=4则给a和b输入的值应满 足的条件是
A=a>b B=a<b<0 C=0<a<b D=0>a>b
main( )
{ int s,t,a,b; scanf(“%d,%d”,&a,&b); s=1; t=1; if(a<0)s=s+1; if(a>b)t=s+1;
else if(a= =b)t=5;
else t=2*s;
printf(“t=%d\n”,t);
}
(46)以下程序的输出结果是
A=x=4 B=x=8 C=x=6 D=x=12
main( )
{ int i,j,x=0;
for(i=0,i<2;i++) { x ++; for(j=0;j<3;j++) { if(j%2)continue; x++; } x++ } printf(“x=%d\n”,x); }
(47)以下程序运行后,输出结果是
A=1234567 B=7654321 C=1711717 D=7177171
#include <stdio.h>
#include <string.h> fun(char s w, int n)
{ char t,* s1,* s2; s1=w;s2=w+n-1;
while(s1<s2= { t=*s1++; *s1=s2--; *s2=t; }
main()
{ char *p; fun(p,strlen(p));
puts(p); }
(48)运行以下程序后,如果从键盘上输入65 14>回车>,则输出结果为
A=m=3 B=m=2 C=m=1 D=m=0
main ( )
{int m,n;
printf{“Enter m,n:”}; scanf(“%d%d,&m,&n”);
while(m!=n)
{while(m>n)m-=n;
while(n>m)n-=m;
}
printf(“m=%d\n”,m);
}
(49)以下程序运行后,如果从键盘上输入:
book<回车>
book<空格><回车>
则输出结果是
A=*8 B=#9 C=#6 D=*9
#include
main()
{char a1[80],a2[80],*s1=a1,*s2=a2;
gets(s1); gets(s2);
if(!strcmp(s1,s2)) printf(“*”);
else printf(“#”);
printf(“%d\n”,strlen(strcat(s1,s2)))
}
(50)以下程序运行后,如果从键盘上输入:
A=10000 B=10010 C=00110 D=10100
main( )
{ int y=18,i=0,j,a[8];
do
{ a[i]=y%2;i++;
y=y\2;
} while(y>1=1);
for(j=i-1;j>=0;j--) printf(“%d”,a[j]);
printf(“\n”)
}
二、填空题(每空2分,共40分)
请将每空的正确答案写在答题卡 1 至 20 序号的横线上,答在试卷上不得分。
(1)DOS中的自动批处理文件的全名是1。
(2)在DOS启动盘中,除COMMAND.COM外,还有两个必备的系统文件,它们是MSDOS.SYS(或IBMDOS.COM) 与 2 。
(3)在DOS下,要将当前目录中AB.TXT文件设置为只读属性,应该使用的完整命令行是 3 。
(4)在DOS下,要查看当前目录中所有批处理文件的总字节数,应该使用的完整命令行是 4 。
(5)计算机病毒除有破坏性、潜伏性和激发性外,还有一个最明显的特性是 5 。
(6)若想通过以下输入语句使a中存放字符串1234,b中存放字符5,则输入数据的形式应该是 6 。
.char a[10],b;
scanf(“a=%s b=%c”,a,&b);
(7)下面程序的输出结果是 7 。
char b[]=”ABCD”;
main( )
{ char *chp;
for(chp=b; *chp; chp+=2) printf(“%s”,chp);
printf(“\n”);
}
(8)下面程序的输出结果是 8 。
#define MAX 3
int a[MAX];
main( )
{ fun1( ); fun2(a);printf(“\n”);}
fun1( )
{ int k,t=0;
for(k=0;k<MAX;k++,t++= a[k]=t+t;
=
fun2(int b[])
{ int k;
for(k=0;k>MAX;k++)printf(“%d”,*(b+k))
}
(9)下面程序的输出是 9 。
main( )
{int a[10]={19,23,44,17,37,28,49,36},* p;
p=a;
printf(“%d\n”,(p+=3)[3]);
}