全国计算机等级考试二级笔试卷基础知识和C语言程序设计
(考试时间120分钟,满分100分)
1996年9月21日选择题((1)-(40)每小题1分,(41)-(50)每小题2分,共60分)
下列各题 A),B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1) 电子数字计算机最主要的工作特点是
A) 高速度 B) 高精度
C) 存储程序与自动控制 D) 记忆力强
(2) 在微机的性能指标中,用户可用的内存储器容量通常是指
A) ROM的容量 B) RAM的容量
C) ROM和RAM的容量总和 D) CD-ROM的容量
(3) 将十六制数176转换成十进制数是
A) 366 B) 268 C) 374 D) 270
(4) 800个24×24点阵汉字字型库所需要的存储容量是
A) 7.04KB B) 56.25KB C) 7200KB D) 450KB
(5) 下列说法中正确的是
A) 计算机体积越大,其功能就越强
B) 在微机性能指标中,CPU的主频越高,其运算速度越快
C) 两个显示器屏幕大小相同,则它们的分辨率必定相同
D) 点阵打印机的针数越多,则能打印的汉字字体就越多
(6) 某片软盘上已染有病毒,为防止该病毒传染计算机系统,正确的措施是
A) 删除该软盘上所有程序 B) 给该软盘加上写保护
C) 将该软盘放一段时间后再用 D) 将该软盘重新格式化
(7) 下列设备中,只能作为输出设备的是
A) CON B) NUL C) PRN D) 鼠标器
(8) 假设DOS系统文件与所有外部命令文件都在C盘根目录中,下列DOS命令中能正确执行的是
A) DEL IBMBIO.COM B) DISKCOPY C,A:
C) RD C:\ D) COPY COMMAND.COM A:
(9) 若当前盘为C盘,在A盘目录\MY中只有文本文件FN.DAT,A盘当前目录为根目录,则查看该文件的内容可使用的命令是
A) TYPE MY\FN.DAT B) TYPE A:\MY\*.*
C) TYPE \MY\FN.DAT D) TYPE A:\MY\FN.DAT
(10) 设所有的外部命令文件在C盘目录\DOS下.若当前盘为B盘,则要在容量为1.2MB的驱动器A上格式化一张容量为360KB的软盘,正确的命令是
A) FORMAT A:\360 B) C:\DOS\FORMAT A:/4
C) FORMAT A:\4 D) C:\DOS\FORMAT A:\4
(11) 有一张DOS启动软盘,在根目录下用DIR命令显示出文件总数为20个,若用COPY命令把该软盘根目录下的文件复制到另一张软盘上,则最多能复制的文件个数是
A) 18 B) 19 C) 20 D) 22
(12) 为列出A盘当前目录中文件标识符不超过三个字符、扩展名为任意的文件清单,可选用的命令是
A) DIR*.* B) DIR A:.* C) DIR A:*, D) DIR A:\*.*
(13) 为了将A盘当前目录\USER\AA中所有扩展名为.DAT的文件以同名复制 到A盘目录\USER中,若当前盘为C盘,则可选用的命令是
A) COPY A:\USER\AA*.DAT B) COPY A:\USER\AA*.DAT A:USER
C) COPY A:\USER\AA*.DAT A: D) COPY A:\USER\AA*.DAT A:\USER
(14) 对计算机软件正确的态度是
A) 计算机软件不需要维护
B) 计算机软件只要能复制得到就不必购买
C) 受法律保护的计算机软件不能随便复制
D) 计算机软件不必有备份
(15) 下列DOS命令中,正确的是
A) TYPE A:\*.FOR B) COPY A:\*.FOR>PRN
C) TYPE A:\*.FOR>PRN D) COPY A:\*.FOR PRN
(16) 下列四组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
(17) 在计算机内部,一切信息存取、处理和传送的形式是
A) ASCII码 B) BCD码 C) 二进制 D) 十六进制
(18) 计算机的软件系统一般分为
A) 系统软件、应用软件与各种字处理软件
B) 操作系统、用户软件与管理软件
C) 系统系统与应用软件
D) 操作系统、实时系统与分时系统
(19) 与二进制数101.01011等值的十六制数为
A) A.B B) 5.51 C) A.51 D) 5.58
(20) 如果按字长来划分,微机可以分为8位机、16位机、32位机和64位机。所谓32位机是指该计算机所用的CPU
A) 同时能处理32位二进制数 B) 具有32位的寄存器
C) 只能处理32位二进制定点数 D) 有32个寄存器
(21) 下列语句中符合C语言语法的赋值语句是
A) a=7+b+c=a+7; B) a=7+b++=a+7; C) a=7+b,b++,a+7 D) a=7+b,c=a+7;
(22) 在C语言中,要求运算数必须是整型的运算符是
A) % B) / C) < D) !
(23) 已知字母A的ASCII码为十进制的65,下面程序的输出是
A) 67,D B) B,C C) C,D D) 不确定的值
main()
{ char ch1,ch2;
ch1='A'+'5'-'3';
ch2='A'+'6'-'3';
printf("%d,%c\n",ch1,ch2);}
(24) 下面程序的输出是
A) 0 B) 1 C) 3 D) 不确定的值
main()
{ int x=10,y=3;
printf("%d\n",y=x/y);}
(25) 若执行下面的程序时从键盘上输入3和4,则输出是
A) 14 B) 16 C) 18 D) 20
main()
{ int a,b,s;
scanf("%d %d",&a,&b);
s=a;
if(a<b)s=b;
s=s*s;
printf("%d\n",s);}
(26) 下面的程序
A) 有语法错误不能通过编译
B) 输出* * * *。
C) 可以通过编译,但是不能通过连接,因而不能运行。
D) 输出# # # #。
main()
{ int x=3,y=0,z=0;
if(x=y+z)printf("* * * *");
else printf("# # # #");}
(27) 下面的程序
A) 输出的是1 B) 输出的是1和-2 C) 输出的是3和0 D) 是死循环
main()
{ int x=3;
do {
printf("%d\n",X-=2);
}while(!(--x));}
(28) 下面程序的输出是
A) 17 B) 18 C) 23 D) 24
main()
{ int x=023;
printf(%d\n",--x);}
(29) 若执行下面的程序时从键盘上输入5,则输出是
A) 7 B) 6 C) 5 D) 4
main()
{ int x;
scanf("%d",&x);
if(x++>5) printf("%d\n",x);
else printf("%d\n",x--);}
(30) 下面程序的输出是
A) 3 B) 4 C) 1 D) 2
main()
{ int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
printf("%d\n",*(p+2));}
(31) 执行下面程序中的输出语句,a的值是
A) 65 B) 20 C) 15 D) 10
main()
{ int a;
printf("%d\n",(a=3*5,a*4,a+5));}
(32) 下面程序的输出是
A) 0 1 2 3 B) 0 4 0 10 C) 0 4 5 15 D) 1 4 5 15
main()
{ enum team {my,your=4,his,her=his+10};
printf("%d %d %d %d\n",my,your,his,her);}
(33) 下面程序的输出是
A) 0 0 3 B) 0 1 2 C) 1 0 3 D) 1 1 2
main()
{ int a=-1,b=4,k;
k=(a++<=0)&&(!(b--<=0));
printf("%d %d %d\n",k,a,b);}
(34) 下面的程序片段所表示的数学函数关系是上面程序片段的输出结果是
┌ -1(x<0) ┌ 1 (x<0)
│ │
A) y = ┤ 0 (x=0) B) y = ┤-1 (x=0)
│ │
└ 1 (x>0) └ 0 (x>0)
┌ 0 (x<0) ┌ -1(x<0)
│ │
C) y = ┤-1 (x=0) D) y = ┤ 1 (x=0)
│ │
└ 1 (x>0) └ 0 (x>0)
y=-1;
if(x!=0)
if(x>0) y=1;
else y=0
(35) 下面函数的功能是
A) 求字符串的长度 B) 比较两个字符串的大小
C) 将字符串x复制到字符串y D) 将字符串x连接到字符串y后面
int funl(char * x)
{ char * y=x;
while(*y++);
return(y-x-1);}
(36) 若fp是指向某文件的指针,且已读到该文件的末尾,则C语言函数feof(fp)的返回值是
A) EOF B) -1 C) 非零值 D) NULL
(37) 根据下面的定义,能打印出字母M的语句是
A) printf("%c\n",class[3].name);
D) printf("%c\n",class[2].name[0]);
B) printf("%c\n",class[3].name[1]);
C) printf("%c\n",class[2].name[1]);
struct person { char name[9]; int age;};
struct person class[10]={"John",17,
"Paul",19,
"Mary",18,
"Adam",16};
(38) 下面程序的输出是
A) -1 B) 0 C) 1 D) 不确定的值
main()
{ int x=100,a=10,b=20,ok1=5,ok2=0;
if(a<b)
if(b!=15)
if(! ok1)
x=1;
else
if(ok2)x=10;
x=-1;
printf("%d\n",x);}
(39) 下面程序的输出是
A) xyzabcABC B) zabcABC C) yzabcABC D) xyabcABC
#include<stdio.h>
#include<string.h>
main()
{ char *p1="abc",*p2="ABC",str[50]="xyz";
strcpy(str+2,strcat(p1,p2));
printf("%s\n",str);}
(40) 下面程序的输出是
A) 741 B) 852 C) 963 D) 875421
main()
{ int y=9;
for( ; y>0; y--)
{ if(y%3==0)
{ printf("%d",--y);continue;}
}.
}
(41) 下面程序的输出是
A) 100 B) 160 C) 120 D) 64
main()
{ char x=040;
printf("%d\n",x=x<<1);}
(42) 下面程序的输出是
A) 0 B) 1 C) 3 D) 6
main()
{ struct cmplx { int x; int y; } cnum[2]={1,3,
2,7};
printf("%d\n",cnum[0].y /cnum[0].x * cnum[1].x);}
(43) 下面程序的输出是
A) 23 B) 26 C) 33 D) 36
int aa[3][3]={{2},{4},{6}};
main()
{ int i,* p=&aa[0][0];
for(i=0; i<2;i++)
{ if(i==0)
aa[i][i+1]=*p+1;
else
++p;
printf("%d",*p);}
}
(44) 下面程序的输出是
A) 23 B) 24 C) 25 D) 26
void prtv(int *x)
printf("%d\n",++*x);}
main()
{ int a=25;
prtv(&a);}
(45) 下面程序的输出是
A) 3 B) 4 C) 6 D) 9
fun3(int x)
static int a=3;
a+=x;
return(a);}
main()
{ int k=2,m=1,n;
n=fun3(k);
n=fun3(m);
printf("%d\n",n);}
(46) 已知字符0的ASCII码为十六进制的30,下面程序的输出是
A) 6 B) 9 C) 0 D) 3
main()
{ union { unsigned char c;
unsigned int i[4];
} z;
z.i[0]=0x39;
z.i[1]=0x36;
printf("%c\n",z.c);}
(47) 下面程序的输出是
A) 60 B) 68 C) 99 D) 108
main()
{ int a[3][4]={ 1,3,5,7,9,11,13,15,17,19,21,23};
int ( *p)[4]=a,i,j,k=0;
for(i=0; i<3; i++)
for(j=0; j<2; j++)
k=k+*( *(p+i)+j);
printf("%d\n",k);}
(48) 下面程序的输出是
A) 1 B) 2 C) 7 D) 10
int m=13;
int fun2(int x,int y)
{ int m=3;
return(x*y-m);
}
main()
{ int a=7,b=5;
printf("%d\n",fun2(a,b)/m);}
(49) 下面程序的输出是
A) 32 B) 16 C) 8 D) 24
typedef union { long x[2];
int y[4];
char z[8];
} MYTYPE;
MYTYPE them;
main()
{ printf("%d\n",sizeof(them));}
(50) 下面程序的输出是
A) ABCD B) A C) D D) ABCD
BCD B C ABC
CD C B AB
D D A A
char s[]="ABCD";
main()
{ char *p;
for(p=s; p<s+4; p++)
printf("%s\n,p);}
二、填空题(每空2分,共40分)
请将每空的正确答案写在答题卡上【1】-【20】序号后的横线上,答在试卷上不得分。
(1) 8位无符号二进制数能表示的最大十进制数 【1】 。
(2) 将原码表示的有符号二进制数11001101转换成十进制数是 【2】 。
(3) DOS系统的命令处理程序是 【3】 。
(4) 若当前盘为A盘,要显示C盘的当前目录又不改变当前盘,使用的命令是 【4】 。
(5) 硬盘C的目录结构示意图如下
其中AUTOEXEC.BAT的内容为
PROMPT $p$g
CD D1
现用C盘启动后,系统提示符为 【5】 。
(6) 下面程序的输出是 【6】 。
main()
{ int x=2;
while(x--);
printf("%d\n",x);}
(7) 下面程序的输出是 【7】 。
main()
{ int a[]={ 2,4,6},*prt=&a[0],x=8,y,z;
for(y=0; y<3; y++)
z=(*(prt+y)<x)? *(ptr+y):x;
printf("%d\n",z);}
(8) 下面程序的输出是 【8】 。
main()
{ int arr[10],i,k=0;
for( i=0; i<10; i++)
arr[i]=i;
for( i=1; i<4; i++)
k+=arr[i]=i;
printf( '%d\n",k);}
(9) 已知函数isalpha(ch)的功能是判断自变量ch是否是字母,若是,函数值为1,否则为0。下面程序的输出是 【9】 。
#include<xtype.h>
#include<string.h>
void fun4( char str[])
{ int i,j;
for(i=0,j=0; str[i]; i++)
if(isalpha(str[i])) str[j++]=str[i];
str[j]='\0';}
main()
{ char ss[80]="It is!";
fun4(ss);
printf( '%s\n",ss);}
(10) 下面程序的输出是 【10】 。
#define PR(ar) printf("%d",ar)
main()
{ int j,a[]={ 1,3,5,7,9,11,13,15},*p=a+5;
for(j=3; j; j--)
{ switch(j)
{ case 1:
case 2,PR(*p++); break;
case 3,PR(*(--p));}
}
}
(11) 下面程序的输出是 【11】 。
unsigned fun6( unsigned num)
{ unsigned k=1;
do {
k*=num%10;
num/=10;
} while(num);
return(k);}
main()
{ unsigned n=26;
printf("%d\n",fun6(n));
}
(12) 下面程序的输出是【12】 。
long fun5(int n)
{ long s;
if((n==1)||(n==2))
s=2;
else
s=n+fun5(n-1);
return(s);}
main()
{ long x;
x=fun5(4);
printf("%ld\n",x);}
(13) 下面invert函数的功能是将一个字符串str的内容颠倒过来。请填空。
#include <string.h>
void invert(char str[])
{ int i,j,【13】 ;
for(i=0,j=strlen(str) 【14】 ; i<j; i++,j--)
{ k=str[i]; str[i]=str[j]; str[j]=k;}
}
(14) 下面min3函数的功能是:计算单向循环链表first中每3个相邻结点数据域中值的和,返回其中最小的值。请填空。
struct node {int data; struct node * link;};
int min3(struct node * first)
{ struct node *p=first;
int m,m3=p->data+p->link->data+p->link->link->data;
for(p=p->link; p! =first; p= 【15】 )
int m,m3=p->data+p->link->data+p->link->link->data;
{ m=p->data+p->link->data+p->link->link->data;
if( 【16】 ) m3=m;}
return(m3);}
(15) 下面h函数的功能是计算如下数学函数H的值。请填空。
double fgh(double( *f)(double a)< double( *g)(double b),
double x,double y)
{ return(【17】 );}
double h(double a,double b)
return(fgh( sin,cos,a,b)*fgh( 【18】] )); }
(16) 下面pi函数的功能是根据以下的公式,返回满足精度ε要求的π值。请填空。
double pi(double eps)
{ double s=0.0,t=1.0;
int n;
for( 【19】 ; t>eps; n++)
{ s+=t;
t=n*t/(2*n+1);}
return(2.0 * 【20】 );}
『完』
1996年9月二级C语言笔试试卷参考答案一 选择题((1)~(40)题每题1分,(41)~(50)题每题2分,共60分)
(1)C
(2)B
(3)C
(4)B
(5)B
(6)D
(7)C
(8)D
(9)D
(10)B
(11)C
(12)B
(13)D
(14)C
(15)D
(16)B
(17)C
(18)C
(19)D
(20)A
(21)D
(22)A
(23)A
(24)C
(25)B
(26)D
(27)B
(28)B
(29)B
(30)A
(31)C
(32)C
(33)C
(34)C
(35)A
(36)D
(37)D
(38)A
(39)D
(40)B
(41)D
(42)D
(43)A
(44)D
(45)C
(46)B
(47)A
(48)B
(49)C
(50)A
二、填空题(每空2分,共40分)
(1)【1】 225
(2)【2】 -77
(3)【3】 COMMAND.COM
(4)【4】 CD C:
(5)【5】 C:\D1>
(6)【6】 -1
(7)【7】 6
(8)【8】 12
(9)【9】 It is
(10)【10】 9911
(11)【11】 12
(12)【12】 9
(13)【13】 k 14 -1
(14)【15】 p->link
【16】 mm或m<=m3或m3>=m
(15)【17】 f(xy)/g(y-x)或(*f)(x+y)/g(y-x)或f(x+y)/(*g)(y_x)或(*f)
或(*f)(x+y)/(*g)(y-x)
【18】 cos,sin,a,b
(16)【19】 n=1
【20】 s