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

付费下载

下载本文档

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

文档简介

2022年山西省吕梁市全国计算机等级考试

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

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

一、1.选择题(10题)

1.对长度为n的线性表进行顺序查找,在最坏情况下需要比较的次数为

()o

A.125B.n/2C.nD.n+1

2.下列对于虚函数和重载函数的叙述,正确的是()。

A.虚函数要求函数名、返回值类型和参数序列完全相同

B.重载函数要求函数有相同的返回值类型和函数名称,并有不同的参数

序列

C.虚函数是根据对象的不同去调用不同类的虚函数

D.虚函数和重载函数都是在运行时表现出多态功能

3.下列不是数据字典通常包括的内容的是()o

A.数据项B.数据结构C.数据流D.数据元素

4.结构化程序设计所规定的三种基本控制结构是()。

A.for、while,swishB输入、输出、处理C.顺序结构、选择结构、循环

结构D.主程序、子程序、函数

5.下列关于静态数据成员的描述中,正确的是()。

A.静态数据成员是类的所有对象共享的数据

B.类的每个对象都有自己的静态数据成员

C.类的不同对象有不同的静态数据成员值

D.静态数据成员不能通过类的对象调用

6.

有如下函数模板声明:template<typenameT>TMax(Ta,TB){return(a>=B)?a:b;}下列对函

数模板Max的调用中错误的是

A)Max(3.5,4.5)

B)Max(3.5,4);

0Max<double>(3.5,4.5)

D)Max<double>(3.5,4)

7.若类A和类B的定义如下:classA{inti,j;public:intgeti(){return

i;}};classB:publicA{intk;public:voidmake(){k=i*j;}};

则上述定义中非法的表达式是()。

A.k=i*jB.intk;C.retumi;D.voidmake()

8.下列叙述中正确的是

A.数据的逻辑结构与存储结构必定是一一对应的

B.由于计算机的存储空间是向量式的存储结构,因此,数据的存储结构

一定是线性结构

C.程序设计语言中的数组一般是顺序存储结构,因此,利用数组只能处

理线性结构

D.以上3种说法都不对

9.为了使模块尽可能地独立,要求o

A.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强

B.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱

C.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱

D.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强

10.下面内容不属于使用软件危机的是()。

A.软件质量难以保证B.软件的成本不断提高C.软件需求增长缓慢D.

软件不可维护或维护程度非常低

二、单选题(13题)

11.有如下程序#include<iostream>#include<iomanip>using

namespacestd;classMyClass{public:MyClass(){cout<<

'A';}MyClass(charc){cout<<c;}~MyClass(){cout<<'B';}};intmain()

{MyClasspl,*p2;p2=newMyClass('X');deletep2;return0;}执行这个程序

屏幕上将显示输出()。

A.ABXB.ABXBC.AXBD.AXBB

12.结构化程序设计的三种基本结构是()。

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

调用、返回和转移

13.有以下程序:classDate{public:Date(inty,intm,intd);{year=y;

month=m;day=d;}Date(inty=2000){year=y;month=10;day=1;}

Date(Date&d){year=d.year;month=d.month;day=d.day;}voidprint()

{cout<<year<<<<month<<<<day<<endl;}private:int

year,month,day;};Datefun(Dated){Datetemp;temp=d;resurntemp;}

intmain(){Datedatel(2000,l,l),date2(0,0,0);Datedate3(datel);date2=

fun(date3);return0;)程序执行时,Date类的拷贝构造函数被调用的次

数是

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

14.下列关于栈的叙述正确的是()。

A.栈顶元素最先被删除B.栈顶元素最后才能被删除C.栈底元素永远

不能被删除D.以上三种说法都不对

15.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定

的图符构成。下列图符名标识的图符不属于数据流图合法图符的是

()o

A.控制流B.加工C.数据存储D.源和潭

16.下列程序输出的结果是()。#include<stdio.h>subl(chara,charb)

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

sub3(char*a,char*b){charc;c=*a;*a=*b;*b=c;}voidmain(){chara,b;

a='A';b='B';subl(a,b);putchar(a);putchar(b);

a='A';b='B';sub2(&a,b);putchar(a);putchar(b);

a='A';b='B';sub3(&a,&b);putchar(a);putchar(b);putchar('\n');}

A.BABBABB.ABBBBAC.ABBABAD.ABABBA

17.下列运算符中,在C++语言中不能重载的是()。

A.*B.>=C.::D./

18.对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次

数为()o

A.log2nB.n/2C.nD.n+1

19.有如下类定义:

classXX{

intXX;

public:

xx():xx(0){tout«A;}

XX(intn):xx(n){cout«B;}

};

classY:Y:publicXX{

intYY;

public:

YY():YV(O){cout«YY;)

YY(intn):xx(n+l),YY(n){cout«YY;}

YY(intm,intn):XX(m),YY(n){cout«yy;)

};

下列选项中,输出结果为AO的语句是

A.YYyl(O,0);B.YY72(1);C.YYy3(0);D.YYy4;

20.下列关于构造函数的描述中,错误的是()

A.构造函数可以设置默认参数

B.构造函数在定义类对象时自动执行

C.构造函数可以是内联函数

D.构造函数不可以重载

21.下列叙述中,不属于测试的特征的是()o

A.测试的挑剔性B.完全测试的不可能性C.测试的可靠性D.测试的经

济性

22.已知chara;intb;floatC;doubled;则表达式a*b+c-d的结果为()。

A.doubleB.intC.floatD.char

23.C++语言是以哪种语言为基础逐渐发展演变而成的一种程序设计语

A.ASPB.CC.VBD.Java

三、2.填空题(12题)

24.如果一个类中含有纯虚函数,则该类称为【】。

25.数据独立性分为逻辑独立性与物理独立性。当数据的存储结构改变

时,其逻辑结构可以不变,所以,基于逻辑结构的应用程序不必修改,

称为【】。

26.不改变关系表中的属性个数但能减少元组个数的是____o

27.在面向对象的设计中,用来请求对象执行某一处理或回答某些信息

的要求称为【】。

28.数据模型分为格式化模型和非格式化模型,则关系模型属于【】

模型。

29.在下面程序的横线处填上适当的语句,使该程序的输出为12。

#include<iostream>

usingnamespacestd;

classBase

(

public:

inta;

Base(inti){a=i;}

classDerived:publicBase

(

inta;

public:

Derived(intx):Base(x),b(x+1){}

voidshow()

{

;〃输出基类数据成员a的值

cout<<b<<endl;

)

);

intmain()

(

Derivedd(l);

d.show();

return0;

30.若a=12,b=14,c=0,则表达式“((y=(a>B)?a:B)>C)?y:c”的值为

【】。

31.结构化程序设计的一种基本方法是【】法。

32.含有纯虚函数的类称为o

33.下面程序编译时发现ma[3]=9错误,其原因是____。

#include<iostream.h>

classFunArray

(

int*pa;//指向一个数组空间

intsize;//数组元素个数

public:

FunArray(inta[],intthesize):pa(a),size(thesize){}

intSize(){returnsize;}

)

);

voidmain()

{

ints[]={3,7,2,l,5,4);

FunArrayma(s,sizeof(s)/sizeof(int));

ma[3]=9;

cout<<ma[3]<<endl;

)

34.在C++语言中每个类都有一个【】指针,该指针指向正在调用成员

函数的对象。

35.所有的函数模板定义都是以关键字template开始的,在template之

后使用【】括起来的形参表。

四、程序改错题(10题)

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

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

Constructor,i=0,

Destructor

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

可。

试题程序:

#include(iostream.h)

classTC

(

inti;

public:

TC;

voiddisplay;

〜TC;

};

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

TC:TC

{

cout«"Constructor"«",";

i=0;

)

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

TC:display

(

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

)

/!******error******

TC:TC

(

COUI«"Destructor"«endl:

)

voidmain

(

TCa;

a.display;

)

37.使用VC++6.。打开考生文件夹下的源程序文件

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

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

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

构,错误的语句在

II******error******-"jo

试题程序:

#include<iostream>

#include<fstream>

********eiror********

usingstd;

voidWriteFile(char*s)

ofstreamoutl;

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

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

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

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

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;

)

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

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

number=1

number=10

number=100

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

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

试题程序:

#include<iostream.h>

classTC

(

public:

TC(inti)

{

number=i;

)

voidSetNumber(intm)

(

number=m;

)

intGetNumberconst

{

retumnumber;

)

voidPrintconst

(

cout«"number="«number«endl;

)

private:

intnumber;

};

voidmain

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

TCobjl;

objl.Print;

TCobj2(3);

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

objl.number=10;

II********ej*j*or*******

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

)

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

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

确。

程序输出:

8

8

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

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

试题程序:

#include(iostream.h>

classCO

(

public:

I********enor*****

staticintn=O:

CO

(

n++:

)

〜CO

):

I********error********

intCO::n;

voidmain

(

COobj;

COobj2[7];

CO*C=NULL:

c=&obj:

I********error********

eout«C.n«endl;

cout«C0::n«endl;

)

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

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

Constructor,i=0,

Destructor

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

试题程序:

#include(iostream.h)

classTC

{

inti;

public:

TC;

voiddisplay;

-TC;

};

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

TC:TC

{

cout«"Constructor"«",";

i=0;

)

//******error******

TC:display

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

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

TC:TC

{

COUI«"Destructor"«endl:

)

voidmain

(

TCa;

a.display;

)

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

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

100

37

32

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

可。

试题程序:

#include<iostream.h>

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

voidmain

{

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

intm=0142:

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

intn=0X27:

intq=32;

cout<<m<<endl;

cout<<n<<endl;

cout<<q<<endl;

return;

)

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

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

number=1

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********error********

TCobjl;

objl.Print;

TCobj2(3);

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

objl.number=10;

I/********en*or*%o******

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

)

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

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

9,8,7,6,5

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

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

试题程序:

#include(iostream.h>

classTC

!********error********/

TC(inti)

(

m_i=i;

)

voidprint

{

cout«~m_i«,;

)

public:

intm_i;

};

intmain

I********error********/

inti;

TC04(10);

while(i>5)

!********errOr********/

1++:

04.print;

)

cout«endl;

retumO;

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

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

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

程序异常,输出信息为

error

O

ERROR

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

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

试题程序:

#include<iostream.h)

intmain

(

try

(

throw("error");

)

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

catch(chars)

(

cout«s«endl;

)

try

(

throw((int)0);

)

/I********error****"

catch

(

cout«i«endl;

)

try

(

throw(O);

throw("error");

)

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

catch

(

cout«"ERROR"«endl;

)

retumO;

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

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

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

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

构,错误的语句在

I!******error******自勺卜

试题程序:

#include<iostream>

#include<fstream>

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

usingstd;

voidWriteFile(char*s)

(

ofstreamoutl;

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

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

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

(

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

outl.puts(s[il);

)

outl.close;

)

voidClearFile

(

ofstreamoutl;

outl.open("l.txt");

outl.close;

)

intmain

chars[1024];

ClearFile;

cout«"pleaseinputastrin9:"«endl;

cin.getline(s,1024);

WriteFile(s);

retumO;

)

五、综合应用题(2题)

46.⑴应添加“BA(intm){a=m;}“。

⑵应添力口“PAl(intm,intn):BA(n){b=m;}”。

(3)应添力II“PA2(intm,intn,intk):PAl(n,k){C=m;)”。

(4)应添力口"cout<<geta<<""<<getb<<""<<C<<endl;

【解析】根据第1处要求,构造函数的函数名和类名一致,显然BA构

造函数的名称为BA,在BA中通过参数m完成对成员变量a的赋值,

因此构造函数的名称为BA(intm),在函数内部对成员a赋值,故第1处

的语句应添加“BA(intm){a=m;)”。根据第2处的要求,构造函数的形式

为“PAl(intm,intn)”,m赋值给PA1类成员b,将n作为基类BA构造函

数的参数值传入,故第2处应添加“PAl(intm,intn):BA(n){b=m;}”。

根据第3处的要求,函数形式为PA2(intm,intn,intk),在构造函数中

将m赋值给数据成员c,将n和k分别赋值给基类PA1构造函数的参

数m和n,因此第3处应添力口“PA2(intm,intn,intk):PAl(n,k){C=m;}“。

根据第4处的要求,PA2类公有派生于PAI,而PA1公有派生于BA,

因此在PA2类中可以调用基类的geta和getb来获得基类私有成员a和

b,再输出PA2的私有成员C即满足要求,因此第4处应添加

€4,5

cout«geta«""«getb«""«C«endl;O

47.使用VC++6.。打开考生文件夹下的源程序文件3.cpp。请完成

以下部分,实现在屏幕上输出为

C3

C2

这个程序需要修改的部分,请按照以下部分实现。

(1)类CO不能被实例化,请定义一个纯虚函数print,在注释1后添加

适当的语句。

(2)类C1私有虚继承类CO,请在注释2后添加适当的语句。

(3)类C2公有继承于CO,请在注释3后添加适当的语句。

(4)类c3公有继承于C2与C1,请在注释4后添加适当的语句。

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

改其他的程序代码。

试题程序:

#include(iostream.h)

classCO

(

};

I[

classCl:

public:

voidprint

(

cout<",,Cr,<<endl;

)

};

classC2:

(

public:

voidprint

(

cout<<"C2"<<endl;

)

};

//********4***x****

classC3:

(

public:

voidprint

cout<<"C3"<<endl;

)

};

voidmain

C3Obj3;

C20bj2;

obj3.print;

obj2.print;

return;

)

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

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

test37_3.cpp,其中定义了类Letter和Number以及Grid,其中Grid类由

Letter类和Number类public派生,但三个类的定义并不完整。请按要

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

⑴添加类Letter的带一个参数c的构造函数,c是char型的数据,默认

值为'A]该函数把参数c的值赋给类的保护成员ch,请在注释“〃**1**”

之后添加适当的语句。

(2)添加类Number的带一个参数n的构造函数,n是int型的数据,默

认值为0,该函数把参数n的值赋给类的保护成员num,请在注释

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

(3)添加派生类Grid构造函数的定义,传入的参数为char型的c和血型

的n,并将其分别赋值给基类的ch和num,请在注释“〃**3**”之后添加

适当的语句。

(4)完成派生类Grid的友元函数——“<<”运算符重载的定义,使其以

格式“[g.ch,g.num]”输出,请在注释“〃**4**”之后添加适当的语句。

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

#include<iostream,h>

classLetter

(

protected:

charch;

public:

〃**]**

};

classNumber

|

protected:

intnum;

public:

H**2**

);

classGrid:publicLe注er,publicNumber

{

public:

〃**3**

friendostream&operator<<(ostream&o,Grid&g);

);

〃**4**

{

o<<"["<<g.ch<<","<<g.num<<

returno;

}

intmain()

(

Gridg('C,3);

cout<<"Gridreference:"<<g<<endl;

return0;

)

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

test31_3.cpp,其中定义了可以动态分配的字符串类,但该类的定义并不

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

⑴定义类tstring的私有数据成员length和p,它们分别是血型的数据和

字符型的指针,其中length表示一个字符串的长度。请在注释“〃**1**”

之后添加适当的语句。

(2)完成类tstring的构造函数,使length等于字符串m的长度,并申请

由指针P指向的length长的字符型空间,将m所指的字符串复制到该

空间。请在注释“〃**2**”之后添加适当的语句。

(3)完成类tstring的成员函数strcopy(tstringn)的定义该函数将对象n的

值(包括字符串长度和字符串本身)复制给调用该函数的对象(对象n的

字符串长度任意)。请在注释“〃**3**”之后添加适当的语句。

(4)完成类tstring的友元函数strlink(tstringm,tstringn)的定义,该函数将

可动态分配的字符串类对象m和n的字符串成员连接在一起(对象m和

n的字符串长度任意),并返回该串。请在注释“〃**4**”之后添加适当的

语句。

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

程序输出结果如下:

hellotheworld!

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

#include<iostream.h>

#include<conio.h>

#include<string.h>

clasststring

public:

〃**]**

tstring(char*m)

{

〃**2**

strcpy(p,m);

)

voidstrcopy(tstringn);

friendchar*strlink(tstringm,tstringn);

);

voidtstring::strcopy((stringn)

{

〃**3**

char*q;

q=newcharflength];

strcpy(q,(string::p);

q=strcat(tstring::p,n.p);

(string::p=q;

tstring::length=strlen(tstring::p);

),

char*strlink(tstringm,tstringn)

(「「

intlength=strlen(m.p)+strlen(n.p);

char*p;

〃**4**

strcpy(p,m.p);

p=strcat(p,n.p);

returnp;

)

voidmain()

(

tstringa("hello");

tstringb("theworld");

tstringc("!");

a.strcopy(b);

cout<<strlink(a,c)<<endl;

参考答案

l.CCo【解析】对线性表进行顺序查找时,从表中的第一个元素开始,

将给定的值与表中逐个元素的关键字进行比较,直到两者相符,查找到

所要找的元素为止。在最坏情况下,要查找的元素是表的最后一个元素

或查找失败,这两种情况都需要将这个元素与表中的所有元素进行比较,

因此比较次数为no

2.D

3.D解析:数据字典通常包括数据项、数据结构、数据流、数据存储和

处理过程五个部分。

4.C

5.A解析:静态数据成员是被类的所有对象共享,它不属于类的任何一

个对象,它的作用域是类范围。静态数据成员在每个类对象中并不占有

存储空间,它只是每个类中分配有存储空间,供所有对象公用。静态数

据成员的值对每个对象都一样,但它的值可以被任何一个对象更新,从

而实现了同一类的不同对象之间的数据共享。

6.B解析:在引用函数模板时,如果没在函数名和参数之间加上类型参

数,就默认表示参数类型严格按照模板定义的类型匹配;如果在函数名

和参数之间加上了类型参数,则对实参自动进行类型转换。

7.A解析:变量i和j,都是基类A的私有变量,它们是隐蔽的,在派生

类中不能直接访问。

8.D解析:数据的逻辑结构与数据在计算机中的存储方式无关,它用来

抽象地反映数据元素之间的逻辑关系,故A选项错误。存储结构分为顺

序存储结构与链式存储结构,其中顺序存储结构是将逻辑上相邻的数据

元素存储在物理上相邻的存储单元里,节点之间的关系由存储单元的相

邻关系来决定,它主要用于存储线性结构的数据,故B选项错误。数组

的存储方式连续是指其在计算机中的存储方式,它可以用来处理非线性

结构,故C选项错误。

9.B解析:程序设计的相关概念。

10.C解析:所谓软件危机是泛指在计算机软件的开发和维护过程中所遇

到的一系列严重问题。选项A、B、D都属于软件危机的一种表现,软

件危机还包括软件需求的增长得不到满足、软件开发成本和进度无法控

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

11.D

12.B

Bo【解析】程序的三种基本控制结构包括顺序、选择和重复(循环),

这三种结构足以表达出各种其他形式的结构。

13.B解析:本题考核拷贝构造函数。上述程序中,拷贝构造函数一共被

调用了3次:第一次是在执行语句Datedate3(datel);时,用已经建立

的对象datel对正在建立的对象date3进行初始化;第二次是在调用fun

函数时,由于是传值调用,因此实参对象date3要对形参对象d进行初

始化;第三次是在执行fun函数中的返回语句returntemp;时,系统用

返回初始化一个匿名对象时使用了拷贝构造函数。

14.AA。【解析】栈是限定在一端进行插入删除的先入后出的线性表数据

结构,栈顶元素最后被插入到栈中,但是最先被删除;而栈底元素最先

被插入,最后被删除。

15.A解析:数据流图包括4个方面,即加工(转换)(输入数据经加工变

换产生输出)、数据流CS箭头方向传送数据的通道,一般在旁边标注数

据流名)、存储文件(数据源)(表示处理过程中存放各种数据的文件)、

源和潭(表示系统和环境的接口,属系统之外的实体)。不包括选项中的

控制流。

16.B

17.C

18.C本题考查的是顺序查找。在进行顺序查找过程中,如果线性表中

的第一个元素就是被查找元素,则只需做一次比较就查找成功,查找

效率最高;但如果被查找的元素是线性表中的最后一个元素,或者被查

找的元素根本就不在线性表中,则为了查找这个元素需要与线性表中

所有的元素进行比较,这是顺序查找的最坏情况。所以对长度为n的

线性表进行顺序查找,在最坏情况下需要比较n次。故本题答案为

Co

19.D

解析:建立派生类对象时,构值函数的执行顺序为:执行基类的构造

函数一执行成员对象的构造函数一执行派生类的构造函数。D)选项定

义对象y4时没有传人任何值,则先调用基类的构造函数.XX(),输

出,A。,然后调用派生类的构造函数YY(),输出yy=O,最终输出为

A0。故本题答案为D)。

20.D解析:构造函数是类的一个特殊成员函数,它与类同名,并且没有

返回值。C++在创建一个对象时,会自动调用类的构造函数,在构造函

数中可以执行初始化成员变量的操作。构造函数可以是内联函数,也可

以重载。

2LC解析:软件测试的目标是在精心控制的环境下执行程序,以发现程

序中的错误,给出程序可靠性的鉴定。它有3个方面的重要特征,即测

试的挑剔性、完全测试的不可能性及测试的经济性。其中没有测试的可

靠性这一说法。注意:软件测试与软件调试的概念,以及相应的方法。

22.A

Ao【解析】本题考查混合运算表达式类型,由表达式中具有最高优先

级的类型所确定,所以答案为A。

23.B解析:C++语言是对C语言进行了扩充,继承了它的语法,开增加

了面向对象的设计方法。

24.抽象类抽象类解析:类中一旦有纯虚函数的定义,那么这个类就再

也不能创建此类的对象了,我们把这种类叫做抽象类。

25.物理独立性物理独立性解析:逻辑独立性是指,由于数据的局部逻

辑结构与总体逻辑结构之间也由系统提供映像,使得当总体逻辑结构改

变时,其局部逻辑结构可以不变,从而根据局部,逻辑结构编写的应用

程序也可以不必修改。物理独立性是指,由于数据的存储结构与逻辑

结构之间由系统提供映像,使得当数据的存储结构改变时,其逻辑结构

可以不变,所以,基于逻辑结构的应用程序不必修改。

26.选抒选抒

27.消息消息解析:在面向对象的设计中,用来请求对象执行某一处理

或回答某些信息的要求称为消息。

28.非格式化非格式化解析数据模型分为格式化模型和非格式化模型,

关系模型属于非格式化模型。

29.cout<<Base::acout<<Base::a解析:本题考核作用域分辨符号的使

用。作用域分辨符号是它可以用来限定要访问的成员所在的类的名

称。一般来说,在派生类中对基类成员的访问应该是惟一的。但是,多

继承情况下可能造成对基类中某个成员的访问出现不惟一的情况,通过

使用对象作用域分辨符可以解决这种对基类成员访问的二义性问题。题

中派生类Derived与基类Base定义了数据成员a,所以要访问基类数据

成员可以通过作用域分辨符来实现。

30.1414解析:本题考核运算符的应用。条件运算符是一种在两个表达

式中选择一个的操作,它是C++中惟一的三元运算符。在本题中,先计

算(a>B)?a:b,因为a<b,所以条件表达式的值为0,因此y=b=14,

而y>c的逻辑值为真,所以表达式的值为y的值,即14。

31.逐步求精逐步求精

32.抽象类抽象类

33.没有重载口运算符没有重载口运算符解析:ma不是一般的数组,而

是一个新定义的类,尽管该类封装了一个数组,但新类并没有提供口操

作符的具体实现,因此是错误的。

34.this

35.尖括号<>尖括号<>

36.(1)应改为"(3::TC”。

⑵应改为“voidTC::display”。

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

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

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

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

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

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

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

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

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

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

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

37.(1)应改为"usingnamespacestd;

(2)应改为"outl.open("1.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("1.txt",ios::binaryIios::app);第3个标识应

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

“outl.put(s[i]);

38.(1)应改为"TCobjl(l);

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

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

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

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

出结果两1,所以补全参数1,即第1处的“TCobjl⑴;"。第2处处的

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

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

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

第3处叮(3.561?41111^01'(100);”语句中的丁€:为类,并不是对象,这里

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

“obj2.SetNumber(lOO);

39.(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;"。

40.(1)应改为“TC::TC”。

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

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

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

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

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

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

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

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

3处的语句叮(2::丁。可知,显然这里是在类外实现析构函数,析构函

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

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

41.(l)“voidmain”。

(2)“intm=0144;

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

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

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

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

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

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

对应十六进制的25,因此2和3应分别改成“intm=0144;”,

“intn=0x25;”或“intn=0x25;

42.(1)应改为"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);

43.(1)应添加“public:

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

\n⑶“i++;”应改为“i-;

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

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

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

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

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

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

循环永远不会退出。

44.(1)应改为"catch(char*s)”。

⑵应改为“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(…)”。

45.(1)应改为"usingnamespacestd;

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

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

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

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

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

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

app);”语句缺少类ios,即第2处的语句修改为“outl.open('l.txt',ios::

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

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

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

温馨提示

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

评论

0/150

提交评论