2023年福建省厦门市全国计算机等级考试C++语言程序设计模拟考试(含答案)_第1页
2023年福建省厦门市全国计算机等级考试C++语言程序设计模拟考试(含答案)_第2页
2023年福建省厦门市全国计算机等级考试C++语言程序设计模拟考试(含答案)_第3页
2023年福建省厦门市全国计算机等级考试C++语言程序设计模拟考试(含答案)_第4页
2023年福建省厦门市全国计算机等级考试C++语言程序设计模拟考试(含答案)_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

2023年福建省厦门市全国计算机等级考试

C++语言程序设计模拟考试(含答案)

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

一、1.选择题(10题)

1.软件设计中模块划分应遵循的准则是()。

A.低内聚低耦合

B.高内聚低耦合

C.低内聚高耦合

D.高内聚高耦合

2.有下列二叉树,对此二叉树中序遍历的结果是

XT>

()。血向匚

A.ABCDEFB.BDAECFC.ABDCEFD.ABCDFE

3.C++中的类有两种用法:一种是类的实例比,即生成类的对象,并参

与系统的运行;另一种是通过()派生出新的类。

A.复用B.继承C.封装D.引用

4已知一个有序线性表为(13,18,24,35,47,50,62,83,90,115,

134),当用二分法查找值为90的元素时,查找成功的比较次数为()o

A.lB.2C.3D.9

5.若有以下程序:#include<iostream>usingnamespacestd;class

TestClass{public:voidwho(){cout<<"TestClass"<<endl;}};class

TestClasskpublicTestClass{public:voidwho(){cout<<"TestClass1"<<

endl;}};intmain(){TestClass*p;TestClass1objl;P=&obj1;P->who();

return0;则该程序运行后的输出结果是()。

A.TestClasslB.TestClassC.OD.无输出

6.栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈

中元素可以出栈,则出栈序列可能是()。

A.ABCEDB.DCBEAC.DBCEAD.CDABE

7.如果友元函数重载一个运算符时,其参数表中没有任何参数则说明该

运算符是

A.一元运算符B.二元运算符C.选项A)和选项B)都可能D.重载错

、口

8.对于语句cout<<endl<<x;中的各个组成部分,下列叙述中错误

的是()o

A.“cout”是一个输出流对象B.“endl”的作用是输出回车换行C."x”是一

个变量D“<<”称作提取运算符

9.下面关于继承和派生的叙述中,正确的是()。

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

B.派生类不能访问基类中的保护成员

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

D.派生类向基类的构造函数传递参数

10.在数据库管理技术的发展过程中,经历了人工管理阶段、文件系统

阶段和数据库系统阶段。其中数据独立性最高的阶段是()。

A.数据库系统B.文件系统C.人工管理D.数据项管理

二、单选题(13题)

11.下面关于C++流的叙述中,正确的是()。

A.cin是一个输入流对象

B.可以用ifstream定义一个输出流对象

C.执行语句序列char*y="PQMN";cout«y;将输出字符串PQMN的地

D.执行语句序列charx[80];cin.getline(x,80);时,若输入Happynewyear,

则X中的字符串是“Happy”

12.要建立文件流并打开当前目录下的文件61e.dat用于输入,下列语句

中错误的是()o

A.ifstreamfin=ffstream.open("file.dat");

B.ifstream*fin=newifstream(,,file.dat");

C.ifstreamfin;fin.open(,,file.dat");

D.ifstream*fin=newifstream;fin->open(,,file.dat");

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

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

()o

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

14.以下类定义中可能会引起错误的语句是()。

classA

(

public:

~A(){}//1

inti;//2

private:

intj;//3

A(inti){i++;}//4

};

A.lB.2C.3D.4

15.下列运算符中哪些是不能够被重载的?

A*_>*,•?・

B.++,new,delete,==

C.sizeof,new,delete,++,—

D.sizeof,new,delete,+,-

16.下面关于虚函数的描述,错误的是()。

A.在成员函数声明的前面加上virtual修饰,就可把该函数声明为虚函数

B.基类中说明了虚函数后,派生类中对应的函数也必须说明为虚数

C.虚函数可以是另一个类的友元函数,但不能是静态成员函数

D.基类中说明的纯虚函数在其任何派生类中都必须实现

17.下列数据结构中,按先进后出原则组织数据的是()

A.线性链表B.栈C.循环链表D.顺序表

18.有如下类定义:

classFoo

(

public:

Foo(intv):value(v){}//①

〜Foo(){}//②

private:

Foo(){}//③

intvalue=O;//④

};

其中存在语法错误的行是()。

A.①B.②C.③D.④

19.下列运算符函数中肯定不属于类FunNumber的成员函数的是()。

A.intoperator—(FunNumber);

B.FunNumberoperator一;

C.FunNumberoperator—(int);

D.intoperator—(FunNumber,FunNumber);

20.下面叙述中错误的是

A.软件测试的目的是发现错误并改正错误

B.对被调试的程序进行“错误定位”是程序调试的必要步骤

C程序调试通常也称为Debug

D.软件测试应严格执行测试计划,排除测试的随意性

21.结构化程序所要求的基本结构不包括()。

A.顺序结构B.GOTO跳转C.选择(分支)结构D.重复(循环)结构

22.有三个关系R、S、T如下:

关系R和S和到关系T的操作是()。

A.自然连接B.差C.交D.并

23.关系数据库管理系统能实现的专门关系运算包括()。

A排序、索引、统计B.选择、投影、连接C.关联、更新、排序D.显示、

打印、制表

三、2.填空题(12题)

24.程序流程图中的菱形框表示o

25.[]是从二维表列的方向进行的运算。

26.若有函数fim(x,y),并且已经使函数指针变量p指向函数fun,则使

用p调用函数fun的方法是o

27.是一种特殊的成员函数,它主要用来为对象分配内存空间,

对类的数据成员进行初始化并执行对象的其他内部管理操作。

28.Jackson结构化程序设计方法是英国的M.Jackson提出的,它是一

种面向【】的设计方法。

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

#include<iostream.h>

unsignedfrn(ullsignednum)

{unsi9nedk=l;

do{k*=num%10;num/=10;}while(num);

returnk;

I

s

voidmain()

{unsignedn=26;

cout<<fun(n)<<endl;

30.有如下定义:

classMA{

intvalue;

public:

MA(intn=0):value(n){}

};

MA*ta,tb;

其中MA类的对象名标识符是°

31.已知intDBL(intn){returnn+n;}和longDBL(longn){returnn+n}是一

个函数模板的两个实例,则该函数模板的定义是O

32.下面程序的输出结果是【】。

#include<iostream>

usingnamespacestd;

intx;

voidfunA(int&,int);

voidfunB(int,int&);

intmain()

i

intfirst;

intsecond=5;

x=6;

funA(first,second);

funB(first,second);

cout<<first<<""<<second<<""<<x<<end1;

return0;

I

s

voidfiinA(int&a,intb)

(

intfirst;

first=a+b;

a=2*b;

b=first+4;

}

voidfunB(intu,int&v)

{

intsecond;

second=x;

v=second+4;

x=u+v;

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

34.下列程序的执行结果是【】。

#include<iostream.h>

classMyclass

(

public:

voidGetSum(inta)

staticintSum:

private:

intA;

};

intMyclass::Sum=10;//必须在类外部对静态数据成员初始化

voidMyelass::GetSum(inta)

(

A=a;

Sum+=A;

}

voidPrintSum(Myclass&A)

{

cout<<"Sum="<<A.Sum<<endl;

voidmain()

(

MyclassM,N;

M.GetSum(3)

N.GetSum(7)

PrintSum(M);

35.在面向对象方法中,属性与操作相似的一组对象称为【】。

四、程序改错题(10题)

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

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

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

到屏幕中。

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

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

试题程序:

#include<iostream.h>

voidmain

(

inti=O;

charstr[120];

cout«"Enterastringendwith?."«endl;

Ii********enor********

cin.getline(str,120);

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

while(str)

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

if(str[i])=a)

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

i++;

)

cout«str«endl;

return;

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

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

9,8,7,6,5

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

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

试题程序:

#include(iostream.h>

classTC

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

TC(inti)

m_i=i;

voidprint

cout«—mi«,

public:

intm_i;

intmain

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

inti;

TC04(10);

while(i>5)

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

i++:

04.print;

f

cout«endl;

returnO;

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

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

number=1

number=10

number=100

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

构,错误的语句在//******e"or******的下面。

试题程序:

#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);

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

objl.number=10;

Ii********error*%()******

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

)

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

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

为:

sizeoRSl)=5

sizeof(s2)=10

sizeof(s3)=l

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

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

⑴不能删除assert()语句。

(2)只能修改后面的数字。

提示:assert函数如果为假,则会产生一个中断异常。

试题程序:

#include<iostream.h>

#include<assert.h>

voidmain()

char*sl="abc":

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

assert(sizeof(s1)-3):

cout«"sizeof(s1)=5"«endl;

chars2[10]="ab":

II不***¥***enor********

assert(sizeof(s2)=2);

cout«"sizeof(s2)=10"«endl;

chars3=23:

II¥*******error********

assert(sizeof(s3)=4);

cout«"sizeof(s3)=r'«endl;

return;

)

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

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

100

37

32

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

可。

试题程序:

#include<iostream.h>

voidmain

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

intm=0142:

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

intn=0X27:

intq=32;

cout<<m<<endl;

cout<<n<<endl;

cout<<q<<endl;

return;

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

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

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

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

构,错误的语句在

II******ej*i*0i*******白勺卜।白।

试题程序:

#include<iostream>

#include<fstream>

!1********ej*j*0j*********

usingstd;

voidWriteFile(char*s)

ofstreamout1;

!1****************

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

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

II********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);

retumO;

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

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

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

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

构,错误的语句在

II******en*or******的下面。

试题程序:

#include<iostream>

#include<fstream>

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

usingstd;

voidWriteFile(char*s)

ofstreamout1;

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

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

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

II********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函数,不能增加或删除行,也不能更改程序的结

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

试题程序:

#include<iostream.h>

voidmain

(

inti=0;

charstrfl20];

cout«"Enterastringendwith?."«endl;

I!********eiror********

cin.getline(str,120);

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

while(str)

!1********ej*j*0j*********

if(str[i])=a)

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

i++;

cout«str«endl;

return;

44.使用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

I!********erroi*********

TCobjl;

objl.Print;

TCobj2⑶;

!1****************

objl.number=10;

!1*************

TC.SetNumber(100);

objl.Print;

obj2.Print;

}

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

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

Constructor,i=0,

Destructor

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

试题程序:

#include(iostream.h)

classTC

(

inti;

public:

TC;

voiddisplay;

-TC;

};

II******ej*j*0j*******

TC:TC

(

cout«"Constructor"«",";

i=0;

)

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

TC:display

(

toutvv"i="vvivv",n«endl;

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

TC:TC

{

COUI«"Destructor"«endl:

}

voidmain

(

TCa;

a.display;

}

五、综合应用题(2题)

46.使用VC++6.0打开源程序文件3.cpp。其中类TC用于把文件

输出到屏幕,然后进行文件的分割。分割的方法如下:第一个文件的

大小是文件的前一半,另外一个文件的大小是剩余部分。此程序将

in.txt文件中的内容输出到

屏幕,并且将文件按照以上方式分割,存于文件outl.txt和out2.txt

中。

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

整。

(1)从输入文件中获得一个字符,并判断是否到文件结

尾,如果到文件结尾,则退出循环。请在注释1后添加适当的语句。

⑵把获得的输入文件的内容存储到bur中,并且用len

记录下文件的长度。请在注释2后添加适当的语句。

(3)将输入文件的后一半内容存储在第二个文件中,请

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

(4)使用文件流对象打开输入文件in.txt,请在注释4

后添加适当的语句。

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

改其他的程序代码。

试题程序:

#include<iostream.h>

#include<fstream.h>

#include<stdlib.h)

classTC

(

public:

TC(char*fileName)

(

len=O;

fstreaminfile;

infile.open(fileName,ios::in);

charch;

while

cout«ch;

Ii********2********

)

infile,close;

}

voidsplit

(

fstreamoutfilel;

fstreamoutfile2;

outfilel.open("outl.txt",ios::out);

outfile2.open("out2.txt",ios::out);

inti=0:

for(i=0;i<len/2;i++)

(

outfilel«buf[i];

)

do

(

)

while(i!=len);

outfilel.close;

outfile2.close;

)

prwate:

intlen;

charbuf[1024];

);

voidmain

(

//********4********

TCobj;

obj.split;

return;

)

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

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

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

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

整。

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

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

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

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

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

他的程序代码。

试题程序:

#include<iostream.h>

classPeople

(

public:

II********]********

(

inti;

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

{m_UserName[i]=sUserName[i];

)

//********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]!=O;i+

+)

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

s[i+l]=O;

)

)

else

{

for(inti=0;person?.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;

)

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

48.使用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

(

//**]**

public:

voidset_values(int,int);

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

〃**2**

);

voidCRectangle::set_values(inta,intb)

(

//**3**

/

CRectangleduplicate(CRectanglerectparam)

(

CRectanglerectres;

rectres.width=rectparam.width*2;

rectres.height=rectparam.height*2;

H**4**

voidmain()

(

CRectanglerect,rectb;

rect.set_values(2,3);

rectb-duplicate(rect);

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

)

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

序文件MyMain2.cpp,此程序的运行结果为:

Derivel'sPrint()Called.

Derive2'sPrint()called.

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

①定义函数Print。为无值型纯虚函数。请在注释“〃**1**”之后添加适当

的语句。

②建立类Derivel的构造函数,请在注释“〃**2**”之后添加适当的语句。

③完成类Derive2成员函数Print。的定义。请在注释“〃**3**”之后添加

适当的语句。

④定义类Derivel的对象指针dl,类Derive2的对象指针d2。其初始化

值分别为1和2。

源程序文件MyMain2.叩p中的程序清单如下:

//MyMain2.cpp

#include<iostream>

usingnamespacestd;

classBase

(

public:

Base(inti)

(

b=i;

}

〃**]**

protected:

intb;

};

classDerivel:publicBase

(

public:

〃**2**

voidprint()

(

cout<<"Derivel'sPrint()called."<<endl;

classDerive2:publicBase

(

public:

Derive2(inti):Base(i){}

〃**3**

);

voidfun(Base*obj)

(

obj->Print();

}

intmain()

{

〃**4**

fun(dl);

fun(d2);

return0;

参考答案

l.B

解析:耦合性和内聚性足模块独立性的两个定性标准。内聚性是一个

模块内部各个元素间彼此结合的紧密程度的度量,作为软件结构设计

的设计原则,要求每个模块的内部都具有很强的内聚性;耦合性是指

模块间相互连接的紧密程度的度量,一个模块与其他模块的耦合性越

强则该模块的独立性越弱。一般优秀的软件设计应尽量做到高内聚、

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

高模块的独立性。

2.BBO【解析】对二叉树的中序遍历是指:首先遍历左子树,然后访问

根结点,最后遍历右子树。在遍历左、右子树时,注意依旧按照“左子树

一根结点一右子树”的顺序。

3.B

4.B

B。【解析】根据二分法查找法需要两次:(1)首先将90与表中间的元

素50进行比较,由于90大于50,所以性表的后半部分查找。(2)第二

次比较的元素是后半部分的中间元素,即90,这时两者相等,即查找

成功。

5.B

6.B解析:栈操作原则上“后进先出”,栈底至栈顶依次存放元素A、B、

C、D,则表明这4个元素中D是最后进栈,B、C处于中间,A最早进

栈。所以出栈时一定是先出D,再出C,最后出A。

7.D解析:C++中用友元函数重载运算符至少有一个参数,重载一目运

算符要有一个参数,重载二目运算符要有两个参数。

8.D

9.A派生类可以访问基类中的保护成员和公有成员。当基类有默认构造

函数时,派生类可以不向基类传递参数.商接调用派生类的默认构造函

数,而纯虚函数要在非抽象的子类中实现,虚基类不能被实例化。

10.A解析:文件系统是数据库系统的初级阶段,提供了简单的数据共享

与数据管理能力,其功能简单,附属于操作系统而不成为独立的软件,

只能看作是数据库系统的雏形;人工管理主要用于科学计算,硬件无磁

盘,直接存取,软件没有操作系统;数据库管理系统是从这两个阶段发

展而宋的,其数据独立性必然更高。因此,答案为A。

11.A

Ao本题考查C++流的溉念和I/O的格式化。tin是istream类的对

象,即输入流对象。ifstream是输入文件流,类不能定义个输出流对

象。getline函数的功能是允许从输入流中读取多个字符,并且允许指

定输入终止,在读取完成后,从读取的内容中删除该终止字符,所以

D选项中的语句序列后x中字符串应该是Happynewyearo

12.A

本题考查对文件流输入的操作,可以调用文件流的成员函数pen,一般

形式如下:文件流对象.Open(磁盘文件名,输入/输出方式)。根据以

上格式,可以判断A选项错误。

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

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

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

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

控制流。

14.D

Do【解析】本题考查关于C++语言类的定义方法。在C++语言中

类定义中的构造函数是私有的,但是却调用了其中的公有变量,在实

例化时会斟现错误。

15.A

16.B

基类中说明的虚函数,在派生类中自然就是虚函数,对于纯虚函数必

须在后面继承的派生类中给出具体的实现;静态成员函数不能进行动

态联编,所以虚函数不能是静态的。

17.B解析:栈是限定在二端进行插入与删除的线性表。在栈中,允许插

入与删除的一端称为栈顶,而不允许插入与删除的另一端称为栈底。栈

顶元素总是最后被插入的元素,从而也是最先能被删除的元素;栈底元

素总是最先被插入的元素,从而也是最后才能被删除的元素,即栈是按

照“先进后出”或“后进先出”的原则组织数据的。注意:队列组织数据的

原则是“先进先出”或“后进后出注意:数据结构中,栈和队列组织数

据的原则。

18.D

解析:本题考查了类的定义。C++语言规定,在类体中不允许对所定

义的数据成员进行初始化。故本题应该选择D。

19.D

本题考查运算符重载的一些规则:①一般情况下,单目运算符最好重

载为类的成员函数,双目运算符则最好重载为类的友元函数;②双目

运算符=、、小->不能重载为类的友元函数;③类型转换函数只能定

义为一个类的成员函数,而不能定义为类的友元函数;④若一个运算

符的操作需要修改对象的状态,选择重载为成员函数较好;⑤若运算

符所需的操作数(尤其是第一个操作数)希望有隐式类型转换,则只能选

用友元函数;⑥当运算符函数是一个成员函数时,最左边的操作数(或

者只有最左边的操作数)必须是运算符类的一个类对象(或者是对该类对

象的引用);如果左边的操作数必须是一个不同类的对象,或者是一个

内部类型的对象,该运算符函数必须作为一个友元函数来实现。所以

答案为D。

20.A软件测试的目的是为了发现错误而执行程序的过程,并不涉及改正

错误,所以选项A错误。程序调试的基本步骤有:错误定位、修改设计

和代码,以排除错误、进行回归测试,防止引进新的错误。程序调试通

常称为Debug,即排错。软件测试的基本准则有:所有测试都应追溯到需

求、严格执行测试计划,排除测试的随意性、充分注意测试中的群集现

象、程序员应避免检查自己的程序、穷举测试不可能、妥善保存测试计

划等文件。故答案为A选项。

21.BB【解析】1966年Boehm和JaCopini证明了程序设计语言仅仅使用

顺序、选择和重复三种基本控制结构就足以表达出各种其他形式结构的

程序设计方法。

22.B\nB0【解析】由结果集可知:R—S=T。

\n

23.B解析:此题为数据库的基本概念,可以对照办工软件的电子表格进

行如下理解:选择:我们根据某条件选择出一行或多行元组(一个元组即

为二维表中的一行)。投影:按字段(也称属性,比如学生关系(学号,姓

名,出生年月,性别),学号、姓名…都是属性)选取一列或多歹I」(一个二

维表中所有元组在某一列或几列上截取出来)。连接:2个或2个以上的

表连接组成一张新的表,通常有条件连接。比如学生关系(学号,姓名,

系号),又有一张系表(系号,系名,主任),2张表可以合并为一张这样

的表(学号,姓名,系号,系名,主任)。

24.逻辑判断逻辑判断解析绘制流程图时对实体的描述用椭圆形表示、

行动方案用矩形表示、问题用菱形表示、箭头代表流动方向。

25.关系运算关系运算解析:在关系模型的数据语言中,一般除了运用

常规的集合运算,(并、交、差、笛卡尔积等)外,还定义了一些专门的

关系运算,如投影、选择、连接等。前者是将关系(即二维表)看成是元

组的集合,这些运算主要是从二维表的行的方向来进行的;后者主要是

从二维表的列的方向来进行的运算。两者统称为关系代数。

26.(*p)(xy)(*p)(x,y)解析:一个函数总是占用一段连续的内存区,而函

数名就是该函数所占内存区的首地址。我们可以把函数的这个首地址

(或称入口地址)赋予一个指针变量,使该指针变量指向该函数。然后通

过指针变量就可以找到并调用这个函数。我们把这种指向函数的指针变

量称为“函数指针变量”。函数指针变量定义的一般形式为:类型说明符

(*指针变量名)(),•其中“类型说明符”表示被指函数的返回值的类型。”(*

指针变量名)”表示“*”后面的变量是定义的指针变量。最后的空括号表示

指针变量所指的是一个函数。

27.构造函数构造函数

28.数据结构数据结构解析:结构化分析方法主要包括:面向数据流的

结构化分析方法(SA—Stucturedanalysis),面向数据结构的Jackson方法

(JSD一Jacksonsystemdevelopmentmethod)和面向数据结构的结构化数

据系统开发方法(DSSD-Datastructuredsystemdevelopmentmethod)o

29.1212解析:函数有一个形参num,循环前变量k置1,循环中,表

达式nora%10是取num的个位,将num的个位值累乘于k中,然后num

除以10。循环直至num为0结束,这是逐一求出num十进制表示的各

位数字,并累乘于变量k的循环。函数最后返回k。函数hm的功能是

求整数的各位十进数字积。

3O.tbtb解析:此题考查的是对象的定义。对象的定义格式如下:类名对

象名(参数表):所以题目中的tb是对象名标识符,而ta被定义成类MA

的指针,故空格处应填tb°

31.template<classT>TDBL(Tn){returnn+n;}template<classT>T

DBL(Tn){returnn+n;}解析:本题考核函数模板的使用。函数模板的一

般说明形式如下:template<类型形参表>返回类型函数名(形参表){〃函

数体}。函数调用方式为:函数名(实参表);。形参表中的类型以实参表中

的实际类型为依据。由此易得答案。

32.101020101020解析:本题考核函数的引用传递。“引用”实际上是

给一个已知变量起个别名,对引用的操作也就是对被它引用的变量的操

作。函数RmA()的第1个形参为引用形参,那么在函数内部形参a的改

变将引起实参的相应改变。同理fimB()中弓|用参数V的改变也会弓|起相

应实参的改变。

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

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

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

34.sum=20sum=20解析:本题考察静态数据成员在同类的不同对象间的

数据传递功能。Sum为所有对象的公共数据,M对象和N对象分别对

sum进行累加,故结果为20°

35.类类解析:在面向对象方法中,类描述的是具有相似性质的一组对

象。所以,属性与操作相似的一组对象称为类。

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

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

,,

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

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

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

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

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

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

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

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

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

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

37.(1)应添力口“public:"。

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

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

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

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

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

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

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

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

循环永远不会退出。

38.⑴应改为“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,所以将语句修改为

“obj2.SetNumber(lOO);

39.(1)应改为"assert(sizeof(sD==4);”。

\n(2)应改为"assert(sizeof(s2)=lO);”。

\n(3)应改为"assert(sizeof(s3)=l);

\n【解析】assert函数如果为假,则会产生一个中断异常。所以要让它正

常执行输出结果,那么assert函数只有为真,才不会产生中断异常。

t4assert(sizeof(s1)=3);”语句中“sizeof(sl)==3”为假,这会使程序产生异

常,不能正常执行。因为strl的值为abc,但是它还有一个尾符,它的

长度应该是4,而不是3,所以在第1处修改为“assert(sizeof(sl)==4)二。

str2[10]说明,str2的空间为10,在第2处修改为“assert(sizeof(s2)=10);”。

charstr3=23;语句说明23是字符,所占存储空间为1,所以修改为

“assert(sizeof(s3)=l);”。

€t,,

40.(l)voidmaino

(2)“intm=0144;

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

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

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

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

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

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

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

“intn=0x25;”或“intn=0><25;

41.(1"usingnamespacestd;"。

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

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

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

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

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

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

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

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

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

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(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[i]是否为小写字符,而现有的语句只是判断字符是否大于a,

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

44.(1)应改为"TCobjl⑴;

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

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

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

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

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

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

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

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

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

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

“obj2.SetNumber(lOO);

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

\n⑵应改为"voidTC::display”。

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

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

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

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

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

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

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

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

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

温馨提示

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

评论

0/150

提交评论