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

下载本文档

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

文档简介

2023年河南省开封市全国计算机等级考试

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

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

一、1.选择题(10题)

1.有以下程序:#include<iostream>usingnamespacestd;classR

{public:R(intrl,intr2){RI=rl;R2=r2;}voidprint();voidprintOconst;

private:intR1,R2;};voidR::print(){cout<<RI<<<<R2<<endl;}

voidR::print()const{cout<<RI<<<<R2<<endl;}intmain(){R

a(5,4);constRb(20,52);b.print();return0;}执行后的输出结果是()。

A.5,4B.20,52C.0,0D.4,5

2.()是以一种完全通用的方法来设计函数或类而不必预先说明将被使

用的每个对象的类型。

A.模板B.类C.对象D.函数

3.下列关于getline()函数的描述中,不正确的是()。

A.getline。函数是用来从键盘上读取字符串的

B.getline()函数读取字符串长度是受限制的

C.getline。函数读取字符串时,遇到终止符时就停止

D.getline。函数中所使用的终止符只能是换行符

4.有以下程序#include<iostream.h>floatfun(intx,inty){return(x+y);}

voidmain(){inta=2,b=5,c=8;cout<<fun((int)fun(a+c,b),a-c);}

程序运行后的输出结果是()。

A.编译出错B.9C.21D.9

5.sizeof(float)是()。

A.一个双精度型表达式B.一个整型表达式C.一种函数调用D.一个不

合法的表达式

6.有以下类定义:classMyClass{private:intid;chargender;char*phone;

public:MyClass():id(0),gender('#'),phone(NULL){}MyClass(intno,char

ge='札char*ph=NULL){id=no;gender=ge;phone=ph;}};下列类对象定义

语句中错误的是_____O

A.MyClassmyObj;

B.MyClassmyObj(ll,);

C.MyClassmy0bj(12;m');

D.MyClassmyObj(12);

7.已知在函数func中语句this->ff=O;与语句ff=O;的效果完全相同。

对于这一现象,下列表述中错误的是

A.ff是某个类的数据成员,func是该类的友元函数

B.ff是某个类的数据成员,func是该类的成员函数

C.this->ff和任是同一个变量

D.func不是一个静态成员函数

8.某二叉树T有n个节点,设按某种顺序对T中的每个节点进行编号,

编号值为1,2,...n,且有如下性质:T中任一节点v,其编号等于左

子树上的最小编号减1,而V的右子树的节点中,其最小编号等于V左

子树上的节点的最大编号加1。此二叉树是按()顺序编号的。

A.前序遍历B.中序遍历C.后序遍历D.按层次遍历

9.下面程序的输出结果是()。#include<iostream>usingnamespacestd;

intmain(){intn=10;while(n>7){n—;cout<<11<<',';)cout<

<endl;}

A.10,9,8,B.9,8,7,C.10,9,8,7,D.9,8,7,6,

10.下面重载乘法运算符的函数原型声明中错误的是()

A.TestClassoperator*(MyClass,double);

B.TestClassoperator*(double,MyClass);

C.TestClassoperator*(double,double);

D.TestClassoperator*(MyClass,MyClass);

二、单选题(13题)

11.已知类X成功地重载了一、+、=、口这几个运算符。则其中肯定属

于成员函数的运算符是:

A.前置--和口B=^n[]C.[]和后置--D.+和二

12.有如下程序:

#nclude<iostream>

usingnamespacestd;

intmain

voidfunction(doubleval);

doubleval;

function(val);

cout«val;

return0;

)

voidfunction(doubleval)

}val=3;}

编译运行这个程序将出现的情况是()。A.编译出错,无法运行B.输出:3C.

输出:3.0D.输出一个不确定的数

13.已知类Myclass的定义如下

classMyClass{

public:

voidfunction1(MyClass&C){cout<<c.data;)

staticvoidfunction2(MyClass&C){cout<<c.data;}

voidfunction3(){cout<<data;}

staricvoidfunction4(){cout<<data;}

private:

intdata;

);

其中有编译错误的函数是()。

A.function1B.function?C.functionsD.function4

14.下列控制格式输入/输出的操作符中,能够设置浮点数精度的是

()。

A.setpreCisionB.setwC.setfillD.showpoint

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

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

16.假定MyClass为一个类,那么下列的函数说明中,()为该类的

析构函数。

A.void~MyClass();

B.~MyClass(intn);

C.MyClass();

D.~MyClass();

17.有如下程序:

#include<iostream>

usingnamespacestd;

classONE{

intc;

public:

ONE():c(0){cout«l;}

ONE(intn):c(n){cout«2;}

);

classTWO{

ONEonel;

ONEone2;

public:

TWO(intm):one2(m){cout«3;}

};

intmain(){

TWOt(4);

return0;

)

运行时的输出结果是

A.3B.23C.123D.213

18.有如下语句序列:

ifstreaminfile("DATA.DAT");

if(infile.good())cout«"A";

else{

cout«"B";

ofstreamoutfile("DATA.DAT");

if(outfile.fail())cout«"C";elsecout«"D";

)

若执行这个语句序列显示的是BD,则说明文件

DATA.DAT

A.以读方式打开成功

B.以读方式打开失败,但以写方式打开成功

C.以读方式打开失败,以写方式打开也失败

D.以读方式打开成功,以写方式打开也成功

19.有如下类定义:

classMyClass

(

public:

private:

intdata;

};

若要为MyClass类重载流输入运算符“>>”,使得程序中可以

€<cin»obj;”的形式改变MyClass类的对象Obj中数据成员data的值,

则横线处的声明语句应为()。

A.friendistream&operator»(istream&is,MyClass&A.;

B.friendistream&operator»(istream&is,MyClassA.;

C.istream&operator»(istream&is,MyClass&A.;

D.istream&operator»(istream&is,MyClassA.;

20.以下函数值的类型是

fun(floatx)

{floaty;

y=3*x-4;

returny;

)

A.intB.不确定C.voidD.float

21.有如下程序:

#include<iostream>

usingnamespacestd;

voidfunction2(intn);

voidfunctionl(intn):{

if(n<=0)return;

function2(n-2);

)

voidfunction2(intn){

if(n<=O)return;

functionl(n-l);

)

intmain(){

functionl(5);

returnO;

下列关于程序运行情况的描述中,正确的是()。

A.A.functionl运行1次,function!运行2次

B.functionl运行2次,function!运行1次

C.functionl运行2次,function2运行3次

D.function!运行2次,function2运行2次

22.一个函数为voidf(int,charch='a'),另—函数为voidf(int),则

它们()o

A.不能在同一程序中定义

B.可以在同一程序中定义并可重载

C.可以在同一程序中定义,但不可以重载

D.以上三种说法均不正确

23.下列关于关系运算的叙述中正确的是()。

A.投影、选择、连接是从二维表的行的方向来进行运算

B.并、交、差是从二维表的列的方向来进行运算

C.投影、选择、连接是从二维表的列的方向来进行运算

D.以上三种说法都不对

三、2.填空题(12题)

24.如果要把返回值为void的函数A声明为类B的友元函数,则应在

类B的定义中加入的语句是【】。

25.数据库系统中实现各种数据管理功能的核心软件称为【】。

26.下面是复数类complex的定义,其中作为友元函数重载的运算符“-

「'的功能是将参数对象的实部减1,然后返回对该对象的引用;请补充

完整。

classcomplex

(

private:

intreal;

ihtimag;

public:

complex(inti-O,inti=O):real(r),imag(i){}

voidshow()

{

cout<<real<<(imag<0?"-"<<imag<<'i';

)

【】;

};

complex&operator—(complex&c)

(

c.real—;

returnc;

)

27.排序是计算机程序设计中的一种重要操作,常见的排序方法有插入

排序、【】和选择排序等。

28.常见的需求分析方法有【】和面向对象的分析方法。

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

信息的要求称为【】。

30.对于下面定义的类MyClass,请在函数f()中添加对象成员把n的值

修改为50。

classMyClass

(

public:

MyClass(intx){n=x;}

voidSetNum(intnl){n=nl;}

private:

intn;

);

intf()

(

MyClass*ptr=newMyClass(45);

[]

)

31.浮点数的默认精度值是_____o

32.汇编程序的功能是将汇编语言所编写的源程序翻译成由【】组成的

目标程序。

33.如果表达式-x中的“-”是重载的类运算符,采用运算符函数调用格

式,及表达式还可以表示为0

34.一个项目具有一个项目主管,一个项目主管可管理多个项目。则实

体集“项目主管”与实体集“项目”的联系属于【】的联系。

35.在深度为5的完全二叉树中,度为2的结点数最多为【】。

四、程序改错题(10题)

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

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

Constructor,i=0,

Destructor

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

可。

试题程序:

#include(iostream.h)

classTC

(

inti;

public:

TC;

voiddisplay;

TC;

);

Ii******e*or******

TC:TC

(

cout«"Constructor"«",";

i=0;

)

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

TC:display

(

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

)

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

TC:TC

(

COUI«"Destructor"«endl:

)

voidmain

(

TCa;

a.display;

)

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

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

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

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

构,错误的语句在

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

试题程序:

#include<iostream>

#include<fstream>

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

usingstd;

voidWriteFile(char*s)

ofstreamoutl;

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

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

for(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;

)

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

(

returnnumber;

)

voidPrintconst

{

cout«"number="«number«endl;

)

private:

intnumber;

};

voidmain

TCobjl;

objl.Print;

TCobj2(3);

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

objl.number=10;

II********ej*j*or*^^0******

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

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

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

9,8,7,6,5

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

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

试题程序:

#include(iostream.h>

classTC

!********e£i*or********!

TC(inti)

(

m_i=i;

)

voidprint

{

cout«—m_i«,;

)

public:

intm_i;

};

intmain

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

inti;

TC04(10);

while(i>5)

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

1++:

04.print;

)

cout«endl;

returnO;

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

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

为:

sizeof(S1)=5

sizeof(s2)=I0

sizeof(s3)=l

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

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

(1)不能删除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":

//*1**1**1**1**1**4**1**1*<!>

//年>不不不不不个不m*cr个不不不不不不不

assert(sizeof(s2)==2);

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

chars3=23:

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

assert(sizeof(s3)==4);

cout«"sizeof(s3)=l"«endl;

return;

)

41.使用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;

)

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

TC:display

(

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

)

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

TC:TC

(

COUI«"Destructor"«endl:

)

voidmain

(

TCa;

a.display;

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

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

100

37

32

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

可。

试题程序:

#include<iostream.h>

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

voidmain

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

intm=0142:

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

intn=0X27:

intq=32;

cout<<m<<endl;

cout<<n<<endl;

cout<<q<<endl;

return;

)

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

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

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

中。

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

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

试题程序:

#include<iostream.h>

voidmain

(

inti=O;

charstrf120];

cout«"Enterastringendwith?."«endl;

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

cin.getline(str,120);

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

while(str)

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

if(str[i])=a)

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

i++;

)

cout«str«endl;

return;

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

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

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

到屏幕中。

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

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

试题程序:

#include<iostream.h>

voidmain

(

inti=O;

charstr[120];

cout«"Enterastringendwith?."«endl;

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

cin.getline(str,120);

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

while(str)

(

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

if(str[i])=a)

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

i++;

cout«str«endl;

return;

45.使用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********ej*ror********

TCobjl;

objl.Print;

TCobj2(3);

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

objl.number=10;

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

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

)

五、综合应用题(2题)

46.

请使用【答题】菜单命令或直接用VC6打开考生文件夹下的工程

prog3,其中声明了VaiArray类,该类在内部维护一个动态分配的整型

数组。ValArray类的复制构造函数应实现对象的深层复制。请编写

VaiArray类的复制构造函数。在main函数中给出了一组测试数据,此

种情况下程序的输出应该是:

VaiArrayvl={1,2,3,4,5}VaiArrayv2={1,2,3,4,5}要求:

补充编制的内容写在“〃*********333**********与

”*********666*********”之间,不得修改程序的其他部分。

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

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

//VaiArray,h

#include<iostream>usingnamespacestd;classValArray{

int*v:intsize;public:

ValArray(constint*P,intn):size(n){

v=newint[size];

for(inti=0;i<size;i++)v[i]=P[i];

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

proj3,其中声明的DataList类,是一个用于表示数据表的类。DataList

的重载运算符函数Operator+,其功能是求当前数据表与另一个相同长

度的数据表之和;即它返回一个数据表,其每个元素等于相应两个数

据表对应元素之和。请编写这个operator+函数。程序的正确输出应该

是:

两个数据表:1,2,3,4,5,63,4,5,6,7,8两个数据表之

和:

4,6,8,10,12,14要求:

补充编制的内容写在“//********333********''与

“〃********666********”之间,不得修改程序

的其他部分。

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

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

//DataList.h

#inClude<iostream>usingnamespaCestd;

ClaSSDataList{〃数据表类intfen;

double*d;public:

DataList(intlen,doubledata[]=NULL);DataList(DataList&data);

intlengthConst{returnlen;}

doublegetElement(inti)Consttreturnd[i];}

DataListoperator+(ConstDataList&list)Const;〃两个数据表求和void

showConst;〃显示数据表

);

voidwriteToFile(Char$,ConstDataList&);//main.Cpp

#inClude,,DataList.h"

DataList::DataList(intlen,doubledata[]):len(ien){d=new

doubletlen];

for(inti=0;i<len;i++)

dOOi=(data==NULL?O.0:data[i]);

)

DataList::DataList(DataList&data):len(data.len){d=new

doubleflenl;

fbr(inti=0;i<len;i++)d[i]=data.d[i];

DataListDataList::0perator+(Con8tDataList&list,)Const{〃两个数据

表求和double*dd=newdoubletlist,lensth];

//********333********

〃********666********

returnDataList(list.length,dd);}

voidDataList::showConst{〃显示数据表fr(intoi=0;i<len-1;i++)

eout«d[i]«,,,“;

Cout«d[len-l]«endl;

intmain{

doublesl[]={l,2,3,4,5,6};

doubles2[]={3,4,5,6,7,8);

DataListlist1(6,si),list2(6,s2);〃定义两个数据表对象eout<<“两个

数据表:“<<endl:

listl.show:list2.show;eout«endl<<”两个数据表之

和:n«endl:

(listl+list2).show;

writeToFile(,,,,»listl+lis⑵;return0:

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

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

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

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

(1)完成构造函数的定义,把数据成员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);

voiddisplayO;

voidset();

〜Vector();

protected:

intsize;

int*buffer;

);

Vector::Vector(ints)

/

I

****

1

J

.

Vector::Vector(Vector&v)

(

〃**2**

i++

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

)

)

int&Vector::elem(intndx)

//**3**

cout<<eri'orinindex<<end!;

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打开考生文件夹下的工程testl7_3,此工程包含一个源程

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

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

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

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

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

语句。

(2)完成类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)

(

〃**2**

)

-Text(){}

);

classCircleWithText:publicPoint,publicText

{

public:

()

〜CircleWithText(){}

);

voidmain()

(

CircleWithTextcm(3,4,"hello");

)

参考答案

l.B

2.A解析:此题考查的是模板的特点。模板是以一种完全通用的方法来

设计函数或类而不必预先说明将被使用的每个对象的类型。

3.D解析:本题主要考察C++中输入流成员函数的使用。输入流的成员

函数主要包括open。、get。、getline。、read。、seekg()、tellg()和close。

等函数。其中,getline()函数从输入流中读取多个字符,并且允许指定输

入终止符,其原形为:

getline(char*line,intsize,char-\\n')o

其中:函数的第1个参数是字符数组,用于放置读取的文本:第2个参

数是本次读取的最大字符个数,通过改变该参数可以设置读入的最大字

节数即字符串长度第3个参数是分隔字符,作为读取一行结束的标志,

默认为换行符\",通过改变该参数,可以自定义输入形式和结束标志。

因此可以判断,题目选项D的叙述是错误的,可以通过改变参数修改

getline()函数中所使用的终止符。

4.B解析:本题的运算过程是fun((int)fun(a+c,B,a-C,fun((int)fun(10,

5),2-8),fun((int)15.000000,-6),fun(15,-6)=9o

5.B

该函数用于数据类型和变量。注意:sizeof操作符不能用于函数、不完

全类型或位字段。不完全类型指具有未知存储大小的数据类型,如未

知存储大小的数组类型、void类型等。

6.B解析:初始化应该和构造函数相同。

7.A解析:本题考核this指针的使用。类的每一个成员函数都有一个隐

含定义的常量指针,称为this指针。它是成员函数所属对象的指针,它

指向类对象的地址。若func()是该类的友元函数,this指针就没有指向

同一个对象的地址,语句this->ff=O;与语句ff=O;的效果就不同了。

静态成员函数没有this指针。因为类只有一个静态成员函数实例,所以

使用this指针没有什么意义。在静态成员函数中使用this指针会引起编

译错误。

8.A解析:根据节点v的右子树的节点中,其最小编号等于v左子树上

的节点的最大编号加1,可以断定是前序遍历。

9.B

10.C

1LB解析:赋值运算符=和运算符口只能作为成员函数重载,而一,+则

没有限止。

12.D

本题考查函数调用及传值方式传递参数,执行函数function时,并没

有将3的值传回来,而val又没有初始化,所以会输出一个不确定的

值,D选项正确。

13.D

14.A

iomanip中定义的操纵符包括:setfill(ch)用ch填充空白、

setprecision(n)将浮点精度置为n、setw(w)、读写w个字符的值

showpoint没置小数点。

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

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

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

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

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

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

据的原则。

16.D解析:本题考核类的析构函数。在C++中,析构函数名为符号“〜”

加类名,析构函数没有参数和返回值。根据以上知识可知,MyClass类

的正确析构函数的说明为~MyClass()。

17.C

本题主要考查了成员对象。类TWO的数据成员是类ONE的对象onel

和one2,main。函数中首先创建类TWO的对象t并提供初始值4,先

执行成员对象onel的构造函数体,输出1;再执行成员对象one2的构

造函数体,输出2,最后执行类TWO的构造函数体,输出3。因此本

题程序运行时的输出结果是123o

18.C

19.A

本题考查重载流运算符“>>”,根据重载规则,本题答案为A。

20.A解析:函数定义时如果数据类型默认,则默认为into函数中如果

有“retum(表达式):”语句,表达式的类型可能与函数的类型不一致,但

它并不能改变函数的类型,实际情况是把表达式转换为函数值的类型作

为返回值,因此本题的函数值类型是int。

21.D

Do【解析】函数执行过程为:functionl(5),function2⑶,

functionl(2),function2(0)return。

22.B解析:题目中的两个函数参数个数不同,因此可以在同一程序中定

义为重载函数。所以,选项B)叙述正确。

23.C解析:在关系模型的数据语言中,一般除了运用常规的集合运算(并、

交、差、笛卡尔积等)外,还定义了一些专门的关系运算,如投影、选择、

连接等运算。前者是将关系(即二维表)看成是元组的集合,这些运算主

要是从二维表的行的方向来进行的;后者主要是从二维表的列的方向来

进行运算。因此,选项A与B中的说法都是错误的,而选项C中的说

法是正确的。

24.friendvoidA();friendvoidA();解析:C++中类的友元函数在声明

时应在该函数前面加上关键字friend,同样如果要声明一个类为另一个

类的友元类也要在前面类名前加上friend0

25.数据库管理系统

数据库管理系统(DBMS)

26.friendcomplex&operator-(complex&)friendcomplex&operator—

(complex&)解析:本题考核运算符重载的定义。程序要填入的是运算符

函数operator-在类complex中的声明,运算符“-”是作为友元函数重

载的。根据题目给出的条件,易得到答案。

27.交换排序交换排序解析:常见的排序方法有插入排序(包括简单插入

排序法和希尔排序法等)、交换排序(包括冒泡排序和快速排序法等)和选

择排序(包括简单选择排序和堆排序等)。注意:常见的排序方法及其作

用机制和区别。

28.结构化分析方法结构化分析方法解析:本题是基础题,考核需求分

析方法。常见的需求分析方法有结构化分析方法和面向对象的分析方法。

29.消息消息解析:消息是一个实例与另一个实例之间传递的信息,它

请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制

流。

3O.Ptr->SetNum(50);Ptr->SetNum(50);解析:本题考查的是考生使

用对象指针调用成员函数的能力,指针调用成员函数应该使用符号“-

>"。

31.6位6位

32.机器语言机器语言

33.x.operator—()

34.一对多一对多解析:实体集“项目主管”与实体集“项目”的联系属于

一对多的联系。

35.15

36.(1)应改为“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.(1)应改为"usingnamespacestd;"。

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

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

\n【解析】本题第1处的“usingstd;”是在程序中弓I入标准命名空间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]);

38.⑴应改为“TCobjl(l);3

(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)应添力「public:"。

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

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

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

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

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

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

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

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

循环永远不会退出。

40.(1)应改为"assert(sizeof(sD==4);

\n⑵应改为"assert(sizeof(s2尸=10);

⑦⑶应改为"assert(sizeof(s3尸=1);

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

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

uassert(sizeof(s1)=3);”语句中"sizeof(sD==3”为假,这会使程序产生异

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

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

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

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

t4assert(sizeof(s3)=1);

41.⑴应改为“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”。

42.(l)uvoidmain,,o

(2)“intm=0144;

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

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

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

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

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

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

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

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

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

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

5,

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

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

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

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

温馨提示

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

评论

0/150

提交评论