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

下载本文档

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

文档简介

2021年陕西省宝鸡市全国计算机等级考试

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

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

一、1.选择题(10题)

i.完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测

试用例的测试方法是o

A.黑箱测试法B.白箱测试法C.错误推测法D.安装测试法

2.类的说明如下,请指出错误的地方oclassMyclass{inta=lll;

public:Myclass(intx,inty);Myclass(intval);~Myclass();}

A.inta=lll;

B.Myclass(Intx,inty);

C.Myclass(intval);

D.〜Myclass。;

3.C++对C语言作了很多改进,下列描述中,()使得C++语言发生了质

变,即从面向过程变成了面向对象。

A.增加了一些新的运算符B.允许函数重载,并允许设置默认参数C.规

定函数说明必须用原型D.引进了类和对象的概念

4.关系模型允许定义3类数据约束,下列不属于数据约束的是o

A.A.实体完整性约束B.参照完整性约束C.域完整性约束D.用户自定

义的完整性约束

5.对于拷贝构造函数和赋值操作的关系,正确的是

A.拷贝构造函数和赋值操作是完全一样的操作

B.进行赋值操作时,会调用类的构造函数

C.当调用拷贝构造函数时,类的对象正在被建立并被初始化

D.拷贝构造函数和赋值操作不能在同一个类中被同时定义

6.计算斐波那契数列第n项的函数定义如下:intfib(int

n){if(n==O)retum1;elseif(n==1)return2;elsereturnfib(n-l)+fib(n-2);}

若执行函数调用表达式fih(2),函数fih被调用的次数是

A.lB.2C.3D.4

7考虑函数原型voidtest(inta,intb=7,charz=*),下面的函数调用中,属

于不合法调用的是()o

A.test(5);B.test(5,8);C.test(6,#);D.test(O,0,*);

8.数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是

()o

A.DB包含DBS和DBMSB.DBMS包含DB和DBSC.DBS包含DB和

DBMSD.没有任何关系

9.循环链表的主要优点是()

A.不再需要头指针了

B.从表中任一结点出发都能访问到整个链表

C.在进行插入、删除运算时,能更好的保证链表不断开

D.已知某个结点的位置后,能够容易的找到它的直接前件

10.控制格式输入/输出的操作子中,设置域宽的函数是

A.wsB.octC.setfill(int)D.setw(int)

二、单选题(13题)

11.有下列程序:#include

voidmain()

#include<stdiO.h>

voidmain()

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

if(x>y)

if(yVz)print{(〃%d〃,++z);

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

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

程序的运行结果是()oA.331B.41C.2D.l

12.下列选项中正确的定义语句是()。

A.doublea;b;B.doublea=b=7;C.doublea=7,b=7;D.double,a,b;

13.下面的描述中,正确的是()。

A.A.virtual可以用来声明虚函数

B.含有纯虚函数的类是不可以用来创建对象的,因为它是虚基类

C.即使基类的构造函数没有参数,派生类也必须建立构造函数

D.静态数据成员可以通过成员初始化列表来初始化

14.下面对静态数据成员的描述中,正确的是()。

A.静态数据成员可以在类体内进行初始化

B.静态数据成员不可以被类的对象调用

C.静态数据成员不能受private控制符的作用

D.静态数据成员可以直接用类名调用

15.下面程序输出的结果为()。

#include"iostream.h"

classA

{public:

A(){cOUt<<"CLASSA"<<endl;}

〜A(){}};

ClaSSB:publicA

{public:

B(){cout<<"CLASSB"<<endl;}

〜B(){}};

voidmain()

{A*P;

P=newB:

B*q:

q=newB;}

A.CLASSA

B.CLASSACLASSBCLASSBCLASSB

C.CLASSA

D.CLASSACLASSBCLASSBCLASSACLASSBCLASSBCLASSB

16.若有以下程序:

nwin()

(intk-2,i=2.m:

m=(k+=i•=k)i

coutVVmVV"JVViVVcndh

J

执行后的输出结果是()。

A.8,6B.8,3C.6,4D.7,4

17.耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的

是_________O

A.提高耦合性降低内聚性有利于提高模块的独立性

B.降低耦合性提高内聚性有利于提高模块的独立性

C.耦合性是指一个模块内部各个元素间彼此结合的紧密程度

D.内聚性是指模块间互相连接的紧密程度

18.若有以下定义:inta[12]={1,2,3,4,5,6,7,8,9,10,11,12);charc='a',d,g;

则下列表达式中,结果为4的是()。

A.a[g-c]B.a[4]C.a['d'-'c']D.a['d'-c]

19.在面向对象方法中,一个对象请求另一对象为其服务的方式是通过

发送()。

A.调用语句B.命令C.口令D.消息

20.若有表达式“(w)?(-x):(++y)”,则其中与w等价的表达式是()。

A.w==lB.w==0C.W!=lD.W!=0

21.有如下程序:

#include<iostream>

usingnamespacestd;

classGA{

public:

virtualintftreturn1;}

};

classGB:publicGA{

public:

virtualintf{return2;}

};

voidshow(GAg){eout«9.f;}

voiddisplay(GA&g){cout«9.f;}

intmain

(

GAa;show(A.;display(A.;

GBb;show(B.;display(B.;

return0;

)

执行这个程序的输出结果是()。A.llllB.1211C.1112D.1212

22.对于一个类定义,下列叙述中错误的是

A.如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数。

B.如果没有定义缺省的构造函数,编译器将一定生成一个缺省的构造函

数。

C.如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷

贝构造函数。

D.如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造

函数。

23.下列程序的运行结果是()。

#include<iostream.h>

classA

inta;

public:

A{a=O;}

A(intaA.

a=aa;

cout«a++:

};

voidmain

AX,Y(2),z(3);

cout«end

A.00B.23C.34D.25

三、2.填空题(12题)

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

25.数据库系统的主要特点为数据集成性、数据的高和低冗余性、

数据独立性和数据统一管理和控制。

26.类通过____与外界发生关系。

27.已知如下程序的输出结果是23,请将画线处缺失的部分补充完整。

#include<iostream>

usingnamespacestd;

classMyClass{

public:

voidPrint()const{eout<<23;}

);

intmain(){

MyClass*P=newMyClass();

.Print();

return0;

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

29.从一个或多个基本表导出的表是一个【】,它是一个虚表。

30.[]是当前软件开发环境中富有特色的研究工作和发展方向。

31.语句cout<<'\n'还可表示为[]0

32.汇编语言是面向【】的,可以完成高级语言无法完成的特殊功能,

如与外部设备之间的一些接口工作。

33.注释一般分为序言性注释和注释。

34.为解决在多重继承环境中因公共基类带来的问题,C++语言

提供了虚基类机制。

35.下列程序的输出结果是____o

#include<iostream.h>

voidmain()

(

chara[]="abcdabcabfgacd";

intil=0,i2=0,i=0;

while(a[i])

(

if(a[i]=="a")il++;

if(a[i]=="b")i2++;

i++;

cout<<il<<""<<i2<<endl;

)

四、程序改错题(10题)

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

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

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

程序异常,输出信息为

error

O

ERROR

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

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

试题程序:

#include<iostream.h)

intmain

(

try

(

throw("error");

}

IJ********error*********

catch(chars)

(

cout«s«endl;

)

try

throw((int)0);

)

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

catch

(

cout«i«endl;

)

try

(

throw(O);

throw("error");

!!********enor********

catch

cout«"ERROR"«endl;

returnO;

)

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

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

Constructor,i=0,

Destructor

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

试题程序:

#include(iostream.h)

classTC

inti;

public:

TC;

voiddisplay;

-TC;

);

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

TC:TC

(

cout«"Constructor"«",

i=0;

)

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

TC:display

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

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

TC:TC

(

COUI«"Destructor"«endl:

)

voidmain

(

TCa;

a.display;

)

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

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

确。

程序输出:

8

8

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

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

试题程序:

#include(iostream.h>

classCO

public:

I********enor********/

staticintn=O:

CO

n++:

〜CO

n—:

):

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

intCO::n;

voidmain

COobj;

COobj2[7];

CO*C=NULL:

c=&obj:

!********enor********/

eout«C.n«endl;

cout«C0::n«endl;

)

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

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

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

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

构,错误的语句在

I!******error******白勺~~F甫*|

试题程序:

#include<iostream>

#include<fstream>

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

usingstd;

voidWriteFile(char*s)

ofstreamout1;

!1********e]T0j*********

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

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

(

II********ej*ror********

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;

)

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

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

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

中。

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

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

试题程序:

#include<iostream.h>

voidmain

(

inti=O;

charstr[120];

cout«"Enterastringendwith?."«endl;

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

cin.getline(str,120);

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

while(str)

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

if(str[i])=a)

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

i++;

cout«str«endl;

return;

)

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

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

9,8,7,6,5

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

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

试题程序:

#include(iostream.h>

classTC

!********enor********/

TC(inti)

(

m_i=i;

)

voidprint

(

cout«—m_i«,;

)

public:

intm_i;

);

intmain

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

inti;

TC04(10);

while(i>5)

I********errOr********/

1++:

04.print;

)

cout«endl;

retumO;

)

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

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

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

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

构,错误的语句在

II******error******的下面。

试题程序:

#include<iostream>

#include<fstream>

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

usingstd;

voidWriteFile(char*s)

(

ofstreamoutl;

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

outl.open("l.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);

retumO;

)

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

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

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

到屏幕中。

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

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

试题程序:

#include<iostream.h>

voidmain

(

inti=O;

charstr[120];

cout«"Enterastringendwith?."«endl;

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

cin.getline(str,120);

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

while(str)

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

if(str[i])=a)

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

i++;

)

cout«str«endl;

return;

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

{

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

TCobjl;

objl.Print;

TCobj2(3);

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

objl.number=10;

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

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

)

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

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

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

程序异常,输出信息为

error

0

ERROR

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

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

试题程序:

#include<iostream.h)

intmain

try

(

throw("error");

)

/*1**1**1**!**1*、上*1*7,*1**1**1**1**1*、1,

//个不不不■不平不个errcr个不不不不不不不

catch(chars)

{

cout«s«endl;

)

try

(

throw((int)0);

)

/*1>*1**1**1**1**1*、1,

//不不不不不不不个prrcr不不不不不不不不

catch

(

cout«i«endl;

)

try

(

throw(O);

throw("error");

}

/*1**1**1**1*、卜*1*、,,*1**1^>1*<1**1**1*、!,

//小不不小不下不不ermr不不不不不不不不

catch

(

cout«"ERROR"«endl;

returnO;

五、综合应用题(2题)

46.使用VC++6.。打开考生文件夹下的源程序文件3.cppo类

People包括姓名和年龄两个字段。函数fun获得年龄比较大的人的姓

名,然后输出这个姓名到屏幕。

其中定义的类并不完整,按要求完成下列操作,将类的定义补充完

整。

(1)完成类的构造函数功能,请在注释1后添加适当的语句。

(2)完成构造函数对姓名的赋值,请在注释2后添加适当的语句。

(3)定义类的友元函数fun,请在注释3后添加适当的语句。

(4)补充函数fun的年龄比较功能,请在注释4后添加适当的语句。

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

他的程序代码。

试题程序:

#include<iostream.h>

classPeople

(

public:

{

inti;

for(i=0;sUserName[i]!=O;i++)

{m_UserName[i]=sUserName[il;

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

m_Old=nOld;

)

private:

charm_UserName[32];

intm_01d;

);

voidfun(char*s,People&personl,People&person2

{

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

if

{

for(inti=0;personl.m_UserName[i]!=0;i+

+)

(

s[i]=personl.m_UserName[i];

s[i+l]=0;

fdr(inti=O;person2.m_UserName[i]!=0;i+

+)

{s[i]=person2.m_UserName[i];

s[i+l]=0;

)

)

}

voidmain

(

chars[32];

Peoplepl("abc",20);

Peoplep2("def,30):

fun(S,pl,p2);

cout«s«endl:

return;

)

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

proj3,此工程中包含一个源程序文件proj3.cpp,补充编制C++程序

proj3.cpp,其功能是读取文本文件in.dat中的全部内容,将文本存

放到doc类的对象myDoc中。然后将myDoc中的字符序列反转,并

输出到文件out.dat中。文件in.dat的长度不大于1000字节。

要求:

补充编制的内容写在“〃***********与“//**********''两行之间。实现

将myDoc中的字符序列反转,并将反转后的序列在屏幕上输出。不得

修改程序的其他部分。

注意:程序最后已将结果输出到文件Out.dat中,输出函数

writeToFile已经给出并且调用。

//proj3.cpp

#include<iostream>

#include<fstream>

#include<catting>

usingnamespacestd;

classdoc

(

private:

char*sir;//文本字符串首地址

intlength;//文本字符个数

public:

〃构造函数,读取文件内容,用于初始化新对象,filename是文件名字

符串首地址

doc(char*filename);

voidreverse;〃将字符序列反转

一doc;

voidwriteToFile(char*filename);

};

doc::doc(char}filename)

(

ifstreammyFile(filename);

intlen=1001,tmp;

atr=newcharflen];

length=0;

while((trap=myFile.get)!=EOF)

strf1ength++]=trap;

str[length]=4\0,;

myFile.close;

)

voiddoc::reverse{

//将数组atr中的length个字符中的第一个字符与最后一个字符交换,

第二个字符与倒数第二个

〃字符交换

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

doc::〜doe

{

delete[]str;

)

voiddoc::writeToFile(char*filename)

(

OfstreamoutFile(filename);

outFile«str;

outFile.close;

)

voidmain

{

docmyDoc(,,in.dat");

myDoc.reveme;

myDoc.writeToFilef'out.dat");

)

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

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

testl3_.cpp,其中定义了类Vector,但类的定义并不完整。请按要求完成

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

⑴完成构造函数的定义,把数据成员size初始化为参数s的值,数据成

员buffer指向动态申请的int型size大小的空间。请在注释“〃**1**”之

后添加适当的语句。

⑵完成拷贝构造函数的定义,注意解决多次删除的问题。请在注释

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

⑶完成成员函数elem的定义,该函数返回buffer的第ndx个元素的值,

注意如果ndx超界,请输出“errorinindex”。请在注释“//**3**”之后添加

适当的语句。

(4)完成析构函数的定义,要求先将字符d打印在屏幕上,再释放buffer

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

输出结果如下:

123456789101234567891Odd

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

源程序文件testl3_3清单如下:

#include<iostream.h>

#include<stdlib.h>

classVector

(

public:

Vector(ints=100);

Vector(Vector&v);

int&elem(intndx);

voiddisplay();

voidset();

〜Vector();

protected:

intsize;

int"buffer;

);

Vnector::Vector(ints)

****

u

Vector::Vector(Vector&v)

(

〃**2**

1++

*(buffer+i)=*(v.buffer+i);

)

int&Vector::elem(intndx)

〃**3**

cout<<"errorinindex"<<endl;

exit(l);

)

returnbuffer[ndx];

}

voidVector::displayO

(

for(intj=0;j<size;j++)

cout<<elem(i)<<endl;

)

voidVector::set()

(

for(intj=0;i<size;j++)

elem(j)=j+l;

)

Vector::~Vector()

(

〃**4**

voidmain()

(

Vectora(10);

Vectorb(a);

a.set();

b.set();

a.displayO;

b.displayO;

)

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

序文件test25_3.cpp,其中定义了用于表示堆的类Set,但它的定义并不完

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

(1)完成成员函数intIsMemberOf(intn)的定义,该函数检查参数n是否

在类的数据成员数组elems中,如果在返回1,反之返回0o请在注释

“〃**1**”之后添加适当的语句。

(2)完成成员函数intAdd(intn)的定义,如果参数n包含在类的数据成员

数组elems中则返回1如果数组超界则返回0,如果都不是,则将参数

n插入到elems中,下标大小为类的数据成员PC,之后PC自加一。请在

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

(3)完成拷贝初始化构造函数Set(Set&s)的定义,请在注释“〃**3***之后

添加适当的语句。输出结果如下:

1

()

{1,2,3,4,5,6,7,8)

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

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

#include<iostream.h>

classSet

public:

Set(){PC=O;}

Set(Set&s);

voidEmpty(){PC=O;}

intIsEmptyO{returnPC==O;}

intIsMemberOf(intn);

intAdd(intn);

voidPrint();

private:

intelems[100];

intPC;

);

intSet::IsMemberOf(intn)

〃(**]**

if(elems[i]==n)

return1;

returnO;

)

intSet::Add(intn)

(

〃**2**

return1;

elseif(PC>=100)

returnO;

else

(

elems[PC++]=n;

return1;

)

)

Set::Set(Set&s)

(

〃**3**

for(inti=O;i<PC;i++)

elems[i]=s.elems[i];

)

voidSet::Print()

(

cout<

for(inti=O;i<PC-1;i++)

cout<<elems[i]<<

if(PC>O)

cout<<elems[PC-l];

cout<<"}"<<endl;

)

voidmain()

(

SetA;

cout<<A.IsEmptyO<<endl;

A.Print();

SetB;

for(inti=l;i<=8;i++)

B.Add(i);

B.Print();

参考答案

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

是根据功能导出测试用例。注意:白箱测试是根据对程序内部逻辑结构

的分析来选取测试用例,白箱测试也称为逻辑覆盖测试,故选项B)不正

确;错误推测法只是黑箱测试所使用的一种具体的方法,故选项C)不正

确,安装测试是测试层次中的一种,它属于高级测试,故选项D)不正确。

注意:常用的黑箱测试方法及其定义,白箱测试用例的准则。

2.A

3.D解析:C++语言起源于C语言。C++是C语言的超集,即C语言是

C++语言的一个子集,同时C++语言与C语言是兼容的。C++对C语言

作了很多改进,引进了类和对象的概念。

4.C

解析:关系模型允许定义3类数据约束,它们是实体完整性约束、参

照完整性约束及用户自定义的完整性约束。其中前两种完整性约束由

关系数据库系统支持,对于用户自定义的完整性约束,则由关系数据

库系统提供完整性约束语言,用户利用该语言给出约束条件,运行时

由系统自动检查。

5.C解析:在赋值操作中,将发生对象的拷贝操作,但并不说明两者是

完全一样的.一般情况下,如果绐类定义了赋值操作符,则应该同时定

义合适的拷贝构造函数,除非系统默认生成的拷贝构造函数满足赋值操

作。实际上,系统默认的拷贝构造函数仅仅将数据成员进行简单的对应

赋值,而在多数特殊应用中,这么简单的对应关系是不适用的,这就需

要程序员重新定义拷贝构造函数。

6.C解析:f(2)=f(0)+f(l),所以应该执行3次。

7.C解析:本题考核函数的调用。题中函数声明带有默认参数,那么在

C)选项的调用中,将会把字符型实参#赋值给整型形参b,这不符合参

数传递规则。

8.C

(10)0解析:DB即数据库(Database),是统一管理的相关数据的集

合;DBMS即数据库管理系统(DatabaseManagementSystem),是位于

用户与操作系统之间的一层数据管理软件,为用户或应用程序提供访

问DB的方法;DBS即数据库系统(DatabaseSystem)由如下5部分

组成,数据库(数据)、数据库管理系统(软件)、数据库管理员

(人员)、系统平台之一——硬件平台(硬件)、系统平台之二

——软件平台(软件)。

9.B解析:循环链表就是将单向链表中最后一个结点的指针指向头结点,

使整个链表构成一个环形,这样的结构使得从表中的任一结点出发都能

访问到整个链表。

10.D解析本题需要考生记忆一些输入输出控制操作子,oct为八进制,

setfill为设置填充符,setw为设置域宽。

11.D

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

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

n",x+1);语句,输出x的值1,再把x加1。

12.C

Co【解析】本题考查变量的定义。选项A是两条语句,用分号隔

开,只定义了a为double型;选项B中,不允许这种声明赋值方式,

语法错误;选项D中,类型与变量名之间不加逗号;选项C为正确

的。

13.A在基类中用virtual声明成员函数为虚函数,所以A是正确的。纯

虚函数是在声明虚函数时被“初始化”为0的虚函数。纯虚函数是一种特

殊的虚函数,它没有具体的实现。静态数据成员函数只能在类外进行初

始化。

14.D解析:静态数据成员必须在类体外初始化,它是类的所有对象的共

有成员,需要使用类名调用,静态数据成员的初始化与权限控制无关。

15.C

Co【解析】本题考查类的继承、类的实例化和构造函数、析构函数的

调用方式以及何时调用。每实例化一个类就要调用其构造函数,结束

运行该实例后调用析构函数。

16.C

首先进行括号内的运算,注意赋值表达式是从右向左进行的。因此,

只要考生细心运算就可以得到正确答案为Co

17.B模块独立性是指每个模块只完成系统要求的独立的子功能,并且与

其他模块的联系最少且接口简单。一般较优秀的软件设计,应尽量做到

高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有

利于提高模块的独立性,所以A错误,B正确。耦合性是模块间互相连

接的紧密程度的度量而内聚性是指一个模块内部各个元素间彼此结合

的紧密程度,所以C与D错误。故答案为B选项。

18.D

19.D解析:面向对象的世界是通过对象与对象间彼此的相互合作来推动

的,对象间的这种相互合作需要一个机制协助进行,这样的机制称为消

息。消息是一个实例与另一个实例之间传递的信息,它请求对象执行某

一处理或回答某一要求的信息,它统一了数据流和控制流。

20.D

Do【解析】本题考查三目运算等。条件表达式的格式为a?b;c。它

的含义是,当a为真时,取b的值,否则取c的值。在C语言程序中

“为真”即“不等于零”,“为假”即等于0。所以和w等价的表达式是w

非零。

21.C

本题主要考察虚函数。虚函数指在某基类中声明为virtual并在一一个

或多个派生类中被重新定义的成员函数,本题中定义类GA的对象a,

执行show(a)、display(a),输出11,定义了类GB的对象b,执行

show(b),仍然输出1,display(b)执行会调用派生类的f函数,因为f函

数为虚函数,输出2,所以本题答案为c。

22.B

解析:本题考查的知识点是:构造函数。如果一个类中没有定义任何

构造函数,编译器将生成一个不带参数的公有缺省构造函数。但只要

定义了一个任意的构造函数,就不会生成缺省构造函数了。故本题应

该选择Bo

23.B

本题考查的是对构造函数的掌握,另外“++”运算符是右结合的,所以

在进行输出的时候都是先把原来的输出后再自加1。

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

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

25.共享性共享性解析数据库系统中的数据能被不同的应用程序使用,

实现了数据的高度共享,从而降低了数据的冗余,这也是数据库的主要

目的。

26.接口接口解析:数据以及对数据的操作形成对象,对同类对象抽象

出其共性,形成类。类是通过接口与外界发生关系的。

27.(*P)

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

的友元函数。

29.视图视图解析:视图是从一个或多个基本表中导出的虚表,它本身

不存储数据。

30.计算机辅助软件工程(CASE)计算机辅助软件工程(CASE)解析:

CASE将各种软件工具、开发机器和一个存放开发过程信息的中心数据

库组合起来,形成软件工程环境。

31.cout<<end!;cout<<endl;解析:\\n表示换行,end!也可表示换

行。注意:endl和'\\n,可以通用。

32.机器机器

33.功能性功能性解析:注释一般分为序言性注释和功能性注释。序言

性注释通常位于每个程序的开头部分,给出程序的整体说明,・功能性注

释的位置一般嵌在源程序体中,主要描述其后的语句或程序做什么。

34.二义性二义性

35.4343解析:分析while循环体可以判断出:il用于统计字符串中字

符a的数量,i2用于统计字符b的数量。因此,考察数组a的内容可得

其数量分别为4和3。

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

⑵应改为“cateh(inti)”。

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

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

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

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

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

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

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

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

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

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

改为“catch(...)"。

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

0⑵应改为“voidTC::display”。

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

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

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

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

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

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

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

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

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

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

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

(2)“intC0::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++中引入标准命名空间的格式,缺少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]);”。

40.⑴应改为“ein.getline(str,120,?);

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

,,

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

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

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

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

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

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

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

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

,,

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

41.(1)应添加“public:

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

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

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

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

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

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

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

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

循环永远不会退出。

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.openC'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,?);

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

(3)应改为“if(st巾]>=a&&str[i]<=2)>,。

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

函数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)”。

44.(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为类,并不是对象,

这里应该使用定义的对象,即。bj2

温馨提示

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

评论

0/150

提交评论