2004年9月全国计算机等级考试二级C++试题及答案

我收集整理了《2004年9月全国计算机等级考试二级C++试题及答案》供大家参考,希望对你有所帮助!!!

一、选择题(1-40,1,41-50,2,***60)

在下面的四个选项a),b),c)和d)中,只有一个选项是正确的。

1.1MB等于

A) 1000字节

B) 1024字节

C) 1000×1000字节

D) 1024×1024字节

2.相当于十六进制数200的十进制数是

256人

B) 512

C) 1024

D) 2048年

3.所谓“*机”是指

a)单片微型计算机

b)单板计算机

c)没有任何软件的计算机

d)仅装有操作系统的计算机

4.能用高级语言编写的源程序转换成目标程序的是

a)链接程序

b)解释程序

c)编译器

d)我的程序

5.在64位计算机中,一个字长所占的字节数是

A) 64

B) 8

C) 4

D) 1

6.在Windows环境中,当应用程序窗口最小化时,应用程序

a)继续在后台运行

b)继续在前台运行。

c)操作的终止

d)暂停操作

7.在Windows环境下,可以实现窗口移动的操作有

a)用鼠标拖动窗口的任何部分。

b)用鼠标拖动窗口的边框。

c)用鼠标拖动窗口的控制按钮。

d)用鼠标拖动窗口的标题栏。

8.在Windows环境中,PrintScreen键的功能是

a)打印当前窗口的内容

b)打印屏幕内容

c)将屏幕复制到剪贴板

d)将当前窗口复制到剪贴板。

9.9的通信协议。互联网是

A) TCP/IP

B) BBS

C) WWW

D) FTP

10.下列说法是正确的

a)计算机病毒只感染可执行文件。

计算机病毒只感染文本文件。

c)计算机病毒只能通过软件复制来传播。

d)计算机病毒可以通过互联网或读写磁盘传播。

11.一个算法应该有五个特征,比如“确定性”。以下对其他四个特征的描述是错误的。

a)有零个或多个输入

b)有零个或多个输出。

贫困

d)可行性

12.下列说法是正确的

a)C语言的源程序可以不编译直接运行。

b)C语言中的每一条可执行语句,最终都会被转换成二进制的机器指令。

C) C编译C源程序形成的二进制代码可以直接运行。

d)C语言中的函数不能独立编译。

13.以下符合C语言语法的实数常量是

A) 1.2E0.5

B) 3.14.159E

C) 5E-3

D) E15

14.在以下四组用户定义的标识符中,所有合法的都是

a)_主要包括罪

b)中频-最大涡轮增压

C) txt REAL 3COM

D) int k_2 _001

15.如果正确定义了下列选项中的变量,则正确的赋值语句是

A) x1=26.8%3

B) 1+2=x2

C) x3=0x12

d)x4 = 1+2 = 3;

16.具有以下定义

int a = 0;

双b = 1.25;

char c = ' A

#定义d 2

下列说法中错误的是

a)a++;

b)b++;

c)c++;

d)d++;

17.有定义:float a=2,b=4,h = 3;以下C语言表达式与代数计算结果不一致。

A) (a+B) *h/2

B) (1/2)*(a+B) *h

C) (a+B) *h*1/2

D) h/2*(a+B)

18.有以下程序

main(){

int x=102,y = 012;

printf("-,-\n ",x,y);

}

执行后的输出结果是

A) 10,01

B) 02,12

102,10

02,10

19.以下四个选项中,不能视为陈述的是

a){;}

B) a=0,b=0,c = 0;

c)如果(a & gt0);

d)if(b = = 0)m = 1;n = 2;

20.有一个定义:int a,* pa = &;a;在下面的scanf语句中,可以正确读取变量A的数据的是

A) scanf("%d ",pA);

B) scanf("%d ",A);

C) scanf("%d ",& amppA);

D) scanf("%d ",* pA);

21.在下面的程序段中,还有语句k = a >;b?(b & gtc?1:0):0;功能等同

a)如果((a & gtb)和amp& amp(b & gtc))k = 1;

b)如果((a & gtb)| |(b & gt;C) ) k=1否则k = 0;

c)如果(a & lt= B)k = 0;

d)如果(a & gtb)k = 1;else if(bC)k = 1;否则k = 0;

22.有以下程序。

main(){

char k;int I;

for(I = 1;我& lt3;i++){

scanf("%c ",& ampk);

开关(k){

大小写“0”:printf(" another \ n ");

case ' 1 ':printf(" number \ n ");

}

}

}

程序运行时,从键盘输入:01回车>程序执行后的输出结果是

a)另一个号码

b)另一个号码

c)另一个数字另一个

d)编号编号编号

23.有以下程序。

main(){

int x=0,y=5,z = 3;

while(z->;0 & amp& amp++ x & lt;5)y = y-1;

printf("%d,%d,%d\n ",x,y,z);

}

程序执行后的输出结果是

A) 3,2,0

B) 3,2,-1

C) 4,3,-1

D) 5,-2,-5

24.有以下程序。

main(){

int i,s = 0;

for(I = 1;我& lt10;I+= 2)s+= I+1;

printf("%d\n ",s);

}

程序执行后的输出结果是

a)自然数1 ~ 9的累积和

b)自然数1 ~ 10的累计和

c)自然数1 ~ 9中奇数之和

d)自然数1 ~ 10中偶数之和。

25.有以下程序。

main(){

int i,n = 0;

for(I = 2;我& lt5;i++){

做{

如果(i%3)继续;

n++;

}while(!I);

n++;

}

printf("n=%d\n ",n);

}

程序执行后的输出是

A)n=5

B)n=2

C)n=3

D)n=4

26.如果程序中定义了以下功能。

double myadd(双a,双B){ return(a+B);}

并且放在调用语句之后,函数在调用之前要说明。以下选项中的错误解释是

a)双重myadd(双重a、B);

B)double myadd(double,double);

c)双myadd(双b,双A);

D)double myadd(双x,双y);

27.有以下程序。

char fun(char x,char y){

if(x返回y;

}

main(){

int a='9 ',b='8 ',c = ' 7

printf("%c\n ",fun(fun(a,B),fun(b,C)));

}

程序执行的结果是

a)函数调用错误

B)8

C)9

D)7

28.有定义:int n = 0,* p = &;n,* * q = & ampp;下列选项中,正确的赋值语句是

a)p = 1;

b)* q = 2;

c)q = p;

d)* p = 5;

29.有以下程序。

void f(int v,int w){

int t;

t = v;v = w;w = t;

}

main(){

int x=1,y=3,z = 2;

if(x & gt;y) f(x,y);

else if(y & gt;z) f(y,z);

else if(x,z);

printf("%d,%d,%d\n ",x,y,z);

}

执行后的输出结果是

A)1,2,3

B)3,1,2

C)1,3,2

D)2,3,1

30.有以下程序段

int a[10]={1,2,3,4,5,6,7,8,9,10},* p = & ampa[3],b;

b = p[5];

b中的值为

答)5

B)6

C)8

D)9

31.有以下程序。

main(){

char a[]="abcdefg ",b[10]= " abcdefg ";

printf("%d %d\n ",sizeof(A),sizeof(B));

}

执行后的输出结果是

A)7 7

B)8 8

8 10

D)10

32.有以下程序。

void swap1(int c[]){

int t;

t = c[0];c[0]= c[1];c[1]= t;

}

void swap2(int c0,int c1){

int t;

t = c0c0 = c 1;c 1 = t;

}

main(){

int a[2]={3,5},b[2]={3,5 };

swap 1(A);

swap2(b[0],b[1]);

printf("%d %d %d %d\n ",a[0],a[1],b[0],b[1]);

}

输出结果是

A)5 3 5 3

B)5 3 3 5

C)3 5 3 5

D)3 5 5 3

33.有以下程序。

void sum(int *A){

a[0]= a[1];

}

main(){

int aa[10]={1,2,3,4,5,6,7,8,9,10},I;

for(I = 2;我& gt=0;I-)sum(& amp;aa[I]);

printf("%d\n ",aa[0]);

}

执行后的输出是

A) 4

B) 3

C) 2

D) 1

34.有以下程序。

int f(int b[][4]){

int i,j,s = 0;

for(j = 0;j & lt4;j++){

I = j;

如果(i & gt2)I = 3-j;

s+= b[I][j];

}

返回s;

}

main(){

int a[4][4]={{1,2,3,4},{0,2,4,5},{3,6,9,12},{3,2,1,0 } };

printf("%d\n ",f(A));

}

执行后的输出是

A) 12

B) 11

C) 18

D) 16

35.有以下定义

#包括

char a[10],* b = a;

不能为数组A输入字符串的说法是

A)得到(A)

b)得到(a[0])

c)获取(& ampa[0]);

d)得到(B);

36.有以下程序。

main(){

char *p[10]={"abc "," aabdfg "," dcdbe "," abbd "," CD " };

printf("%d\n ",strlen(p[4]));

}

执行后的输出结果是

A)2

B)3

C)4

D)5

37.有以下程序。

int a = 2;

int f(int * A){ return(* A)++;}

main(){

int s = 0;

{

int a = 5;

s+= f(& amp;a);

}

s+= f(& amp;a);

printf("%d\n ",s);

}

执行后的输出结果是

A)10

B)9

C)7

D)8

38.有以下程序。

#定义f(x) x*x

main(){

int I;

I = f(4+4)/f(2+2);

printf("%d\n ",I);

}

执行后的输出结果是

A)28

B)22

C)16

D)4

39.有以下声明

typedef结构S { int g;char h;} T;

以下描述中正确的是

a)结构变量可以由s定义。

b)可以用t来定义结构变量。

S是一个struct类型的变量。

T是struct S类型的变量。

40.有以下程序。

结构学{

字符名称[10];

int num

};

void f1(结构STU C){

struct STU b={ "李四国",2042 };

c = b;

}

void f2(结构STU *C){

struct STU b={“孙丹”,2044 };

* c = b;

}

main(){

struct STU a={ "杨三",2041},b={ "王印",2043 };

f 1(A);

F2(& amp;b);

printf("%d %d\n ",a.num,b . num);

}

执行后的输出是

A)2041 2044

B)2041 2043

2042年2044年

D)2042年

41.有以下程序。

main(){

无符号字符a,b;

a = 4 | 3;

b = 4 & amp3;

printf("%d %d\n ",a,b);

}

执行后的输出结果是

A) 7 0

B) 0 7

C) 1

D) 43 0

42.以下程序的功能是输出以下金字塔图案:

*

***

*****

*******

main(){

int i,j;

for(I = 1;我& lt=4;i++){

for(j = 1;j & lt= 4-I;j++)printf(" ");

for(j = 1;j & lt=_______;j++)printf(" * ");

printf(" \ n ");

}

}

下划线里应该填的是

a)我

b)2 *识别号1

C) 2*i+1

D) i+2

43.有以下程序。

void sort(int a[],int n){

int i,j,t;

for(I = 0;I for(j = I+2;j if(a[i]}

main(){

int aa[10]={1,2,3,4,5,6,7,8,9,10},I;

排序(aa,10);

for(I = 0;我& lt10;i++) printf("%d ",aa[I]);

printf(" \ n ");

}

输出结果是

A) 1,2,3,4,5,6,7,8,9,10,

B) 10,9,8,7,6,5,4,3,21,

C) 9,2,7,4,5,6,3,8,1,10,

D) 1,10,3,8,5,6,7,4,9,2,

44.下列程序段中,不能正确赋值字符串(编译时系统会提示错误)的是

a)char s[10]= " abcdefg ";

B) char t[]="abcdefg ",* s = t;

c)char s[10];s = " abcdefg

d)char s[10];strcpy(s," abcdefg ");

45.有以下程序。

#包括

main(int argc,char *argv[]){

int i,len = 0;

for(I = 1;i printf("5d\n ",len);

}

编译链接后生成的可执行文件是ex.exe。如果在运行时输入以下带参数的命令行,

ex abcd efg h3 k44

执行后的输出结果是

A) 14

B) 12

C) 8

D) 6

46.有以下程序。

void f(int a[],int i,int j){

int t;

if(I t = a[I];a[I]= a[j];a[j]= t;

f(a,i+1,j-1);

}

}

main(){

int i,aa[5]={1,2,3,4,5 };

f(aa,0,4);

for(I = 0;我& lt5;i++) printf("%d,",aa[I]);

printf(" \ n ");

}

执行后的输出结果是

5,4,3,2,1,

5,2,3,4,1,

C) 1,2,3,4,5,

D) 1,2,3,4,5,

47.有以下程序。

结构研究{

字符名称[10];

int num

int分数;

};

main(){

struct STU s[5]={{ "杨三",20041,703},{ "李四国",20042,580},{ "王印",20043,680},{ "孙丹",20044,550},

{“鹏华”,20045,537}},*p[5],* t;

int i,j;

for(I = 0;我& lt5;i++)p[I]= & amp;s[I];

for(I = 0;我& lt4;i++)

for(j = I+1;j & lt5;j++)

if(p[I]-& gt;得分& gtp[j]-& gt;score){ t = p[I];p[I]= p[j];p[j]= t;}

printf("5d %d\n ",s[1]。Score,p[1]-& gt;分数);

}

执行后的输出结果是

550 550

680 680

580 550

580 680

48.有以下程序。

#包括

结构节点{

int num

结构节点* next

};

main(){

结构节点*p,*q,* r;

int sum = 0;

p=(结构节点*)malloc(sizeof(结构节点));

q=(结构节点*)malloc(sizeof(结构节点));

r=(结构节点*)malloc(sizeof(结构节点));

p->;num = 1;q->;num = 2;r-& gt;num = 3;

p->;next = q;q->;next = r;r-& gt;next = NULL

sum+= q-& gt;下一个-& gt;numsum+= p-& gt;num

printf("%d\n ",sum);

}

执行后的输出是

A) 3

B) 4

C) 5

D) 6

49.有以下程序。

#包括

main(){

FILE * fpint i,k=0,n = 0;

fp=fopen("d1.dat "," w ");

for(I = 1;我& lt4;i++) fprintf(fp,“%d”,I);

fclose(FP);

fp=fopen("d1.dat "," r ");

fscanf(fp," %d%d ",& ampk & amp;n);printf("%d %d\n ",k,n);

fclose(FP);

}

执行后的输出结果是

A) 1 2

123 0

1 23

D) 0 0

50.程序中有以下程序(提示:fseek (fp,-2l * sizeof (int),seek _ end);该语句的功能是将位置指针从文件末尾向前移动2*sizeof(int)字节。

#包括

main(){

FILE * fpint i,a[4]={1,2,3,4},b;

fp=fopen("data.dat "," WB ");

for(I = 0;我& lt4;i++)fwrite(& amp;a[i],sizeof(int),1,FP);

fclose(FP);

fp=fopen("data.dat "," Rb ");

fseek(fp,-2L*sizeof(int)。SEEK _ END);

弗雷德(& ampb,sizeof(int),1,FP);/*将sizeof(int)字节的数据从文件读入变量B */

fclose(FP);

printf("%d\n ",B);

}

执行后的输出结果是

A) 2

B) 1

C) 4

D) 3

二、填空(每空2分,***40分)

请将每个空的正确答案写在括号内。

1.电子邮件地址由用户名和域名组成,这两部分之间的分隔符是。

2.计算机网络分为广域网和局域网,互联网属于。

3.从Windows环境进入MS-DOS模式后,返回Windows环境的DOS命令是。

4.在Windows环境下,只需点击“开始”菜单中的选项,就可以查看最近打开的文档列表。

5.计算机的运算速度可以用MIPS来描述,1MIPS就是每秒执行指令数。

6.已知字符A的ACSII码值为65,以下语句的输出结果为

char ch = ' B

printf("%c %d\n ",ch,ch);

7.有以下几个句子片段

int n1=10,n2 = 20

printf(",n 1 . N2);

n1和n2的值需要以下列格式输出。每个输出行从第一列开始。请填空。

n1=10

n2=20

8.有以下程序

main(){

int t=1,I = 5;

for(;我& gt=0;I-)t * = I;

printf("%d\n ",t);

}

执行后的输出是。

9.有以下程序。

main(){

int n=0,m=1,x = 2;

如果(!n)x-= 1;

如果(m)x-= 2;

if(x)x-= 3;

printf("%d\n ",x);

}

执行后的输出是。

10.有以下程序

#包括

main(){

char ch1,ch2int n1,N2;

ch 1 = getchar();CH2 = getchar();

n 1 = ch 1-' 0 ';N2 = n 1 * 10+(CH2-' 0 ');

printf("%d\n ",N2);

}

程序运行时输入:12 Enter >执行后,输出结果为。

11.有以下程序。

void f( int y,int * x){ y = y+* x;* x = * x+y;}

main(){

int x=2,y = 4;

f(y & amp;x);

printf("%d %d\n ",x,y);

}

执行后的输出是。

12.fun的作用是计算xn。

double fun(double x,int n){

int I;double y = 1;

for(I = 1;我& lt= n;i++)y = y * x;

返回y;

}

变量M,A,B已经在主函数中正确定义赋值,调用fun函数计算:m=a4+b4-(a+B) 3。实现这个计算的函数调用语句是。

13.下面旋转函数的作用是将n行n列的矩阵A转置为A’,例如:

1 2 3 4 1 5 9 13

5 6 7 8 2 6 10 14

当A = 9 10 1112时,a' A'= 3 7 11 15。

13 14 15 16 4 8 12 16

请填空

#定义N 4

void rotate(int a[][N]){

int i,j,t;

for(I = 0;I for(j = 0;;j++){

t = a[I][j];

a[j][I]= t;

}

}

14.下面的sstrcpy()函数实现了字符串复制,即将T指向的字符串复制到S指向的内存空间中,形成新的字符串S,请填空。

void sstrcpy(char *s,char * t){ while(* s++ =);}

main(){

char str1[100],str 2[]= " abcdefgh ";

sstrcpy(str1,str 2);

printf("%s\n ",str 1);

}

15.以下程序的运行结果是:

#包括

char * ss(char * s){ return s+strlen(s)/2;}

main(){

char *p,* str = " abcdefgh

p = ss(str);printf("%s\n ",p);

}

16.以下程序的运行结果是:

int f( int a[],int n){

如果(n & gt1)返回一个[0]+f(& amp;a[1],n-1);

否则返回一个[0];

}

main(){

int aa[3]={1,2,3},s;

s = f(& amp;aa[0],3);printf("%d\n ",s);

}

17.在下面的程序中,三个双动态内存单元被分配给指针p,请填空。

#包括

main (){

双* p;

p =(double *)malloc();

p[0]= 1.5;p[1]= 2.5;p[2]= 3.5;

printf("%f%f%f\n ",p[0],p[1],p[2]);

}

18.以下程序的运行结果是

#包括

typedef结构学生{

字符名称[10];

龙sno

浮动分数;

}斯图;

main(){

STU a={ "张三",2001,95},b={ "尚贤",2002,90},c={ "安化",2003,95},d,* p = & ampd;d = a;

if(strcmp(a.name,b.name)>0)d = b;

if(strcmp(c.name,d.name)>0)d = c;

printf("%ld%s\n ",d.sno,p-& gt;姓名);

}

19.下面sum函数的作用是计算下面数列的和。

S=1+x+x2/2!+x3/3!+........+xn/n!

请为函数中的变量正确赋值初始值。

double sum( double x,int n ){

int I;双a,b,s;

for(I = 1;我& lt= n;i++){ a = a * x;b = b * I;s = s+a/b;}

返回s;

}