2023年云南省昆明市全国计算机等级考试C++语言程序设计真题(含答案)_第1页
2023年云南省昆明市全国计算机等级考试C++语言程序设计真题(含答案)_第2页
2023年云南省昆明市全国计算机等级考试C++语言程序设计真题(含答案)_第3页
2023年云南省昆明市全国计算机等级考试C++语言程序设计真题(含答案)_第4页
2023年云南省昆明市全国计算机等级考试C++语言程序设计真题(含答案)_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

2023年云南省昆明市全国计算机等级考试

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

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

一、1.选择题(10题)

1.下列选项中,不属于模块间耦合的是

A.数据耦合B.同构耦合C.异构耦合D.公用耦合

2.通常拷贝构造函数的参数是()

A.某个对象名B.某个对象的成员名C.某个对象的弓[用名D.某个对象

的指针名

3.有如下程序:#include<iostream>usingnamespacestd:class

Test{public:Test(){n+=2;〜Test(){n-=3;;staticintgetNum(){return

njprivaue:staticintn:};intTest::n=l;intmain(){Test*p=newTest;deletep;

cout<<"n="<<Test::getNum()<<endl;return0;)执行后的输出结果

A.n=0B.n=lC.n=2D,n=3

4.下面程序的输出结果是()。#include<iostream.h>voidmain(){intx=-

1,y=5,z;z=(x++<0)&&(y->=0);cout<<x<<'\t'<<y<<'\t'<

<z<<endl;}

A.-l50B.-141C,041D.040

5.在函数中,可以用auto、extern>register和static这四个关键字中的

一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类

型是

A.autoB.externC.registerD.static

6.在深度为7的满二叉树中,非叶子结点的个数为()。

A.32B.31C.64D.63

7.串的长度是o

A.A.串中不同字符的个数

B.串中不同字母的个数

C.串中所含字符的个数且字符个数大于零

D.串中所含字符的个数

8.阅读以下程序,写出程序运行后的输出结果是oinclude<

iostream.h>voidmain(){chara[]={'H','e','r','1','o',inti,j;

i=sizeof(a)/sizeof(char);j=strlen(a)cout<<i<<''<<j;}

A.66B.56C.15D.65

9.在结构化程序设计思想提出之前,在程序设计中强调程序的效率。与

程序的效率相比,结构化程序设计思想更重视程序的()o

A.安全性B.一致性C.可理解性D.合理性

10.类MyClass的定义如下:classMyClass{public:MyClass(){}

MyClass(inti){value=newint(i);}int*value;};若要对value赋值,则下

面语句正确的是()

A.MyClassmy;my.value=10;

B.MyClassmy;*my.value=10;

C.MyClassmy;my.*value=10;

D.MyClassmy(10);

二、单选题(13题)

11.在数据管理技术发展的3个阶段中,数据共享最好的是()。

A.人工管理阶段B.文件系统阶段C.数据库系统阶段D.3个阶段相同

12.以下叙述正确的是()。

A.函数可以嵌套定义但不能嵌套调用

B.函数既可以嵌套调用也可以嵌套定义

C.函数既不可以嵌套定义也不可以嵌套调用

D.函数可以嵌套调用但不可以嵌套定义

13.软件生命周期是指()。

A.软件产品从提出、实现、使用维护到停止使用退役的过程

B.软件从需求分析、设计、实现到测试完成的过程

C.软件的开发过程

D.软件的运行维护过程

14.有如下的程序:#include<cstring.h)#ingclude<iostream.h)using

namespacestd;ClassMyString{public:MyString(constchar*s);

~MyString(){delete[]data;}protected:unsignedlen;char*data;};

MyString::MyString(constchar*S){1

A.构造函数的实参不允许是本类的对象

B.没有定义实现深层复制(深拷贝)的复制构造函数

C.构造对象a时实参与形参类型不符

D.系统不能生成默认的复制构造函数

15.若已定义:inta[]={0,1,2,3,4,5,6,7,8,9),*p=a,i;其

中把运9,则对a数组元素不正确的引用是()。

A.a[p-a]B.*(&a[i])C.p[i]D.a[10]

16.Tilil程序的运行结果是()o

#include<iostream.h>voidmain

(

inti=l:

while(i<=8)

if(++i%3l=2)continue:elseeout«i;

)

A.25B.36C.258D.369

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

()O

A.setpreCisionB.setwC.setfillD.showpoint

18.有下"J程序:#include<iostream.h>usingnamespacestd;classBase

{protected:inti;public:intj;};classDerived:publicBase{intm;public:

into;};int

A.[l]和[2]B.⑴和[3]A⑵和[3]D.⑵和[4]

19.下列关于运算符重载的描述中,正确的是()。

A.运算符重载为成员函数时,若参数表中无参数,重载的是一元运算符

B.一元运算符只能作为成员函数重载

C.二元运算符重载为非成员函数时,参数表中有一个参数

D.C++中可以重载所有的运算符

20.层次型、网状型和关系型数据库划分原则是()。

A.己录长度B.文件的大小C.联系的复杂程度D.数据之间的联系方式

21.已知n是一个int型变量,下列语句中错误的是()。

A.long*p=newlong[n];

B.longp[n];

C.long*p=newlong(n);

D.longp[10];

22.当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件

的默认打开方式为

A.ios_base::in

B.ios_base::in1ios_base::out

C.ios_base::out

D.ios_base::ingdos_base::out

23.有如下程序:

#include<iostream>

usingnamespacestd;

classPair{

intm,n;

public;

Pair(intj,intk):m(j),n(k){}

intget(){returnm;}

intget()const{returnm+n;}

};

intmain(){

Paira(3,5);

constPairb(3,5);

cout«a.get()«b.get();

returnO;

}

运行时的输出结果是()oA.33B.38C.83D.88

三、2.填空题(12题)

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

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

25.类time可以输出12小时或24小时制的时间,现需要设计一个缺省

构造函数,缺省值为。时。分。秒。该缺省构造函数为O

#include<iostream,h>

classTime

(

inth,m,s;

public:

Time(inthour=0,intmin=0,intsec=O){settime(hour,min,sec);}

voidsettime(inthour,intmin,intsec){h=hour;m=min;s=sec;}

voidshow24()

{cout<<(h<10?"0":"")<<h<<<<(m<10?"0":"")<<

m<<<<(s<10?"0":"")<<s<<endl;

)

voidshowl2()

{inttemp=(h==0||h==12)?12:h%12;

cout<<(temp<10?"0":"")<<temp<<<<(m<10?"0":"")

<<m<<<<(s<10?"0":"")<<s<<((temp>0&&h<12)?"

AM":"PM")<<endl;

)

);

voidmain()

(

Timet(15,43,21);

t.showl2();

t.show24();

)

26.类是用户定义的类型,具有类类型的变量称作【】。

27.在面向对象方法中,【】描述的是具有相似属性与操作的二组对象。

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

29.在关系数据库中,用来表示实体之间联系的是

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

函数的对象。

31.按照逻辑结构分类,结构可以分为线性结构和非线性结构,栈属于

32.通常,将软件产品从提出、实现、使用维护到停止使用退役的过程

称为【】。

33.C++的五种基本数据类型int、char、float、double和longint所占内

存空间大小的关系是【】。

34.某二叉树的先根遍历序列为CEDBA,中根遍历序列为DEBAC,则

其后根遍历序列为【】。

35.请将下列栈类Stack补充完整。

classStack{

private:

intpList[100]//int数组,用于存放栈的元素

inttop;〃栈顶元素(数组下标)

public:

Stack();top(0){)

voidPush(constint&item);〃新元素item压入栈

intPop(void);//将栈顶元素弹出栈

);

voidStack::Push(constint&item){

if(to

四、程序改错题(10题)

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

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

100

37

32

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

可。

试题程序:

#include<iostream.h>

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

voidmain

(

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

intm=0142:

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

intn=0X27:

intq=32;

cout<<m<<endl;

cout<<n<<endl;

cout<<q<<endl;

return;

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

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

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

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

构,错误的语句在

II******epfor******白勺~

试题程序:

#include<iostream>

#include<fstream>

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

usingstd;

voidWriteFile(char*s)

(

ofstreamoutl;

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

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

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

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

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,该程序

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

Constructor,i=0,

Destructor

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

可。

试题程序:

#include(iostream.h)

classTC

inti;

public:

TC;

voiddisplay;

TC;

);

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

TC:TC

cout«"Constructor"«","

i=0;

)

I/******eiror******

TC:display

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

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

TC:TC

COUI«"Destructor"«endl:

voidmain

(

TCa;

a.display;

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

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

inti;

TC04(10);

while(i>5)

I**************I

1++

04.print;

)

cout«endl;

returnO;

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

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

为:

sizeof(Sl)=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(sl)=5"«endl;

chars2[10]="ab":

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

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,但该程

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

确。

程序输出:

8

8

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

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

试题程序:

#include(iostream.h>

classCO

(

public:

/********ej*por********j

staticintn=O:

CO

(

n++:

}

〜CO

):

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

intCO::n;

voidmain

COobj;

COobj2[7];

CO*C=NULL:

c=&obj:

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

eout«C.n«endl;

cout«C0::n«endl;

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

(

returnnumber;

)

voidPrintconst

(

cout«"number="«number«endl;

)

private:

intnumber;

);

voidmain

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

TCobjl;

objl.Print;

TCobj2(3);

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

objl.number=10;

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

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

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

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

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

到屏幕中。

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

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

试题程序:

#include<iostream.h>

voidmain

(

inti=O;

charstr[120];

cout«"Enterastringendwith?."«endl;

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

cin.getline(str,120);

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

while(str)

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

if(str[i])=a)

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

i++;

cout«str«endl;

return;

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

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

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

程序异常,输出信息为

error

0

ERROR

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

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

试题程序:

#include<iostream.h)

intmain

(

try

(

throw("error");

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

catch(chars)

(

cout«s«endl;

try

throw((int)0);

/I********ej'j"or********

catch

(

cout«i«endl;

)

try

(

throw(O);

throw("error");

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

catch

(

cout«"ERROR"«endl;

)

returnO;

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

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

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

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

构,错误的语句在

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

试题程序:

#include<iostream>

#include<fstream>

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

usingstd;

voidWriteFile(char*s)

(

ofstreamoutl;

/j********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;

五、综合应用题(2题)

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

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

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

要求:

补充编制的内写左£"〃************333************“与

,力****************666*************''^JXIo的部

分。

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

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

//CDeepCopy.h

#include<iostream>

#include<string>

usingnamespacestd;

classCDeepCopy

public:

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

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

CDeepCopy(int);

CDeepCopy;

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

);

voidwriteToFile(chai'});

//main,cpp

#include,,CDeepCopy.h"

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

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

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

符函数实现

〃/华举举举举举举举举举举333米米米米米格米格举

//***********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«5,dfadeaway;\n";

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

,,,,

writeToFile();

return0;

47.

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

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

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

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

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

ValArrayvl={L2,3,4,5}ValArrayv2={1,2,3,4,5)要求:

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

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

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

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

//ValArray.h

#include<iostream>usingnamespacestd;classValArray{

int*v:intsize;public:

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

v=newint[size];

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

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

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

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

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

⑴定义类的公有数据成员no,name[10],其中no是int型的数据,name[10]

是字符型一维数组。请在注释“〃**1**”之后添加适当的语句。

⑵完成函数set的定义,分别将参数n,na的值赋给数据成员no,nameo

注意:请使用this指针完成对no的赋值,使用字符串函数实现对name

和cname的赋值。请在注释“//**2**”之后添加适当的语句。

(3)完成类的成员函数disp的定义,使其按no,deg,name和cname的顺序

输出类的数据成员的值,中间使用跳格符分隔,请在注释“〃**3**”之后

添加适当的语句。

输出结果如下:

1李华95990701

2王东83990702

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

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

#include<iostream.h>

#include<string.h>

classStud

public:

H**]**

mtdeg;

charcname[10];

Stud(){}

v(oidset(intn,charna[],intd,charcn[])

〃**2**

deg=d;

strcpy(cname,cn);

}

voiddisp()

(

//**3**

)

);

voidmain()

(

Studobj[2];

obj[0].set(l,J李华”,95,”990701");

obj[l].set(2,”王东",83,”990702");

obj[0].disp();

obj[l].disp();

)

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

序文件MyMainl4.cpp,程序中定义了3个类A、B和C,但类的定义并

不完整。

请按要求完成下列操作,将类的定义补充完成:

①类A的成员函数setx(inti,intj)是虚函数,其实现的功能是将类A的

保护成员x和y分别设置成i和j并且y具有默认值0。请在注释“//*

*1**,,之后添加适当的语句。

②将类A的成员函数print。声明成员纯虚函数。请在注释“//**2**”之

后添加适当的语句。

③完成类A的保护数据成员x和y的定义,它们都是整型变量。请在注

释“//**3**”之后添加适当的语句。

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

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

//MyMainl4.cpp

#include<iostream>

usingnamespacestd;

classA

(

public:

〃***]***

〃***2***

protected:

〃***3***

);

classB:publicA

(

public:

voidprint()

(

cout<<X*X<<",

}

);

classC:publicA

(

public:

voidprint()

(一

cout<<x*x*x<<endl;

)

);

intmain()

(

A*pa;

Bb;

Cc;

pa=&b;

pa->setx(5);

pa->print();

pa=&c;

pa->setx(2);

pa->print();

return0;

)

参考答案

l.C解析:模块之间的耦合程度反映了模块的独立性,也反映了系统分

解后的复杂程度。按照耦合程度从弱到强,可以将其分成5级,分别是:

数据耦合、同构耦合、控制耦合、公用耦合和内容耦合。选项C),没有

这种耦合方式。注意:评价模块独立性的主要标准,以及对它们的定义

和分类。

2.C解析:复制初始化构造函数的作用是用一个已知的对象来初始化一

个被创建的同类的对象,该函数只有一个参数,并且是对同类的某个对

象的引用。

3.A解析:本题考核静态数据成员与静态成员函数的定义与使用方式。

静态数据成员是类中所有对象共享的成员,而不是某个对象的成员.题

中变量n是静态数据成员,对象对其操作的结果具有叠加作用,main函

数中先定义了Test的对象*p,然后又deletep,所以对静态数据n进行

了两次操作,分别是“n+=2”和“n-=3”,n的初始值是1,那么n最后的值

变为0omain函数最后通过调用静态函数getNum得至【Jn的值,并输出。

4.C

5.A

解析:本题考查的知识点是:存储类型。C++中变量的存储类型分为

如下几种类型:

(l)auto-----函数内部的局部变量(auto可省略不写)。

(2)static——静态存储分配,又分为内部和外部静态。

(3)extern----全局变量(用于外部变量说明)。

(4)register——变量存储在硬件寄存器中。

故本题应该选择Ao

6.D

7.D解析:串的长度指的是串中字符的个数,且其字符个数可以为零。

选项D正确。

8.D

9.C

10.D

根据题意,对value赋值,正确的语句是MyClassmy(10);。

H.C解析:人工管理阶段是在计算机出现的初期,主要用于科学计算,

没有大容量的存储设备。处理方式只能是批处理,数据不共享,不同程

序问不能交换数据。文件系统阶段把有关的数据组织成一种文件,这种

数据文件可以脱离程序而独立存在,由一个专门的文件管理系统实施统

一管理;但是,数据文件仍高度依赖于其对应的程序,不能被多个程序

所通用。数据库系统阶段对所有的数据实行统一规划管理,形成了一个

数据中心,构成了一个数据仓库;数据库中的数据能够满足所有用户的

不同要求,供不同用户共享;数据共享性显著增强。

12.D解析:在C语言中,所有的函数都是平行的,即在定义函数时是

互相独立的,一个函数并不从属于另一个函数,即函数不能嵌套定义,

但可以互相调用,但不能调用main函数。注意:函数不能嵌套定义,

但可以嵌套调用,故选项A)、B)和C)中的描述都错误。

13.A通常,将软件产品从提出、实现、使用维护到停止使用退役的过程

称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件

产品不能使用为止的整个时期都属于软件生命周期。

14.B解析:C++语宫中当一个新对象被另一个已存在的同类型对象初

始化时要调用复制构造函数,语句'MyS-trmgb(a),”符合此条件将调用

类MyString的复制构造函数,但是类MyString没有定义此复制构造函

数,所以会出错。

15.D

Do【解析】通常,引用一个数组元素可以用下标法,如a[p-a]形式,

或指针法,如*(&a[i])的形式。本题中a[9]=9,a[10]显然超出了数组范

围,数组的下标是从。开始的。

16.C

应该先做++运算,然后进行%运算,最后比较不等式,实际上最后输

出的结果就是被3除,余数为2的不大于8的数。

17.A

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

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

showpoint没置小数点。

18.B解析:此题考查的是类和派生类的访问权限。类Derived公有继

承类Base,所以d对基类Base成员的访问权限不变。因数据成员i为

保护,故不能通过对象访问:派生类Derived中m变量为私有,同样不

能通过对象访问,所以口]、[3]错误。

19.A

解析:本题考查的知识点是:运算符的重载。运算符重载为成员函数

时,形参个数一般为运算符的元数减1,因为此成员函数所属的对象可

成为运算符的一个运算分量。重载为非成员函数时,形参个数一般和

运算符元数相等。所以,二元运算符重载为非成员函数时,参数表中

应有两个参数,选项C不正确;运算符重载为成员函数时,若参数表

中无参数,重载的是一元运算符,选项A是正确的。一元运算符中,

取负、“++”增1、“-”减1等运算符均可重载为成员函数,故选项B

不正确。\u3000C++中,有五个运算符不

能重载,故选项D不正确。本题应该选择A。

20.D层次模型的基本结构是树形结构,网状模型是一个不加任何条件限

制的无向图,关系模型采用二维表来表示,所以三种数据库的划分原则

是数据之间的联系方式。

21.B解析:本题考核指针、数组和关键字new。说明一维数组的一般形

式为:<数据类型><数组名>[<数组长度>];在此数组长度必须常

量表达式,它是一个整常数。B)选项中n是一个int型变量不是常数,

所以是错误的。选项A、C使用new获得动态内存空间,它的操作数可

以带有初始值表达式或元素个数,A选项的形式表示数组元素的个数,

C选项的形式表示为变量*p赋初值no

22.A

解析:在默认情况下,与ifstream流对象关联的文件将以in模式打

开,该模式允许文件进行读操作;与ofstream关联的文件则以out模

式打开,使文件可写。

23.B

Bo【解析】eonst函数只能被eonst对象调用,a.get函数调用的返回

值是3,而b.get调用的返回值是8。

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

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

种方法称为动态分析。

25.Time(){h=0;m=0;s=0;}Time(){h=0;m=0;s=0;}解析:注意缺省构造函

数为无参构造函数,且必须为私有数据成员赋初值。

26.对象对象

27.类类

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

的友元函数。

29.关系关系

3O.this

31.线性结构线性结构解析:数据的逻辑结构,是指数据元素之间的逻

辑关系,分为线性结构和非线性结构,常见的线性结构有线性表、栈和

队列等;常见的非线性结构有树、二叉树等。

32.软件生命周期软件生命周期解析:通常,将软件产品从提出、实现、

使用维护到停止使用退役的过程称为软件生命周期。

33.char<int<longint<float<double

34.DABEC

35.pList[top]=item

36.(1)“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;

37.(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。1.txt[binary|

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

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

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

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.⑴应添加“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(sl)==4);

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

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

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

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

"assert(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,所以修改为

4tassert(sizeof(s3)==1);”。

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

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

“o

温馨提示

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

评论

0/150

提交评论