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

下载本文档

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

文档简介

2021年浙江省湖州市全国计算机等级考试

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

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

一、1.选择题(10题)

1.下列描述正确的是()。

A.表示m>n为true或m<n为true的表达式为m>n&&m<n

B.switch语句结构中必须有default语句

C.if语句结构中必须有else语句

D.如果至少有一个操作数为true,则包含运算符的表达式为true

2.已知有定义:

constintD=5;

inti=1;

doublef=0.32;

charc=15;

则下列选项错误的是

A.++i;B.D——;C.c++;D•——f;

3.若有intx=2,y=3,z=4,m;则在计算表达式m=(x<y)?z+2:z-4后,

m的值为o

A.6B.5C.4D.2

4.下列叙述中正确的是

A.黑箱(盒)测试方法完全不考虑程序的内部结构和内部特征

B.黑箱(盒)测试方法主要考虑程序的内部结构和内部特征

C.白箱(盒)测试不考虑程序内部的逻辑结构

D.上述三种说法都不对

5.下列说法中错误的是()。

A.公有继承时基类中的public成员在派生类中仍是public的

B.公有继承时基类中的private成员在派生类中仍是private的

C.私有继承时基类中的public成员在派生类中是private的

D.保护继承时基类中的public成员在派生类中是protected的

6.下列语句中正确的是

A.char*myString=''Hello-World!'';

B.charmyString="Hello-World!";

C.charmyString[ll]=,,Hello-World!;

D.charnlyString[12]="Hello-World!";

7.有以下程序:#include<iostream>usingnamespacestd;classTestClass

{public:TestClass(intn){number=n;}〃拷贝构造函数

TestClass(TestClass&other){number=other.number;}〜TestClass(){}

private:intnumber;};TestClassfun(TestClassP){TestClasstemp(p);return

temp;}intmain(){TestClassobjl(10),obj2(0);TestClassobj3(obj1);

obj2=fun(obj3);return0:}程序执行时,TestClass类的构造函数被调用的

次数是()。

A.2B.3C.4D.5

8.关于虚函数,下列表述正确的是()。

A.如果重定义虚函数时使用了保留字virtual,则该重定义函数仍然是虚

函数

B.虚函数不得声明为静态函数

C.虚函数不得声明为另一个类的朋友函数

D.派生类必须重新定义基类的虚函数

9.下面程序的执行结果是#include"iostream.h"void

main(){int*p,r;p=newin;*p=20;

r=sizeof(*p);cout<<r<<endl;delete

P;1

A.程序错误B.内存为20地址的大小.C.20D.4

10.下列描述中正确的是()o

A.软件工程只是解决软件项目的管理问题

B.软件工程主要解决软件产品的生产率问题

C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则

D.软件工程只是解决软件开发中的技术问题

二、单选题(13题)

11.下面有关重载函数的说法中正确的是

A.重载函数必须具有不同的返回值类型

B.重载函数形参个数必须不同

C.重载函数必须有不同的形参列表

D.重载函数名可以不同

12.若磁盘上已存在某个文本文件,其全路径文件名为d:\shiti\tes.txt,

下列语句中不能打开该文件的是()o

A.ifstreamfile("d:\shiti\test.txt");

B.ifstreamfile("d:\\shiti\\test.txt");

C.ifstreamfile;file.open("d:\\shiti\\test.txt");

D.ifstream*pFile=newifstream("d:\\shiti\\test.txt");

13.有下列程序:

#include<stdiO.h>

voidmain()

{inta=S,b=l,t;

t=(a«2)|b;printf("%d\n",t);

)

程序运行后的输出结果是()oA.21B.llC.6D.1

14.下面关于类和对象的描述中,错误的是()。

A.类就是C语言中的结构体类型,对象就是C语言中的结构体变量

B.类和对象之间的关系是抽象和具体的关系

C.对象是类的实例,一个对象必须属于一个已知的类

D.类是具有共同行为的若干对象的统一描述体

15.

21.可以用p.a的形式访问派生类对象p的基类成员a.其中a是().

A.私有继承的公有成员B.公有继承的私有成员

C.公有继承的保护成员D.公有继承的公有成员

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

()o

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

17.下列程序的运行结果为()。#include

voidmain{inta=2:intb=a+l:cout<<a/b<<endl:A.O.66667B.OC.O.7

D.O.66666666...

18.在下列枚举符号中,用来表示“相对于当前位置”文件定位方式的是

()O

A.ios_base::cur

B.ios_base::beg

C.ios_base::Out

D.ios_base::end

19.下列有关继承和派生的叙述中,正确的是()。

A.派生类不彘访问基类的保护成员

B.作为虚基类的类不能被实例化

C.派生类应当向基类的构造函数传递参数

D.虚函数必须在派生类中重新实现

20.在“文件包含”预处理语句的使用形式中,当#include后面的文件名

用“”括起时,寻找被包含文件的方式是

A.直接按系统设定的标准方式搜索目录

B.先在源程序所在的目录搜索,再按系统设定的标准方式搜索

C.仅仅搜索源程序所在目录

D.仅仅搜索当前目录

21.若有以下定义:chars(10)="program",t[]="test";则下列选项中对

字符串操作错误的是()。

A.strcpy(s,t);B.strcat(s,t);C.cout<<strlen(s);D.gets(s);

22.建立派生类对象时,3种构造函数分别是a(基类的构造函数)、b(成员

对象的构造函数)、C(派生类)构造函数),这3种构造函数的调用顺序为

()o

A.abCB.aCbC.CabD.Cba

23.若在表达式y/x中,“/”是作为成员函数重载的运算符,则该表达

式还可以表示为

A.x.operator/(y)

B.operator/(x,y)

C.y.operator/(x)

D.operator/(y,x)

三、2.填空题(12题)

24.以下程序输出的结果是[】。

#include<iostream,h>

voidmain()

(

inta=5,b=4,c=3,d;

d=(a>b>C);

cout<<d;

)

25.C++语言中关键字运算符有new,delete和[]o

26.下列程序编译错误,因为add函数返回值是一个引用,故对return

后返回值的要求是【]o

#include<iostream,h>

int&add(intx,inty)

(

returnx+y;

1

voidmain()

inti=3,j=19;

cout<<(add(i,j)+=20)<<endl;

27.利用表达式a[i]可以访问int型数组a中下标为i的元素。在执行了

语句int*p=a后,利用指针p也可访问该元素,相应的表达式是_____o

28.程序的测试方法分为静态分析和动态分析。使用测试用例在计算机

上运行程序,使程序在运行过程中暴露错误,这种方法称为【]o

29.当数据的物理结构(存储结构、存取方式等)改变时,不影响数据库的

逻辑结构,从而不致引起应用程序的变化,这是指数据的【】。

30.将x+y*z中的“+”用成员函数重载,“*”用友元函数重载应写为[】。

31.若结点的存储地址与其关键字之间存在某种映射关系,则称这种存

储结构为【】。

32.C++中封装性、继承性和【】是面向对象思想的主要特征。

33.软件开发环境是全面支持软件开发全过程的集合。

34.友元类的所有成员函数都是另一个类的【】。

35.用以下语句调用库函数malloc,使字符指针st指向具有11个字节

的动态存储空间,请填空。

st=(char*)【];

四、程序改错题(10题)

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

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

number=l

number=10

number=100

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

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

试题程序:

#include<iostream.h>

classTC

(

public:

TC(inti)

(

number=i;

)

voidSetNumber(intm)

(

number=m;

)

intGetNumberconst

(

returnnumber;

voidPrintconst

cout«"number="«number«endl;

private:

intnumber;

);

voidmain

II********epj^or********

TCobjl;

objl.Print;

TCobj2(3);

II********epj^or********

objl.number=10;

II********ej*j*0]*^^o******

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

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

行时有错误,请改正程序中的错误,使得程序输出:

9,8,7,6,5

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

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

试题程序:

#include(iostream.h>

classTC

I********epj*or********I

TC(inti)

(

m_i=i;

)

voidprint

(

cout«-m_i«,;

)

public:

intm_i;

intmain

!********6j*j*or********!

inti;

TC04(10);

while(i>5)

!**************I

1++

04.print;

cout«endl;

returnO;

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

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

Constructor,i=0,

Destructor

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

可。

试题程序:

#include(iostream.h)

classTC

(

inti;

public:

TC;

voiddisplay;

〜TC;

};

/I******ej*por******

TC:TC

(

cout«"Constructor"«",";

i=0;

I/******ej*j^0r******

TC:display

(

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

)

I/******ej^0r******

TC:TC

(

COUI«"Destructor"«endl:

)

voidmain

(

TCa;

a.display;

)

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

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

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

到屏幕中。

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

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

试题程序:

#include<iostream.h>

voidmain

inti=O;

charstr[120];

cout«"Enterastringendwith?."«endl;

/I********epj*or********

cin.getline(str,120);

II********epj^or********

while(str)

/I********epj*or********

if(str[i])=a)

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

i++;

)

cout«str«endl;

return;

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

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

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

程序异常,输出信息为

error

O

ERROR

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

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

试题程序:

#include<iostream.h)

intmain

(

try

(

throw("error");

//********epj^or********

catch(chars)

(

cout«s«endl;

try

(

throw((int)0);

/j********epj'or********

catch

(

cout«i«endl;

)

try

(

throw(O);

throw("error");

II**************

catch

cout«"ERROR"«endl;

returnO;

)

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

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

number=l

number=10

number=100

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

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

试题程序:

#include<iostream.h>

classTC

(

public:

TC(inti)

(

number=i;

)

voidSetNumber(intm)

(

number=m;

}

intGetNumberconst

retumnumber;

voidPrintconst

cout«"number="«number«endl;

)

private:

intnumber;

voidmain

II********ep^or********

TCobjl;

objl.Print;

TCobj2(3);

II********ep^or********

objl.number=10;

II********ej*j*or*^^o******

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

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

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

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

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

构,错误的语句在

//************白勺­।日j°

试题程序:

#include<iostream>

#include<fstream>

/I********ep^or********

usingstd;

voidWriteFile(char*s)

(

ofstreamoutl;

/I********ep^or********

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

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

II**************

outl.puts(s[i]);

}

outl.close;

)

voidClearFile

(

ofstreamoutl;

outl.open("l.txt");

outl.close;

intmain

chars[1024];

ClearFile;

cout«"pleaseinputastrin9:"«endl;

cin.getline(s,1024);

WriteFile(s);

returnO;

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

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

100

37

32

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

可。

试题程序:

#include<iostream.h>

//******epj*or******

voidmain

(

I/******epj^or******

intm=0142:

/I******epj*or******

intn=0X27:

intq=32;

cout<<m<<endl;

cout<<n<<endl;

cout<<q<<endl;

return;

)

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

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

Constructor,i=0,

Destructor

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

试题程序:

#include(iostream.h)

classTC

(

inti;

public:

TC;

voiddisplay;

-TC;

);

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

cout«"Constructor"«",";

i=0;

)

II******ej*^*or******

TC:display

(

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

}

II**********

TC:TC

(

COUI«"Destructor"«endl:

}

voidmain

(

TCa;

a.display;

)

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

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

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

程序异常,输出信息为

error

O

ERROR

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

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

试题程序:

#include<iostream.h)

intmain

(

try

(

throw("error");

II********ej*j*01********

catch(chars)

(

cout«s«endl;

try

(

throw((int)0);

II**************

catch

(

cout«i«endl;

)

try

(

throw(O);

throw("error");

//********epj^or********

catch

cout«"ERROR"«endl;

returnO;

五、综合应用题(2题)

46.使用VC++6.。打开考生文件夹下的源程序文件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)

(

//********2********

AllWeight+=w:

AllNo++:

)

〜TCFruit

(

//********3********

A11Weight-=Weight:

)

voiddisplay

('

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

endl;

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

cout«"Allsellweight:"<<AllWeight«"k9"«

endl«endl;

)

};

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

floatTCFruit::AllWeight=O.0;

intmain

TCFruitFruitl(l.2);

Fruitl.display;

TCFruitFruit2(2.3);

Fruit2.display;

returnO;

47.请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程

proj3,其中声明的CDeepCopy是一个用于表示矩阵的类。请编写这个

类的赋值运算符成员函数Operator:,以实现深层复制。

要求:

,力****************666*************"J^间o不多改的部

分。

注意:程序最后将结果输出到文件out.dat中。输出函数writeToFile

已经编译为obj文件,并且在本程序中调用。

//CDeepCopy.h

#include<iostream>

#include<string>

usingnamespacestd;

classCDeepCopy

public:

intn;//动态数组的元素个数

int*p;〃动态数组首地址

CDeepCopy(int);

CDeepCopy;

CDeepCopy&operator=(constCDeepCopy&r);//赋值运算符函数

);

voidwriteToFile(char});

//main,cpp

#include,,CDeepCopy.h"

CDeepCopy::一CDeepCopy{delete[]P;}

CDeepCopy::CDeepCopy(intk){n=k;p=newint[n];}〃构造函数实现

CDeepCopy&CDeepCopy::Operator=(constCDeepCopy&r)〃赋值运算

符函数实现

〃//半半举”举举举举举举举举举

//***********666***********

intmain

CDeepCopya(2),d(3);

a.p[O]=l;d.p[O]=666;〃对象a,d数组元素的赋值

CDeepCopyb(3);//调用赋值运算符函数

a.p[O]=88;b=a;

cout«b.p[O];〃显示内层局部对象的数组元素

cout«d.p[O];//显示d数组元素a.p[O]的值

cout«”dfadeaway;\n";

cout«a.p[0];//显示a数组元素a.p[0]的值

,,,,

writeToFile();

return0;

)

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

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

test26_3.cpp,其中定义了类queue,但该类的定义并不完

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

⑴完成类queue的无参数的构造函数的定义,要求把数据成员bl和el

都初始化为0,同时输出queueinitializedo请在注释“〃**1**”之后添加

适当的语句。

(2)完成类queue的成员函数qput(intj)的定义它的功能是把新的元素

加入队列,过程是先依据bl的值判断数组是否已经满了,如果是就输出

queueisfull,否则bl自加一,并且把参数j的值存入bl指向的数组元

素中,请在注释“〃**2**”之后添加适当的语句。

(3)完成类queue的成员函数qget()的定义,它的功能是把队列开头的元

素提取出队列,并返回该值,过程是先比较el和bl的值判断队列是否

已空,如果是就输出queueisempty,否则el自加一,并且把el指向的

数组元素返回,请在注释“〃**3**”之后添加适当的语句。

程序输出结果如下:

queueinitialized

queueinitialized

3311

4422

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

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

#include<iostream.h>

classqueue

(

intq[100];

intbl,el;

public:

queue();

voidqput(intj);

intqget();

);

queue::queue()

〃**1**

1

voidqueue::qput(intj)

(

〃**2**

(

cout<<"queueisfull\n";

return;

)

bl++,

q[bi]=j;

intqueue::qget()

H**3**

(

cout<<"queueisempty\n";

return0;

)

el++;

returnq[el];

)

voidmain()

(

queueaa,bb;

aa.qput(ll);

bb.qput(22);

aa.qput(33);

bb.qput(44);

cout<<aa.qget()<<""<<aa.qget()<<"\n";

cout<<bb.qget()<<""<<bb.qget()<<"\n";

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

test29_3.cpp,其中定义了二维坐标类Coordinate和三维坐标类

ThreeDCoord,其中ThreeDCoord类由Coordinate类public派生,但两

个类的定义并不完整。请按要求完成下列操作,将程序补充完整。

⑴定义类Coordinate的保护数据成员x和y,它们都是int型的数据,

代表二维坐标的横纵坐标值。请在注释“〃**1**”之后添加适当的语句。

(2)根据类Coordinate定义后的成员函数Display的实现,补充该函数在

类Coordinate定义体内的声明,Display为二维坐标类的虚函数。请在注

释“〃**2**。,,之后添加适当的语句。

(3)完成二维坐标类Coordinate的构造函数,将参数a和b分别赋值给数

据成员x和yo请在注释“〃**3**”之后添加适当的语句。

(4)根据ThreeDCoord类构造函数的声明,补充ThreeDCoord构造函数

的实现,参数a和b通过调用基类的构造函数来初始化基类的数据成员

x和y,c赋值给数据成员2。请在注释“//**4**”之后添加适当的语句。

输出结果如下;

[1,2]

[3,4,5]

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

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

#include<iostream,h>

classCoordinate

{protected:

〃**]**

public:

Coordinate(inta=0,intb=0);

〃**2**

);

Coordinate::Coordinate(inta,intb)

(

〃**3**

)

voidCoordinate::Display()const

cout<<'['<<x<<","<<y<<']'<<endl;

classThreeDCoord:publicCoordinate

intz;

public:

ThreeDCoord(inta=0,intb=0,intc=0);

virtualvoidDisplayOconst;

);

〃**4**

voidThreeDCoord::Display()const

(

cout<<'['<<x<<","<<y<<","<<z<<']'<<

endl;

}

voidmain()

(

Coordinatec(l,2);

ThreeDCoordt(3,4,5);

c.Display();

t.Display();

参考答案

l.D解析:本题主要考查Ct+语言的基本语法,选项A中应该为m>

n||m<n:选项B中default语句可有可无;选项C中订可以单独作为一

条语句,不必须和else搭配。

2.B解析:“+-”运算符不能用于常量。

3.A

4.A解析:黑箱测试方法完全不考虑程序的内部结构和内部特征,而只

是根据程序功能导出测试用例,选项A是正确的,选项B错误。白箱

测试是根据对程序内部逻辑结构的分析来选取测试用例,选项C错误。

正确答案为A。

5.B解析:公用继承时基类中的公用成员和保护成员在派生类中保持原

有访问属性,其私有成员仍为基类私有。私有继承时,基类的公有成员

和保护成员在派生类中成了私有成员,其私有成员仍为基类私有。受保

护的继承时,基类的公用成员和保护成员在派生类中成了保护成员,其

私有成员认为基类私有。

6.A解析:选项C、D的数组下标超界,•对于选项B,不能将字符串赋

值给字符,可以将一个字符串赋值给字符指针,指针指向字符数组的首

地址。

7.C解析:objl(10)执行一次构造函数,obj2(0)也执行一次构造函数;

obj3(objl)t3t.objl作为参数执行一次构造函数;fun(obji3)中的temp(p)

将执行一次构造函数,而fun本身是以按值传递参数,形参在fun函数

内也要分配独立的空间,所以也要执行一次构造函数,其返回结果也是

TestClass类型的,同样需要执行一次构造函数,所以一共要执行4次。

8.B

9.D解析:理解sizeof的用法,它可以运算出各种数据类型所占内存空

间的多少。注意:选项C)中是指针p所指向的内存地址中内容是20。

注意:在用完申请后的内存应立刻释放。

10.C

\r\n

软件工程是试图用工程、科学和数学的原理与方法研制、维护计算机

软件的有关技术及管理方法。软件工程的主要思想是强调在软件开发

工程中需要应用工程化的原则。软件工程用来解决以下问题:软件需

求的增长得不到满足、软件开发成本和进度无法控制、软件质量难以

保证、软件不可维护或维护程度低、软件得成本不断提高、软件开发

生产率的提高赶不上硬件的发展和应用需求的增长。软件项目的管

理、软件产品的生产率、软件开发中的技术都是软件工程需要解决的

部分问题。因此选项C正确。

11.C解析:函数重载允许用同一个函数名定义多个函数。被重载的函数

必须要有不同的形参列表。不可以根据函数返回值类型来重载函数。

12.A

13.A

Ao【解析】本题考查移位运算符在程序中对5逻辑左移2位,其值扩

大4倍等于20,然后再进行按位运算,其值等于21。

14.A解析:在C++语言中,类和结构体有本质区别,类中包含数据及

操作函数,而结构体只包含有数据。

15.D

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

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

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

17.B

表达式值的类型是由操作数的类型决定的,因为本题的两个数都是int

型的,所以得出的结果也为int型,即去掉小数点后的部分,只取商的

整数部分。

18.A

Ao【解析】主要考查文件流的定位问题。冀中iosbase::beg表示相

对于文件首,ios_base::cur表示相对于当前位置(负数表示当前位置

之前),ios_base::end表示相对于文件尾,ios_base::out表示在文

件流的建立中为文件的输出而打开。

19.C

派生类可以访问基类的保护成员,而不能访问基类的私有成员。作为

虚基类的类可以被实例化。虚函数如果没有派生类中重新实现,那么

仍然使用基类的成员函数。

20.B

21.B

22.A

本题考查的是在继承中派生类的对象调用构造函数的顺序,应该是先

调用基类的构造函数,然后是成员中的对象对应类的构造函数,最后

是派生类自己的构造函数。

23.C

解析:“/”是一个二元运算符,作为成员函数重载时形参表中只有一

个参数,对应于第二操作数,而第一操作数就是对象本身,以this指

针的形式隐藏在形参表中。本题中,y为第一操作数,x为第二操作

数,故正确答案为C。

24.00解析:水题的关键在于对变量c的赋值运算:

d=(a>b>c)

d=(5>4>3)

先算5>4,为真,得1,即:d=(l>3),此时1>3,为假,得0。

25.sizeofsizeof解析:C++语言中关键字运算符有3个分别new,delete

和sizeof。new是申请内存,delete是释放内存,sizeof是求字节数。

26.不能是表达式不能是表达式解析:引用是变量的别名,其实质是变

量的地址。return在返回值时,如果其后为表达式,则系统为该表达式

生成一个临时变量用于存放该表达式的结果,函数执行完毕之后该变量

被系统回收,因此,返回的该变量的地址对调用函数来说已经没有意义

了。

27.*(p+i)*(p+i)解析:指针p指向数组首地址,p+i指向第i个元素地

址,贝U*(p+i)表示第i个元素的值。

28.动态分析动态分析解析程序的测试方法分为静态分析和动态分析。

使用测试用例在计算机上运行程序,使程序在运行过程中暴露错误,这

种方法称为动态分析。

29.物理独立性物理独立性解析:数据独立性是数据与程序间的互不依

赖性,即数据库中数据独立于应用程序而不依赖于应用程序。也就是说,

数据的逻辑结构、存储结构与存取方式的改变不会影响应用程序。数据

独立性一般分为物理独立性与逻辑独立性两级。

30.operator+(operator*(yz))operator+(operator*(y,z))解析:C++中用成员

函数重载x*y为:x.operator*(y),用友元函数重载x*y为:operator*(x,

y),用成员函数重载x+y为:x.operator+(y),用友元函数重载x+y为:

operator+(x,y)o

31.顺序存储结构顺序存储结构

32.多态性多态性解析:面向对象系统包含了三个特征-封装性、继承性

和多态性,这三个特征可以很好的实现数据抽象,进行行为共享,完成

进化求解和描述一个系统的确定行为。

33.软件工具软件工具解析:软件开发环境或称软件工程环境是全而支

持软件开发全过程的软件工具集合。这些软件工具按照一定的方法或模

式组合起来,支持软件生命周期内的各个阶段和各项任务的完成。

34.友元函数友元函数解析:C++语言中友元类中的函数都是另一个类

的友元函数。

35.malloc(ll)或malloc(sizeof(char)*11)malloc(11)或

malloc(sizeof(char)*11)解析:malloc函数的参数可以是一个具体的常数,

也可以是一个表达式。在本题中,可以是malloc(ll),也可以借助于sizeof

运算符来表示。

36.⑴应改为“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+

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

,5

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

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

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

“obj2.SetNumber(lOO);

37.⑴应添加“public:"。

\n(2)“inti”应改为“inti(10);

\n(3)“i++;”应改为“i-

\n【解析】本题主要考查的是成员的访问属性。成员的访问属性有公有、

保护和私有3种,而默认的访问属性为私有,只有公有成员才能通过类

的对象被访问。故应在构造函数前添加“public:否则该类无法被实例

化。变量的初始化可以通过“=”号,也可以和初始化对象一样添加构造

参数,题目已要求使用后者。本题要求输出5个数,while的循环变量i

每次减1,在i>5时循环,故i初始化应为10。若循环中i每次增1,则

循环永远不会退出。

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

(2)应改为"voidTC::display”。

(3)应改为“TC::〜TC”。

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

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

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

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

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

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

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

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

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

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

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

(2)应改为"while(str[i])”。

,?

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

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

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

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

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

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

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

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

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

5,

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

40.⑴应改为"catch(char*s)”。

(2)应改为"cateh(inti)”。

(3)应改为"catch(…)”。

【解析】本题中第1个标识前的异常抛出语句为“throw("error");",其

中的类型为字符串。所以对应的异常捕捉语句catch中应该符合这个类

型,而程序中给出的语句“catch(chars)”是字符型的,所以第1处的语

句修改为“catch(char*S)”。第2个标识前的异常抛出语句为

“throw((int)0);”,其中的类型为int。对应的异常捕捉语句catch中应

该符合这个类型,所以补充catch子句中的类型,否则如果找不到匹配

的catch块,系统就会调用一个系统函数,使程序终止运行。即第2处

的语句修改为"catch(inti)”。如果在catch子句中没有指定异常信息的类

型,那么就用删节号“…”表示它可以捕捉任何类型的异常信息,即修

改为“catch(…)”。

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

\n(2)应改为“Objl.SetNumber(lO);”。

\n(3)应改为“0bj2.SelNumber(lOO);"。

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

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

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

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

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

,5

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

第3处叮5$61m11^1'(100);”语句中的立为类,并不是对象,这里

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

“obj2.SetNumber(lOO);

42.(1)应改为"usingnamespacestd;

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

5,

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

【解析】本题第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]);?,o

43.(l)“voidmain”。

(2)“intm=0144;

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

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

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

“main”,函数名之后必须是一对括号,因此第1处应改为“voidmain”。

cout输出默认是以十进制方式输出的,根据题目要求输出的结果可发

现变量的初值不正确,十进制的100对应八进制的144,卡进制的37

对应十六进制的25,因

温馨提示

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

评论

0/150

提交评论