2022年浙江省金华市全国计算机等级考试C++语言程序设计真题(含答案)_第1页
2022年浙江省金华市全国计算机等级考试C++语言程序设计真题(含答案)_第2页
2022年浙江省金华市全国计算机等级考试C++语言程序设计真题(含答案)_第3页
2022年浙江省金华市全国计算机等级考试C++语言程序设计真题(含答案)_第4页
2022年浙江省金华市全国计算机等级考试C++语言程序设计真题(含答案)_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2022年浙江省金华市全国计算机等级考试

C++语言程序设计真题(含答案)

学校:班级:姓名:考号:

一、1.选择题(10题)

i.软件开发的结构化生命周期方法将软件生命周期划分成()

A.定义、开发、运行维护

B.设计阶段、编程阶段、测试阶段

C.总体设计、详细设计、编程调试

D.需求分析、功能定义、系统设计

2.使用输入输出操作符setw,能够控制()。

A.填充字符B.输出宽度C.对齐方式D.输出精度

3.下列字符串中可以用作C++语言标识符的是

A._1234B.foo----barC.virtualD.34var

4.若有如下语句#include<iostream.h>voidmain(){intx=3:

do{X=X-2;cout<<X;)while(!(-x));}则上面程序段

A.输出的是1B.输出的是1和-2C.输出的是3和0D.是死循环

5.下列程序输出的结果是()。#include<stdio.h>uni(chara,char

b){charc;c=a;a=b;b=c;}fun2(char*a,charb){chare;c=*a;*a=b;

b=c;}fun3(char*2,char*b){chare;c=*a;*a=*b;*b=c;}voidmain()

{chara,b;a='A';b='B';funl(a,b);putchar(a);putchar(b);

A.BABBABB.ABBBBAC.ABBABAD.ABABBA

6.若有以下程序:#include<iosti,eam>usingnamespacestd;classA

{private:inta;public:A(inti){a=i;}voiddisp(){cout<<a<<}};

classB{private:intb;public:B(intj){b=j;}voiddisp(){cout<<b<<

}};classC:publicB,publicA{private:intc;public:C(intk):A(k-

2),B(k+2){c=k;}voiddisp(){A::disp();B::disp();cout<<c<<endl;}};

intmain(){Cobj(10);obj.dispO;return0;}

A.10,10,10B.10,12,14C.8,10,12D.8,12,10

7.程序的3种基本控制结构是

A.过程、子过程和分程序B.顺序、选择和重复C.递归、堆栈和队列D.

调用、返回和转移

8.下程序的输出结果是

main()

{inta=0,i;

for(i=l;i<5;i++)

{switch(i)

{case0:

case3:a+=2;

case1:

case2:a+=3;

default:a+=5;

)

)

cout<<a<<endl;

)

A.31B.13C.10D.20

9.下面程序的运行结果为()。#include<iostream.h>voidmain(){char

a-3':switch(a){case'3':cout<<"3';case'2':cout<<"2";break;

default:cout<<"1";}}

A.3B.321C.31D.32

10.C++中运算符优先级由高到低排列正确的是

A.::+++||B.<*||,C.sizeof%+::D.,&&newsizeof

二、单选题(13题)

11.下面关于运算符重载的描述错误的是()o

A.运算符重载不能改变操作数的个数、运算符的优先级、运算符的结合

性和运算符的语法结构

B.不是所有的运算符都可以进行重载

C.运算符函数的调用必须使用关键字Operator

D.在C++语言中不可通过运算符重载创造出新的运算符

12.待排序的关键码序列为(33,18,9,25,67,82,53,95,12,70),

要按关键码值递增的顺序排序,采取以第一个关键码为基准元素的快速

排序法,第一趟排序后关键码33被放到第()个位置。

A.3B.5C.7D.9

13.下面关于虚函数的描述中正确的是()o

A.虚函数是一个静态成员函数

B.虚函数是一个非成员函数

C.虚函数可以在函数说明时定义,也可以在函数实现时定义

D.派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型

14.类MyClass的定义如下:classMyClass{public:

MyClass(){value=0;}SetVariable(inti){value=i;}private:intvalue;};

则对下列语句序列正确的描述是()。

A.MyClass*p,my;p=&my;

B.语句p=&my;是把对象my赋值给指针变量p

C.语句MyClass*p,my;会调用两次类MyClass的构造函数

D.对语句*p.SetVariable(5)与语句my.SetVariable(5)等价

15.下面的语句中错误的是()。

A.inta=5;intx[a];

B.eonstinta=5;intx[a];

C.intn=5;int*P=newint[a];

D.constintn=5;int*p=newintfa];

16.栈通常采用的两种存储结构是

A.A.线性存储结构和链表存储结构

B.散列方式和索引方式

C.链表存储结构和数组

D.线性存储结构和非线性存储结构

17.执行下列程序后,w的值为()O

intw='A',x=14,y=15;

w=((xIIy)&&(w<'a'));

A.A.-1B.NULLC.1D.O

18.已知一函数的形参说明为intarr[5][61,则与此等效的形参说明为

()0

A.intarr[][]B.int[5][]C.int*a[6]D.int(*a)[6]

19.存取指针所指的值时,采用的运算符是()。

A.#B.&C.%D.*

20.有下列程序:

#include<stdiO.h>

voidmain()

{intx=l,y=2,z=3;

if(x>y)

if(y<z)print{("%d",++z);

elseprintf("%d",++y);

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

)

程序的运行结果是()。

A.A.331B.41C.2D.1

21.下列数据结构中,属于非线性结构的是

A.循环队列B.带链队列C.二叉树D.带链栈

22.以下叙述正确的是()。

A.函数可以嵌套定义但不能嵌套调用

B.函数既可以嵌套调用也可以嵌套定义

C.函数既不可以嵌套定义也不可以嵌套调用

D.函数可以嵌套调用但不可以嵌套定义

23.有如下程序:

#include<iostream>

usingnamespacestd;

classDA{

intk;

public:

DA(intx=l):k(x){}

~DA(){cout«k;}

);

intmain(){

DAd[]={DA(3),DA(3),DA(3));

DA+p=newDA[2];

delete[]p;

return();

这个程序的输出结果是()。A.lllB.333C.11333D.11133

三、2.填空题(12题)

24.在C++的面向对象程序设计框架中,【】是程序的基本组成单元。

25.设在主函数中有以下定义和函数调用语句,且fun()函数为void类

型,请写出fun()函数的首部【】。

intmain()

(

doubles[10][22];

intn;

fun(s);

return0;

}

26.对具有n个结点的线性表进行顺序查找,最坏情况下需要的比较次

数为【]o

27.以下程序的输出结果是【】。

#include<iostream>

usingnamespacestd;

voidfun()

staticinta=0;

a+=2;

cout<<a;

)

intmain()

(

intcc;

for(cc=l;cc<4;cc++)

fun();

cout<<endl;

return0;

)

28.假定q所指对象的值为25,q+l所指对象的值为46,则执行”(*q)++;”

语句后,q所指对象的值为o

29.已知有函数f的定义如下:

intf(){

staticints=0;

s+=2;

returns;

)

则在某程序中第二次执行函数调用语句f();时,函数f的返回值是______

30.一个工人可以加工多种零件,每一种零件可以由不同的工人来加工,

工人和零件之间为【】的联系。

31.在面向对象方法中,类的实例称为o

32.关系数据库的关系演算语言是以【】为基础的DML语言。

33.假定动态分配一个类型为Worker的具有n个元素的数组,并由P指

向这个动态数组,如果要释放这个数组,则使用的语句为【】。

34.[]是一系列相关函数的模型或样板,这些函数的[】形式相同,

只是所针对的【】不同。

35.表达式x.operator+(y.operator++(0))还可以写成。

四、程序改错题(10题)

36.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序

运行时有错,请改正其中的错误,使程序正常运行,输出的结果为

Constructor,i=0,

Destructor

注意:错误的语句在//******errc)r******的下面,修改该语句即

可。

试题程序:

#include(iostream.h)

classTC

inti;

public:

TC;

voiddisplay;

TC;

};

I!******enor******

TC:TC

cout«"Constructor"«","

i=0;

)

************

TC:display

tout«"i="«i<<","«endl;

)

!!******error******

TC:TC

COUI«"Destructor"«endl:

)

voidmain

TCa;

a.display;

37.使用VC++6.0打开考生文件夹下的源程序文件1.cpp。本程序

要求输入一个字符串,然后将其中的小写字母改成大写字母,字符可

能输入多行,当输入字符“?”时,默认字符输入结束,最后把结果输出

到屏幕中。

注意:不要改动main函数,不能增加或删除行,也不能更改程序的结

构,错误的语句在//******error******的下面。

试题程序:

#include<iostream.h>

voidmain

(

inti=O;

charstrf120];

cout«"Enterastringendwith?."«endl;

II********error********

cin.getline(str,120);

II********error********

while(str)

(

II********error********

if(str[i])=a)

str[i]=str[i]-a+A;

i++;

cout«str«endl;

return;

38.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,但该程

序运行有问题,请改正main函数中的错误,使该程序的输出结果正

确。

程序输出:

8

8

注意:错误的语句在/********error********/的下面。修改该语句

即可,其他的语句不能修改。

试题程序:

#include(iostream.h>

classCO

public:

!********ej*j*or********I

staticintn=0:

CO

n++:

-co

n-:

}:

I********ej*j*01********

intCO::n;

voidmain

{

COobj;

COobj2[7];

CO*C=NULL:

c=&obj:

I********ej*j*or********

eout«C.n«endl;

cout«C0::n«endl;

39.使用VC++6.0打开考生文件夹下的源程序文件

1.cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实现

的功能为从键盘输入一个字符串,并将结果保存到文件1.txt中。

注意:不要改动main函数,不能增加或删除行,也不能更改程序的结

构,错误的语句在

!1******error******白勺~~

试题程序:

#include<iostream>

#include<fstream>

!1********enor********

usingstd;

voidWriteFile(char*s)

ofstreamoutl;

!I********eno1********

outl.open("l.txt",binarylapp);

for(inti=0;s[i]!=0;i++)

!1********enor********

outl.puts(s[i]);

)

outl.close;

)

voidClearFile

(

ofstreamout1;

outl.open("l.txt");

outl.close;

)

intmain

(

chars[1024];

ClearFile;

cout«"pleaseinputastrin9:"«endl;

cin.getline(s,1024);

WriteFile(s);

returnO;

40.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运

行时有错,请改正其中的错误,使程序正常运行,输出的结果为

Constructor,i=0,

Destructor

注意:错误的语句在//******errc)r******的下面,修改该语句即可。

试题程序:

#include(iostream.h)

classTC

(

inti;

public:

TC;

voiddisplay;

~TC;

};

II******error******

TC:TC

(

cout«"Constructor"«",";

i=0;

)

!1******error******

TC:display

tout«"i="«i<<","«endl;

)

//******ej*j*oj*******

TC:TC

(

COUI«"Destructor"«endl:

)

voidmain

(

TCa;

a.display;

)

41.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序

运行有问题,请改正main函数中的错误,使程序的输出结果为:

number=l

number=10

number=100

注意:不要改动main函数,不能增加或删除行。也不能更改程序的结

构,错误的语句在//******errc)r******的下面。

试题程序:

#include<iostream.h>

classTC

(

public:

TC(inti)

number=i;

voidSetNumber(intm)

(

number=m;

)

intGetNumberconst

{

returnnumber;

)

voidPrintconst

(

cout«"number="«number«endl;

)

private:

intnumber;

};

voidmain

{

Ii********error********

TCobjl;

objl.Print;

TCobj2(3);

1I********error********

objl.number=10;

I/********error*%o******

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

42.使用VC++6.0打开考生文件夹下的源程序文件

1.cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实

现的功能为从键盘输入一个字符串,并将结果保存到文件1.txt中。

注意:不要改动main函数,不能增加或删除行,也不能更改程序的结

构,错误的语句在

II******error******卜|o

试题程序:

#include<iostream>

#include<fstream>

/I********ej*j*or********

usingstd;

voidWriteFile(char*s)

ofstreamoutl;

!I********enor********

outl.open("l.txt",binary|app);

fbr(inti=0;s[i]!=0;i++)

********error********

outl.puts(s[i]);

outl.close;

voidClearFile

ofstreamout1;

outl.open("l.txt");

outl.close;

)

intmain

(

chars[1024];

ClearFile;

cout«"pleaseinputastrin9:"«endl;

cin.getline(s,1024);

WriteFile(s);

returnO;

)

43.使用VC++6.0打开考生文件夹下的源程序文件1.cppo本程序要

求输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输

入多行,当输入字符“?”时,默认字符输入结束,最后把结果输出到屏幕

中。

注意:不要改动main函数,不能增加或删除行,也不能更改程序的结

构,错误的语句在//******errc)r******的下面。

试题程序:

#include<iostream.h>

voidmain

inti=O;

charstr[120];

cout«"Enterastringendwith?."«endl;

II********enor********

cin.getline(str,120);

II********error********

while(str)

(

II********error********

if(str[i])=a)

str[i]=str[i]-a+A;

i++;

)

cout«str«endl;

return;

)

44.使用VC++6.。打开考生文件夹下的源程序文件1.cpp,该程序

运行时有错。请改正程序中的错误,使程序输出的结果为

100

37

32

注意:错误的语句在//******error******的下面,修改该语句即

可。

试题程序:

#include<iostream.h>

II******error******

voidmain

(

!i******enor******

intm=0142:

I!******error******

intn=0X27:

intq=32;

cout<<m<<endl;

cout<<n<<endl;

cout<<q<<endl;

return;

)

45.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序

运行时有错误,请改正错误,使程序正常运行,并且要求最后一个

catch必须抛出执行的任何异常。

程序异常,输出信息为

error

0

ERROR

注意:不要改动main函数,不能增加或删除行,也不能更改程序的结

构,错误的语句在//******eiror******的下面。

试题程序:

#include<iostream.h)

intmain

(

try

{

throw("error");

)

II********enoj*********

catch(chars)

(

cout«s«endl;

)

try

(

throw((int)0);

)

II********error********

catch

(

cout«i«endl;

)

try

(

throw(O);

throw("error");

catch

cout«"ERROR"«endl;

returnO;

五、综合应用题(2题)

46.使用VC++6.0打开考生文件夹下的源程序文件3.cpp,其中定

义了类A、A1和A2,其中A1类由A类公有派生,A2类由A1类公

有派生。

(1)定义类A的构造函数,该构造函数有一个整型的参数x,在构造函

数中请将x赋值给数据成员a。请在注释“//********1********”之

后添加适当的语句。

(2)定义类A1的构造函数,该构造函数有两个整型的参数x和y,在构

造函数中请将x赋值给数据成员b,将y作为基类A构造函数的参数

值传人。请在注释“//********2*********之后添加适当的语句。

(3)定义类A2的构造函数,该构造函数有3个整型的参数x,y和z,

在构造函数中请将x赋值给数据成员C,将y和z分别赋值给基类A1

构造函数的参数x和y0请在注释“//********3********”之后添加

适当的语句。

(4)完成类A2的成员函数show的定义,该函数调用基类成员函数,输

出基类数据成员a和b及类A2自身的数据成员C的值,上述3个值

在输出时以空格隔开。请在注释“//********4*********之后添加适

当的语句。

程序输出结果如下:

7

3

738

注意:除在指定的位置添加语句之外,请不要改动程序的其他部分。

试题程序:

#include<iostream.h>

classA

(

inta;

public:

intgeta{retuma;}

};

classAl:publicA

{

intb;

public:

[Isj*

intgetb{returnb;}

};

classA2:publicA1

(

intC;

public:

//****,****3********

voidshow

II********4********

)

};

voidmain

{

A2a(8.3.7):

cout«a.geta«endl:

cout«a.getb«endl:

a.show;

47.使用VC++6.0打开考生文件夹下的源程序文件3.cpp。其中定

义的类不完整,按要求完成下列操作,将类的定义补充完整。每卖出

一个水果,则计算水果的重量,还要计算所有卖出水果的总重量以及

总个数,同时允许退货,请按照以下的操作,把类补充完整。

⑴定义类TCFruit的私有静态数据成员float型变量AllWeight和int型

变量A11N0,请在注释1后添加适当的语句。

(2)完成类TCFruit的带一个float型变量w的构造函数,并把这个w加

到AllWeight中,并且AllNo自加。请在注释2后添加适当的语句。

(3)在析构函数中,在AllWeight中减去weight,然后AllNo自减,请

在注释3后添加适当的语句。

(4)完成静态成员变量的初始化为0,请在注释4后添加适当的语句。

注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其

他的程序代码。

试题程序:

#include(iostream.h>

classTCFruit

{

private:

floatWeight;

staticintAllNo;

public:

TCFruit(floatw)

(

[I*4^*|**|**4*vj*

AllWeight+=w:

AllNo++:

)

~TCFruit

(

AllWeight-Weight:

)

voiddisplay

(

cout«"SellaFruitwith"«Weight«"k9"«

endl;

cout«,,Allsellnumber:"«AllNo«endl;

cout«"Allsellweight:"«AUWeight«"k9"«

endl«endl;

)

};

Ii********4********

floatTCFruit::AHWeight=O.0;

intmain

(

TCFruitFruitl(l.2);

Fruitl.display;

TCFruitFruit2(2.3);

Fruit2.display;

returnO;

)

六、3.综合应用题(2题)

48.使用VC6打开考生文件夹下的工程testl7_3,此工程包含一个源程

序文件testl7_3.cpp,其中定义了用于表示点的类Point和表示内容的类

Text以及二者的派生类CircleWithText,但它们的定义并不完整。请按

要求完成下列操作,将它们的定义补充完整。

⑴定义类Point的构造函数,请使用参数列表的形式将成员函数x和y

分别初始化为参数xl和yl的值。请在注释“〃**1**°”之后添加适当的

语句。

⑵完成类Text的构造函数Text(char*str)的定义,将char型的str指向

的内容赋值给text并且输出str所指向的内容,请在注释“〃**2**”之后

添加适当的语句。

⑶定义类CircleWithText的构造函数CircleWithText(intcx,intcy,char

*msg),int型的ex和cy用于赋值给x和y,char型的指针*msg用于赋

值给text,请在注释“〃**3**”之后添加适当的语句。

输出结果如下:

Point:34

hello

注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。

源程序文件testl7_3.cpp清单如下:

#include<iostream.h>

#include<string.h>

classPoint

(

intx,y;

public:

〃**]**

(

cout<<"Point:"<<x<<"<<y<<'\n';

)

〜Point。{}

);

classText

(

chartext[100];

public:

Text(char*str)

-Text(){}

);

classCircleWithText:publicPoint,publicText

{

public:

()

〜CircleWithText(){}

);

voidmain()

(

CircleWithTextcm(3,4,"hello");

)

49.使用VC6打开考生文件夹下的工程test36_30此工程包含一个

test36_3.cpp,其中定义了类CRectangle,但该类的定义并不完整。请按

要求完成下列操作,将程序补充完整。

⑴定义类CRectangle的数据成员width和height,它们都是int型的数

据。请在注释“〃**1**”之后添加适当的语句。

⑵添加类CRectangle的友元函数duplicate。的声明,其返回值类型和参

数类型均为Crectangle的,请在注释“〃**2**”之后添加适当的语句。

(3)完成类Crectangle的成员函数set_values的定义,把传入的参数a和

b分别赋值为数据成员width和height,请在注释“〃**3**”之后添加适

当的语句。

(4)完成派生类Crectangle的友元函数duplicate的定义,把函数中的临时

对象rectres的值返回主函数,请在注释“//**4**”之后添加适当的语句。

注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。

源程序文件test36_3.cpp清单如下:

#include<iostream.h>

classCRectangle

(

H**j**

public:

voidset_values(int,int);

intarea(void){return(width*height);}

//**2**

);

voidCRectangle::set_values(inta,intb)

(

H**3**

)

CRectangleduplicate(CRectanglerectparam)

(

CRectanglerectres;

rectres.width=rectparam.width*2;

rectres.height=rectparam.height*2;

〃**4**

)

voidmain()

(

CRectanglerect,rectb;

rect.set_values(2,3);

rectb-duplicate(rect);

cout<<rectb.area()<<end1;

参考答案

LA解析:通常,将软件产品从提出、实现、使用维护到停止使用退役

的过程称为软件生命周期。它可以分为软件定义、软件开发及软件运行

维护3个阶段。

2.B本题考查的是输入输出操作符。使用输入输出操作符setw,可以控

制输入输出宽度。

3.A解析:C++语言标识符只能由数字,字母和下划线组成,并且只能

以字母和下划线为开头。

4.B解析:do...while语句的一般格式为do循环体语句while(表达式);,

先执行循环体语句一次,再判断表达式的值,若为真则继续执行循环,

否则终止循环。本题中,先执行X=x-2,即为1。判断表达式的值,!(-

-x)为真,x=0,继续循环。再次执行循环体语句后,x=-2,此时表

达式的值为0,结束循环。

5.B解析:由程序中的主函数main入手,分别调用funl,fun2,fun3函

数,得出输出结果。其中,3个函数都是实现的两个形参的交换功能,

只是值传递的方式不同,有的是引用,有的是传值。第一个函数中参数

采用的是值传递的方式,形参的变化不影响实参。所以d调用funl后,

实参a和b并没有交换,仍然是AB。第二个调用中,实参a采用的是

地址印传递的是地址所以形参a的改变合影响实参a的值,即BB。

同理,调用fun3后为BAO

6.D解析:本题考核派生类构造函数的使用。本题中,派生类c具有多

重继承关系,所以在派生类C的构造函数中应该包含基类A和B的成

员初始化列表。

7.B解析:采用结构化程序设计方法编写程序,可使程序结构良好、易

读、易理解、易维护,它包括3种基本控制结构,分别是顺序结构、选

择结构和重复结构(又称循环结构)。注意:控制程序结构的方法和作用。

8.A解析:本题也是考察switch语句中的break的作用,由于题中所有

的case分支都没有break,故将顺序执行这些分支。只要耐心按照流程

将数据累加到a上,就可以得到正确答案为Ao

9.D解析:本题主要考查的是switch语句的使用,在第一个case处,因

为满足条件所以输出字符3,但这个分支没有break语句终止,所以会

继续执行下面的分支语句,即输出字符2,这时出现break语句,结束

整个语句,即输出32。

10.A解析:运算符的优先级是::最高,其次是【】,(),等,然后是

++,再低还有->*,*,+,<<,>>,=o注意:逗号的优

先级最低。

11.C

Co【解析】例如“::”运算符就不能被重载;通过重载可以创造新的

运算方式,但是不能臆造新的运算符;定义的时候必须使用关键字

Operator,而调用时可直接使用运算符。

12.BB.【解析】快速排序的基本思想是:从表中选取一个元素(如本题中

的33),将表中小于此元素的移到前面,大于此元素的移到后面,结果

把线性表分割成两部分(两个子表),此元素插入到其分界线的位置处。

然后分别对两个子表再次分割……本题中33作为分割的中界线,第一

趟排序后排在比它小的18、9、25、12后面。

13.DD。【解析】本题考查虚函数的概念。虚函数是非静态的成员函数,

它不能是友元函数,但可以在另一个类中被声明为友元函数。虚函数必

须是类的成员函数,虚函数声明只能出现在类定义的函数原型声明中,

而不能在成员函数的函数体实现的地方,一般要求基类中说明了虚函数

后,派生类说明的虚函数应该与基类中虚函数的参数个数相等,对应参

数的类型相同。如果不相同,则将派生类虚函数的参数类型强制转换为

基类中虚函数的参数类型。

14.D

15.A

在C++中定义数组时,数组的范围参数在静态定义时必须是一个常

数,而在动态分配内存定义时可以是常数,也可以是一个赋了值的参

数故选项A是错误的定义方法。

16.A解析:和线性表类似,栈也有两种存储方法,一是顺序栈,二是链

式栈。栈的顺序存储结构是利用一组地址连续的存储单元一次存储自栈

底到栈顶的数据元素,同时附设指针top指示栈顶元素的位置,由于栈

的操作是线性表操作的特例,相对而言,链式栈的操作更易于实现。注

意:这3种运算方法在各种存储结构中的应用。

17.C

Co【解析】把x和y化为二进制,X=14表示为1110,y=15表示为

1111,所以xlly=l,A的ASCH是65,a的ASCII是97,所以

‘A'<'a'=l,因此W=l。

18.D解析:二维数组可以看作是一维数组的扩展。选项D表示的是一

个一维数不清组,里面每个元素是一个指针,而指针肯定指向某个地址,

从而完成二维数组的扩展。考生要注意选项C中*和口的运算优先级。

19.D

Do【解析】对指针所指向的地址取值时,采用的存取运算符为*。B

为取地址符。

20.D

Do【解析】C语言中规定,else与离它最近的if相匹配。

x=l,y=2,z=3,所以第一个if的条件(x>y)不成立,直接执行

printf("%d\n",x+1);语句,输出x的值1,再把x加1。

21.C

根据数据结构中各数据元素之间的前后件关系的复杂程度,一般将数

据结构分为两大类:线性结构和非线性结构。循环队列、带链队列和带

链栈都是线性结构,而二叉树是非线性结构。

22.D解析:在C语言中,所有的函数都是平行的,即在定义函数时是

互相独立的,一个函数并不从属于另一个函数,即函数不能嵌套定义,

但可以互相调用,但不能调用main函数。注意:函数不能嵌套定义,

但可以嵌套调用,故选项A)、B)和C)中的描述都错误。

23.C

Co【解析】本题考查的是析构函数和对象的生存期。在主函数中,首

先定义了一个DA类对象数组d,从初始化列表中可以看出,它包含三

个对象;然后通过new运算符动态创建了一个DA类的对象数组,并

将首地址赋给DA类指针P;接着通过delete口运算符销毁指针P所指

向的数组,故此时会输出11。最后函数结束,销毁前面定义的对象数

组d,会输出333。故最后的输出结果是11333。

24.类类解析:在C++的面向对象程序设计框架中,类是程序的基本组

成单元,程序的主体通常由若干类的定义构成。

25.voidfun(b[][22])voidfun(b[][22])解析:此题考核的知识点是函数的

定义形式与数组名作为函数的参数。函数头的定义形式是“存储类型说

明符数据类型说明符函数名(形参列表)”,此题没有涉及到函数的存储类

别。如果函数的参数是数组,其第1维的长度可以省略。因此本题的函

数首部可以写成:voidfun(b[][22])0

26.nn解析:对具有n个结点的线性表进行顺序查找,最坏情况下需要

比较n次。

27.246246解析:本题考核函数调用和静态变量。在主函数中通过一个

for循环调用了3次fun()函数。第1次调用fun()函数时,a的初始值为

0,执行语句“a+=2;"后,a的值为2,输出2。第2次调用时,a的初始

值为2,执行语句“a+=2/后,a的值为4,最后输出4。第3次调用时,

a的初始值为4,执行语句“a+=2;”后,a的值为6,最后输出6。

28.26

29.44解析:此题考查的是局部静态变量。局部静态变量是在函数或语

句块中以static关键字定义的局部变量。其作用域和普通局部变量一样

只在定义函数或语句块中有效,但生存周期却是和全局变量一样,一直

延续到程序结束。故第一次调用f(),局部静态变量s变为2。第二次调

用f(),s又自增2,所以函数f的返回值是4。

30.多对多多对多解析:联系是指现实世界中事物间的关联,在概念世

界中联系反映了实体集间的一定关系。一个工人可以加工多种零件,每

一种零件可以由不同的工人来加工,因此它们之间的联系属于多对多的

联系。

31.对象对象解析:在面向对象概念中,所有的同类的实体的抽象就构

成一个类,而类被实例化就形成一个对象。

32.谓词演算谓词演算解析:关系数据库中的关系演算包括元组关系演

算和域关系演算。二者都是由原子公式组成的公式。而这些关系演算都

是以数理逻辑中的谓词演算为基础的。

33.delete[]p;delete[]p;解析:语句为delete[]p;o

34.函数模板源代码数据类型函数模板\r\n源代码\r\n数据类型解析:

函数模板是一系列相关函数的模型或样板,这些函数的源代码形式相同,

只是所针对的数据类型不同。注意:声明一个函数的模板格式是:

template<<模板形参表声明>><函数声明>

35.x+y++或x+(y++)x+y++或x+(y++)

36.⑴应改为“TC::TC”。

⑵应改为“voidTC::display”。

⑶应改为“TC::〜TC”。

【解析1在类的外部定义成员函数时,必须在成员函数前面加上类名

和作用域运算符“::”,作用域运算符用采表示某个成员属于哪个

类,使用格式为“(类名)::(成员函数〉((参数函数)),因此第1处应改

为“TC::TC”,默认构造函数没有参数。由第2处“TC::display”后

的语句看,这是在类外实现TC函数,因此也有作用域运算符使用错

误问题,display函数返回值为void,因此第2处的语句应改为

“voidTC::display”。由第3处的语句“TC::TC”可知,显然这里是

在类外实现析构函数,析构函数是一个特殊的函数,它的名称和类名

相同,并在前面加“〜”字符,用采与构造函数加以区别,因此第3处

的语句应改为“TC::〜TC”。

37.⑴应改为“ein.getline(str,120,?);”。

⑵应改为“while(str[i])"°

,,

⑶应改为“if(str[i]>=a&&str[i]<=2)o

【解析1本题中要求以输入字符“?”为结束符,用于字符输入的流成员

函数getline函数读入一行字符,格式为“cin.getline(字符数组,字符

个数,终止标志字符)”,所以第1处改为“cin.getline(str,

120,?);第2处的“while(str)”语句应该是判断字符串str中的每一

个字符是否为结束符,若不是结束符,在循环中判断每一个字符是否

为小写,若为小写,则转换。所以应该修改为“while(str[i])”°第3处的

“if(str[i]>=a)”语句是判断字符str[i]是否为小写字符,而现有的语句只

是判断字符是否大于a,但是小写字符应该是a到2,所以修改为

“if(str[i]>=a&&str[i]>=z)”。

38.(1)“staticintn=O”应改为"staticintn;"。

(2)“intCO::n;”应改为“intCO::n=0;

(3)“cout«c.n«endl;"应改为"cout«c-〉n<<endl;

【解析】本题要在屏幕上输出两个字符,首先要静态变量初始化,第1

处应改为“staticintn;",第2处要给n赋值,第3处输出时引用c的对

象,应改为"cout<<c->n«endl;"。

39.(1)应改为"usingnamespacestd;

\n(2)应改为"outl.open('l.txt',ios::binary|ios::app);

\n(3)应改为“outl.put(s[i]);”。

\n【解析】本题第1处的“usingstd广是在程序中引入标准命名空间std,

对于C++中弓I入标准命名空间的格式,缺少namespace,所以第1处

的语句修改为“usingnamespacestd;"。第2处,调用成员函数open中,

输入、输出方式是在ios类中定义的,所以“outl.open是.txt',binary|

app)厂语句缺少类ios,即第2处的语句修改为“outl.open。.txt]ios::

binary|ios::app);”。第3个标识应该用流成员函数put输出字符,所

以第3处的语句修改为“outl.put(s[i]);”。

40.⑴应改为“TC::TC”。

5⑵应改为"voidTC::display”。

\n(3)应改为“TC::~TC”。

\n【解析】在类的外部定义成员函数时,必须在成员函数前面加上类名

和作用域运算符“::”,作用域运算符用采表示某个成员属于哪个类,使

用格式为“(类名)::〈成员函数〉((参数函数)),因此第1处应改为“TC::

TC”,默认构造函数没有参数。由第2处“TC::display”后的语句看,这

是在类外实现TC函数,因此也有作用域运算符使用错误问题,display

函数返回值为void,因此第2处的语句应改为“voidTC::display"。由第

3处的语句“TC::TC”可知,显然这里是在类外实现析构函数,析构函

数是一个特殊的函数,它的名称和类名相同,并在前面加“~”字符,用

采与构造函数加以区别,因此第3处的语句应改为“TC::~TC”。

41.⑴应改为“TCobjl(l);

(2)应改为“Objl.SetNumber(lO);

(3)应改为“0bj2.SelNumber(lOO);

【解析】本题第1处的“TCobjl;”语句是声明TC类的对象Objl,根据

TC类构造函数的定义TC(inti),存在整型参数,并且题目要求第一个

输出结果两1,所以补全参数1,即第1处的“TCobjl(l);第2处处

的“objl.number=10;”应该是调用成员函数SetNumber赋值。在C+

+中成员函数的使用形式应该是:对象名.成员函数,所以修改为

“objl.SetNumber(lO);类是对象的抽象,而对象是类的具体实

例。第3处“TC.SetNumber(lOO);”语句中的TC为类,并不是对象,

这里应该使用定义的对象,即obj2,所以将语句修改为

“obj2.SetNumber(lOO);

42.(1)应改为"usingnamespacestd;

(2)应改为"outl.open("l.txt",ios::binaryIios::app);

(3)应改为“outl.put(s[i]);

【解析】本题第1处的“usingstd;”是在程序中引入标准命名空间std,

对于C++中引入标准命名空间的格式,缺少namespace,所以第1处

的语句修改为“usingnamespacestd;第2处,调用成员函数open

中,输入、输出方式是在ios类中定义的,所以“outl.open("l.txt",

binaryIapp);”语句缺少类ios,即第2处的语句修改为

“outl.open("l.txt",ios::binaryIios::app);第3个标识应

该用流成员函数put输出字符,所以第3处的语句修改为

“outl.put(s[i]);”。

43.(1)应改为“ein.getline(str,120,?);

\n⑵应改为"while(str[i])"°

\n⑶应改为“if(str[i]>=a&&str[i]<=2)"°

\n【解析】本题中要求以输入字符“?”为结束符,用于字符输入的流成员

函数getline函数读入一行字符,格式为“cin.getline(字符数组,字符个

数,终止标志字符字所以第1处改为“cin.getline(str,120,?);第

2处的“while(str)”语句应该是判断字符串str中的每一个字符是否为结

束符,若不是结束符,在循环中判断每一个字符是否为小写,若为小写,

则转换。所以应该修改为“while(str[i])"°第3处的“if(str[i]>=a)”语句是

判断字符str[i]是否为小写字符,而现有的语句只是判断字符是否大于a,

但是小写字符应该是a到2,所以修改为“if(str[i]>=a&&str[i]>=z)”。

€t,,

44.(l)voidmaino

⑵“intm=0144;”。

(3)“intn=OX25;”或"intn==0x25;”。

【解析】本题主要考查了主函数定义及幕同进制之间的转换,包括十

进制到八进制,十进制到十六进制。主函数定义的定义形式为

“mai

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论