全国计算机等级考试二级笔试试卷基础部分和C语言程序设计
(考试时间:120分钟,满分100分)
2001年9月一、选择题((1)-(40)题每题1分,(41)-(50)题每题2分,共60分)
下列各题A),B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。
(l) 在计算机系统中,一个字节的二进制位数为
A) 16 B) 8 C) 4 D) 由 CPU的型号决定
(2) 存储 16×16点阵的一个汉字信息,需要的字节数为
A) 32 B) 64 C) 128 D) 256
(3) 英文大写字母B的ASCII码为42H,英文小写字母b的ASCII码为
A) 43H B) 84H C) 74H D) 62H
(4) 下列计算机语言中,CPU能直接识别的是
A) 自然语言 B) 高级语言 C) 汇编语言 D)机器语言
(5) 在计算机领域中,所谓“裸机”是指
A) 单片机 B) 单板机
C) 不安装任何软件的计算机 D) 只安装操作系统的计算机
(6) 下列带有通配符的文件名中,能代表文件ABCDEF.DAT的是
A) A*.* B)?F.* C) *.? D) AB?.*
(7) 下列DOS命令中,执行时不会发生错误的是
A) TYPE *.TXT B) DIR *.TXT
C) REN A.TXT A:b.TXT D) COPY *.TXT>CON
(8) 设当前盘为C盘,C盘的当前目录为\A\B\C。下列DOS 命令中能正确执行的是
A) MD \ B) MD A:\ C) MD \A\B D) CD C:
(9) 为了将C:USER中的文件FILE.TXT同名复制到A盘根目录下,下列DOS命令中能正确执行的是
A) TYPE C:\USER\FILE.TXT > A:\FILE.TXT
B) TYPE C:\USER\FILE.TXT A:\FILE.TXT
C) COPY C:\USER\FILE.TXT > A:\FILE.TXT
D) COPY C:\USER\FILE.TXT
(10) 在Windows下,当一个应用程序窗口被最小化后,该应用程序
A) 终止运行 B) 暂停运行 C) 继续在后台运行 D) 继续在前台运行
(11) 在Windows环境下,下列操作中与剪贴板无关的是
A) 剪切 B) 复制 C) 粘贴 D) 删除
(12) 在Windows环境下,实现窗口移动的操作是
A) 用鼠标拖动窗口中的标题栏 B) 用鼠标拖动窗口中的控制按钮
C) 用鼠标拖动窗口中的边框 D) 用鼠标拖动窗口中的任何部位
(13) 一台计算机连入计算机网络后,该计算机
A) 运行速度会加快 B) 可以共享网络中的资源
C) 内存容量变大 D) 运行精度会提高
(14) 不能作为计算机网络中传输介质的是
A) 微波 B) 光纤 C) 光盘 D) 双绞线
(15) 下列各项中,不属于多媒体硬件的是
A) 声卡 B) 光盘驱动器 C) 显示器 D) 多媒体制作工具
(16) 在C语言中,合法的长整型常数是
A) OL B) 4962710 C) 324562& D) 216D
(17) 以下有4组用户标识符,其中合法的一组是
A) For B) 4d C) f2_G3 D) WORD
-sub DO IF void
Case Size abc define
(18) 以下选项中合法的字符常量是
A)“B” B) ‘\010’ C) 68 D) D
(19) 假定x和y为 double型,则表达式x=2,y=x+3/2的值是
A) 3.500000 B) 3 C) 2.000000 D) 3.000000
(20) 以下合法的赋值语句是
A) x=y=100 B) d--; C) x+y; D) c=int(a+b);
(21) 设正x、y均为整型变量,且x=10 y=3,则以下语句的输出结果是
pprintf(”%d,%d\n”,x--,--y);
A) 10,3 B) 9.3 C) 9.2 D)10.2
(22) x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是
A) INPUT x、y、z; B) scanf(“%d%d%d”,&x,&y,&z);
C) scanf(“%d%d%d”,x,y,z); D) read(“%d%d%d”,&x,&y,&z);
(23) 以下程序的输出结果是
main()
{ int a=3;
printf(“%d\n”,(a+a-=a*a) );
}
A) –6 B)12 C) 0 D) -12
(24) 设 a、b、C、d、m、n均为 int型变量,且 a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式 (m=a>b)&&(n=c>d)运算后,n的值位为
A) 0 B) 1 C)2 D) 3
(25) 阅读以下程序:
main()
{ int x;
scanf(“%d”,&x);
if(x--<5) printf(“%d”’x);
else printf(“%d”’x++);
}
程序运行后,如果从键盘上输人5,则输出结果是
A)3 B) 4 C) 5 D) 6
(26) 假定w、x、y、z、m均为int型变量,有如下程序段:
w=1; x=2; y=3; z=4;
m=(w<x)?w; x; m=(m<y)?m;y; m=(m<z)?m; z;
则该程序运行后,m的值是it
A) 4 B) 3 C) 2 D) 2
(27) t为int类型,进人下面的循环之前,t的值为0
while( t=l )
{ …… }
则以下叙述中正确的是
A) 循环控制表达式的值为0 B) 循环控制表达式的值为1
C) 循环控制表达式不合法 D) 以上说法都不对
(28) 以下程序的输出结果是
main()
{ int num= 0;
while(num<=2)
{ num++; printf(“%d\n”,num);
}
A) 1 B) 1 C)1 D) l
2 2 2
3 3
4
(29) 以下各选项企图说明一种新的类型名,其中正确的是
A) typedef v1 int; B) typedef v2=int;
C) typedefv1 int v3; D) typedef v4,int;
(30) 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是
A) 地址传递 B) 单向值传递
C) 由实参传给形参,再由形参传回实参 D) 传递方式由用户指定
(31) 以下函数值的类型是
fun ( float x )
{ float y;
y= 3*x-4;
return y;
}
A) int B) 不确定 C) void D) float
(32 ) 设有以下函数:
f ( int a)
{ int b=0;
static int c = 3;
b++; c++;
return(a+b+c);
}
如果在下面的程序中调用该函数,则输出结果是
main()
{ int a = 2,i;
for(i=0;i<3;i++) printf(“%d\n”,f(a));
}
A) 7 B) 7 C) 7 D) 7
8 9 10 7
9 11 13 7
(33) 以下程序的输出结果是
main()
{ char c=’z’;
printf(“%c”,c-25);
}
A) a B) Z C) z-25 D) y
(34) 以下选项中,非法的字符常量是
A) ‘\t’ B) ‘\17’ C)“n” D) ‘\xaa’
(35) 若有说明:int i,j=2,*p=&i;,则能完成i=j赋值功能的语句是
A) i=*p; B) p*=*&j; C) i=&j; D) i=**p;
(36) 以下定义语句中,错误的是
A) int a[]={1,2}; B) char *a[3];
C) char s[10]=”test”; D) int n=5,a[n];
(37) 假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是
A) 3 B) 6 C) 10 D) 20
(38) 以下程序的输出结果是
main()
{ int i,a[10];
for(i=9;i>=0;i--) a[i]=10-i;
printf(“%d%d%d”,a[2],a[5],a[8]);
}
A) 258 B) 741 C) 852 D) 369
(39) 以下数组定义中不正确的是
A) int a[2][3];
B) int b[][3]={0,1,2,3};
C) int c[100][100]={0};
D) int d[3][]={{1,2},{1,2,3},{1,2,3,4}};
(40) 以下程序的输出结果是
main()
{ int a[4][4]={{1,3,5},{2,4,6},{3,5,7}};
printf(“%d%d%d%d\n”,a[0][3],a[1][2],a[2][1],a[3][0];
}
A) 0650 B) 1470 C) 5430 D) 输出值不定
(41) 以下程序的输出结果是
main()
{ char st[20]=,hello\0\t\\\”;
printf(%d %d \n”,strlen(st),sizeof(st));
}
A) 9 9 B) 5 20 C) 13 20 D) 20 20
(42) 以下选项中,不能正确赋值的是
A) char s1[10];s1=“Ctest”;
B) char s2[]={‘C’,‘t’,‘e’,‘s’,‘t’};
C) char s3[20]=“Ctest”;
D) char *s4=“Ctest\n”
(43) 以下程序的输出结果是
amovep(int p,int (a)[3],int n)
{ int i,j;
for( i=0;i<;i++)
for(j=0;j<n;j++){ *p=a[i][j];p++; }
}
main()
{ int *p,a[3][3]={{1,3,5},{2,4,6}};
p=(int *)malloc(100);
amovep(p,a,3);
printf(“%d %d \n”,p[2],p[5]);free(p);
}
A) 56 B) 25 C) 34 D) 程序错误
(44) 以下程序的输出结果是
struct HAR
{ int x,y; struct HAR *p;} h[2];
main()
{ h[0],x=1;h[0];y=2;
h[1],x=3;h[1];y=4;
h[0],p=&h[1],p=h;
printf(“%d %d \n”,(h[0],p)->x,(h[1],p)->y);
}
A) 12 B) 23 C) 14 D) 32
(45) 以下程序的输出结果是
main()
{ int a,b;
for(a=1,b=1; a<=100; a++)
{ if(b>=10) break;
if (b%3= =1)
{ b+=3; continue; }
}
printf(“%d\n”,a);
}
A) 101 B) 6 C) 5 D) 4
(46) 以下程序的输出结果是
union myun
{ struct
{ int x,y,z; } u;
int k;
} a;
main()
{ a.u.x=4; a.u.y=5; a.u.z=6;
a.k=0;
printf(%d\n”,a.u.x);
}
A) 4 B) 5 C) 6 D) 0
(47) 以下程序的输出结果是
int a,b;
void fun()
{ a=100; b=200; }
main()
{ int a=5,b=7;
fun();
printf(“%d%d \n”,a,b);
}
A) 100200 B) 57 C) 200100 D) 75
(48) 以下程序的输出结果是
#define M(x,y,z) x*y+z
main()
{ int a=1,b=2,c=3;
printf(“%d\n”,M(a+b,b+c,c+a));
}
A) 19 B) 17 C) 15 D) 12
(49) 整型变量x和y的值相等、且为非0值,则以下选项中,结果为零的表达式是
A) x || y B) x | y C) x & y D) x ^ y
(50) 下面的程序执行后,文件testt.t中的内容是
#include <stdio.h>
void fun(char *fname.,char *st)
{ FILE *myf; int i;
myf=fopen(fname,“w” );
for(i=0;i<strlen(st); i++)fputc(st[i],myf);
fclose(myf);
}
main()
{ fun(“test”,“new world”; fun(“test”,“hello,”0;)
A)hello, B)new worldhello, C)new world D) hello,rld
二、填空题(每空2分,共40分)
请将每一个空的正确答案写在答题卡【l】至【20】序号的横线上,答在试卷上不得分。
(l)为了将当前盘当前目录中的所有文本文件(扩展名为.TXT)的内容打印输出,正确的单条DOS命令为 【l】 。
(2)设当前盘为C盘。为了在A盘的当前自录\USER下建立一个新的子目录X,正确的DOS命令为 【2】 。
(3)在 XCOPY、COPY、TIME三个 DOS命令中,属于外部命令的是 【3】 。
(4)在32位的计算机中,一个字长等于【4】个字节。
(5)计算机网络分为局域网和广域网,因特网属于 【5】 。
(6)语句:x++;?++x; x=x+1;?x=l+x;,执行后都使变量x中的值增1,请写出一条同一功能的赋值语句(不得与列举的相同) 【6】 。
(7)设y是int型变量,请写出判断y为奇效的关系表达 【7】 。
(8)以下程序运行后的输出结果是 【8】 。
main()
{ int i=10,j=0;
do
{ j=j+i; i-;
while(i>2);
printf(“%d\n”,j);
}
(9) 设有以下程序:
main()
{ int n1,n2;
scanf(“%d”,&n2);
while(n2!=0)
{ n1=n2%10;
n2=n2/10;
printf(“%d”,n1);
}
}
程序运行后,如果从键盘上输入1298;则输出结果为 【9】 。
(10) 以下程序输出的最后一个值是【10】 。
int ff(int n)
{ static int f=l;
f=f*n;
return f;
}
main()
{ int i;
for(I=1;I<=5;I++ printf(“%d\n”,ff(i));
}
(11) 以下函数的功能是:求x的y次方,请填空。
double fun( double x,int y)
{ int i;
double z;
for(i=1,z=x; i<y;i++) z=z* 【11】;
return z;
}
(12) 设有以下程序:
main()
{ int a,b,k=4,m=6,*p1=&k,*p2=&m;
a=pl==&m;
b=(*p1)/(*p2)+7;
printf(“a=%d\n”,a);
printf(“b=%d\n”,b);
}
执行该程序后,a的值为【12】,b的值为【13】 。
(13) 若已定义:int a[10],i;,以下fun函数的功能是:在第一个循环中给前10个数组元素依次赋1、2、3、4、5、6、7、8、9、10;在第二个循环中使a数组前10个元素中的值对称折叠,变成1、2、3、4、5、5、4、3、2、1。请填空。
fun( int a[ ])
{ int i;
for(i=1; i<=10; i++) 【14】=i;
for(i=0; i<5; i++) 【15】=a[i];
}
(14) 以下程序运行后的输出结果是 【16】 。
main()
{ char s[ ]=“9876”,*p;
for ( p=s ; p<s+2 ; p++) printf(“%s\n”,p);
}
(15) 若有定义语句,char s[100],d[100]; int j=0,i=0;,且s中已赋字符串,请填空以实现字符串拷贝。(注:不得使用逗号表达式)
while([i]){ d[j]= 【17】;j++;}
d[j]=0;
(16) 以下程序段用于构成一个简单的单向链表,请填空。
struct STRU
{ int x,y ;
float rate;
【18】 p;
} a,b;
a.x=0; a.y=0; a.rate=0; a.p=&b;
b.x=0; b.y=0; b.rate=0; b.p=NULL;
(l7) 若有如下结构体说明:
struct STRU
{ int a,b ; char c; double d:
struct STRU p1,p2;
};
请填空,以完成对t数组的定义,t数组的每个元素为该结构体类型
【19】 t[20];
(18) 以下程序段打开文件后,先利用 fseek函数将文件位置指针定位在文件末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。
FILE *myf; ling f1;
myf= 【20】 (“test.t”,“rb”);
fseek(myf,0,SEEK_END); f1=ftel(myf);
fclose(myf);
printf(“%d\n”,f1);
〖完〗
二级笔试试卷基础知识和C程序设计评分标准和参考答案2001年9月一、选择题((1)~(40)每小题1分,(41)~(50)每小题2分,共60分)
B
A
D
D
C
A
B
D
A
C
D
A
B
C
D
A
C
B
D
B
D
B
D
C
B
D
B
B
C
B
A
A
A
C
B
D
D
C
D
A
B
A
A
D
D
D
B
D
D
A
二、填空题(每空2分,共20分)
(1)
【1】
COPY *.TXT PRN 或 XCOPY *.TXT PRN
(2)
【2】
MD A:\USER\X 或 MD A:X
(3)
【3】
XCOPY
(4)
【4】
4
(5)
【5】
广域网
(6)
【6】
x+=1;
(7)
【7】
(y%2)!==1或y%2或(y%2)!=0或…
(8)
【8】
52
(9)
【9】
8921
(10)
【10】
120
(11)
【11】
X
(12)
【12】
0
【13】
7
(13)
【14】
a[i-1]
【15】
a[9-i]
(14)
【16】
9876
876
(15)
【17】
s[i++]
(16)
【18】
Struct STRU*
(17)
【19】
Struct STRU
(18)
【20】
fopen