2021年云南省丽江市全国计算机等级考试C++语言程序设计测试卷(含答案)_第1页
2021年云南省丽江市全国计算机等级考试C++语言程序设计测试卷(含答案)_第2页
2021年云南省丽江市全国计算机等级考试C++语言程序设计测试卷(含答案)_第3页
2021年云南省丽江市全国计算机等级考试C++语言程序设计测试卷(含答案)_第4页
2021年云南省丽江市全国计算机等级考试C++语言程序设计测试卷(含答案)_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

2021年云南省丽江市全国计算机等级考试C++语言程序设计测试卷(含答案)学校:________班级:________姓名:________考号:________

一、1.选择题(10题)1.下列叙述中正确的是()。

A.线性链表是线性表的链式存储结构B.栈与队列是非线性结构C.双向链表是非线性结构D.只有根结点的二叉树是线性结构

2.有以下程序#include<iostream.h>voidmain(){inta=5,b=0,c=0;if(a=b+c)cout<<"***"<<endl:elsecout<<"$$$"<<<endl;}下列选项叙述正确的是()。

A.有语法错不能通过编译B.可以通过编译但不能通过连接C.输出***D.输出$$$

3.属于关系的基本类型的是()。

A.堆栈表B.视图表C.双列表D.散列表

4.下列变量名中,______是合法的。

A.CHINAB.byte-sizeC.doubleD.A+a

5.对于常数据成员,下面描述正确的是()。

A.常数据成员可以不初始化,并且不能更新

B.常数据成员必须被初始化,并且不能更新

C.常数据成员可以不初始化,并且可以被更新

D.常数据成员必须被初始化,并且町以被更新

6.下列数据结构中,能够按照“先进后出”原则存取数据的是()。

A.循环队列B.栈C.队列D.二叉树

7.在c++语言中,数据封装要解决的问题是()。

A.数据的规范化B.便于数据转换C.避免数据丢失D.防止不同模块之间数据的非法访问

8.如果类A被说明成类B的友元,则()。

A.类A的成员即类B的成员

B.类B的成员即类A的成员

C.类A的成员函数不得访问类B的成员

D.类A的成员函数可以访问类B的成员

9.关于函数重载,下列叙述中错误的是()。

A.重载函数的函数名必须相同

B.重载函数必须在参数个数或类型上有所不同

C.重载函数的返回值类型必须相同

D.重载函数的函数体可以有所不同

10.关于虚函数的描述牛,______是正确的。

A.派生类的虚函数与基类的虚函数具有不同的参数个数和类型

B.基类中说明了虚函数后,派生类中其对应的函数一定要说明为虚函数

C.虚函数是—个成员函数

D.虚函数是一个static类型的成员函数

二、单选题(13题)11.一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是()。

A.12345ABCDEB.EDCBA54321C.ABCDEl2345D.5432lEDCBA

12.有如下程序:#inClude<iostream>usingnamespaCestd;ClassMusiC{publiC:voidsetTitle(Char*str){strCpy(title,str);}proteCted:Chartype[10];private:Chartitle[20];ClassJazz:publiCMusiC{publiC:voidset(Char*str){strCpy(type,”Jazz’);//①strCpy(title,str);//②}};下列叙述中正确的是()。A.程序编译正确B.程序编译时语句①出错C.程序编译时语句②出错D.程序编译时语句①和②都出错

13.有如下类定义和变量定义:

classParents{

public:

intpublicuata;

private:

intprivateData;

};

classChildA:publicParents{/*类体略*/};

classChildB:privateParents{/*类体略*/);

ChildAa;

ChildBb;

下列语句中正确的是A.cout<<

B.cout<<

C.cout<<

D.cout<<

14.下面是重载为非成员函数的运算符函数原型,其中错误的是A.Fractionoperator+(Fraction,Fraction);

B.Fractionoperator-(Fraction);

C.Fraction&perator=(Fraction&,Fraction);

D.Fraction&operator+=(Fraction&,Fraction);

15.在C++中,编译系统自动为一个类生成缺省构造函数的条件是()。A.该类没有定义任何有参构造函数

B.该类没有定义任何无参构造函数

C.该类没有定义任何构造函数

D.该类没有定义任何成员函数

16.有如下程序:#include<iostream>usingnamespacestd;classONE{intc;public:ONE():c(0){cout<<1;}ONE(intn):c(n){cout<<2;}};classTWO{ONEone1;ONEone2;public:TWO(intm):one2(m){cout<<3;}};intmain(){TWOt(4);return0;}运行时的输出结果是_________。A.3B.23C.123D.213

17.数据视图的描述称为()。

A.A.外模式B.内模式C.概念模式D.存储模式

18.假定MyCIass为一个类,那么下列的函数说明中,()为该类的析构函数。

A.void~MyClass();

B.~MyClass(intn);

C.MyClass();

D.~MyClass();

19.考虑函数原型voidtest(inta,intb=7,charz=*),下面的函数调用中,属于不合法调用的是()。

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

20.

21.负责数据库中查询操作的数据库语言是()。

A.数据定义语言B.数据管理语言C.数据操纵语言D.数据控制语言

22.有如下程序:#include<iostream>usingnamespacestd;classComplex{doublere,im;public:Complex(doubler,doublei):re(r),im(i){}doublereal()const{returnre;}doubleimage()const{returnim;}Complex&operator+=(Complexa){re+=a.re;im+=a.im;return*this;}};ostream&operator<<(ostream&s,constComplex&z){remms<<'('<<z.real()<<','<<z.image()<<')';}intmain(){Complexx(1,-2),y(2,3);cout<<(x+=y)<<endl;return0;}执行这个程序的输出结果是A.(1,-2)B.(2,3)C.(3,5)D.(3,1)

23.有如下类模板定义:template<typenameT>classBigNumber{longn;public;BigNumber{Ti}:n(i){}BigNumberoperator+(BigNumberb){returnBigNumber{n+b.n);}};已知b1、b2是BigNumber的两个对象,则下列表达中踏误的是()。A.b1+b2B.b1+3C.3+b1D.3+3

三、2.填空题(12题)24.C++中每个类都有一个隐含的______指针。

25.实体关系图(E-R图)是用来描述【】。

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

27.在C++语言的面向对象程序设计框架中,【】是程序的基本组成单元。

28.在面向对象程序设计中,从外面只能看到对象的外部特征,而不知道无需知道数据的具体结构以及实现操作的算法,这称为对象的______。

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

30.请将下列类定义补充完整。

classBase{public:voidfun(){cout<<“Base::fun”<<endl;}};

classDerived:publicBase

{public:

voidfun(){

______//显式调用基类的fun函数

cout<<“Derived::fun”<<endl;}};

31.在程序设计阶段应该采取【】和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,进而用某种程序设计语言写成程序。

32.若a.b和c均是int型变量,则表达式a=(b=4)+(c=2)执行后,a的值为【】。

33.数据流的类型有______和事务型。

34.若需要定义一个标识符常量,并且使得C++能够进行类型检查,则应在定义语句的开始使用保留字【】。

35.以下程序的执行结果是【】。

#include<iostream.h>

template<classT>

classSample

{

Tn;

public:

Sample(Ti){n=i;)

voidoperator();

voiddisp(){cout<<"n="<<n<<endl;)

};

template<classT>

voidSample<T>::operator()

{

n=1;//不能用n;因为double型不能用

}

voidmain()

{

Sample<char>S('a');

S;

s.disp();

}

四、程序改错题(10题)36.使用VC++6.0打开考生文件夹下的源程序文件1.cpp。本程序要求输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输入多行,当输入字符“?”时,默认字符输入结束,最后把结果输出到屏幕中。注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。试题程序:#include<iostream.h>voidmain{inti=0;charstr[120];cout<<"Enterastringendwith?."<<endl;//********error********cin.getline(str,120);//********error********while(str){//********error********if(str[i])=a)str[i]=str[i]-a+A;i++;}cout<<str<<endl;return;}37.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,输出的结果为Constructor,i=0,Destructor注意:错误的语句在//******error******的下面,修改该语句即可。试题程序:#include(iostream.h)classTC{inti;public:TC;voiddisplay;~TC;};//******error******TC:TC{cout<<"Constructor"<<",";i=0;)//******error******TC:display{tout<<"i="<<i<<","<<endl;}//******error******TC:TC{COUI<<"Destructor"<<endl:}voidmain{TCa;a.display;}

38.使用VC++6.0打开考生文件夹下的源程序文件1.cpp。本程序要求输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输入多行,当输入字符“?”时,默认字符输入结束,最后把结果输出到屏幕中。

注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。

试题程序:

#include<iostream.h>

voidmain

{

inti=0;

charstr[120];

cout<<"Enterastringendwith?."<<endl;

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

cin.getline(str,120);

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

while(str)

{

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

if(str[i])=a)

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

i++;

}

cout<<str<<endl;

return;

}

39.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实现的功能为从键盘输入一个字符串,并将结果保存到文件1.txt中。注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。试题程序:#include<iostream>#include<fstream>//********error********usingstd;voidWriteFile(char*s){ofstreamout1;//********error********out1.open("1.txt",binary|app);for(inti=0;s[i]!=0;i++){//********error********out1.puts(s[i]);}out1.close;}voidClearFile{ofstreamout1;out1.open("1.txt");out1.close;}intmain{chars[1024];ClearFile;cout<<"pleaseinputastrin9:"<<endl;cin.getline(s,1024);WriteFile(s);return0;}40.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行有问题,请改正main函数中的错误,使程序的输出结果为:number=1number=10number=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{//********error********TCobjl;objl.Print;TCobj2(3);//********error********objl.number=10;//********error*‰******TC.SetNumber(100);objl.Print;obj2.Print;}41.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,但该程序运行有问题,请改正main函数中的错误,使该程序的输出结果正确。程序输出:88注意:错误的语句在/********error********/的下面。修改该语句即可,其他的语句不能修改。试题程序:#include(iostream.h>classCO{public:/********error********/staticintn=0:CO{n++:}~CO{n--:}}:/********error********/intCO::n;voidmain{COobj;COobj2[7];CO*C=NULL:c=&obj:/********error********/eout<<C.n<<endl;cout<<C0::n<<endl;}

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

{

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

TCobjl;

objl.Print;

TCobj2(3);

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

objl.number=10;

//********error*‰******

TC.SetNumber(100);

objl.Print;

obj2.Print;

}

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

1.cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实现的功能为从键盘输入一个字符串,并将结果保存到文件1.txt中。

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

//******error******的下面。

试题程序:

#include<iostream>

#include<fstream>

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

usingstd;

voidWriteFile(char*s)

{

ofstreamout1;

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

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

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

{

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

out1.puts(s[i]);

}

out1.close;

}

voidClearFile

{

ofstreamout1;

out1.open("1.txt");

out1.close;

}

intmain

{

chars[1024];

ClearFile;

cout<<"pleaseinputastrin9:"<<endl;

cin.getline(s,1024);

WriteFile(s);

return0;

}

44.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,输出的结果为

Constructor,i=0,

Destructor

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

试题程序:

#include(iostream.h)

classTC

{

inti;

public:

TC;

voiddisplay;

~TC;

};

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

TC:TC

{

cout<<"Constructor"<<",";

i=0;

)

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

TC:display

{

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

}

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

TC:TC

{

COUI<<"Destructor"<<endl:

}

voidmain

{

TCa;

a.display;

}

45.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错。请改正程序中的错误,使程序输出的结果为1003732注意:错误的语句在//******error******的下面,修改该语句即可。试题程序:#include<iostream.h>//******error******voidmain{//******error******intm=0142://******error******intn=0X27:intq=32;cout<<m<<endl;cout<<n<<endl;cout<<q<<endl;return;}五、综合应用题(2题)46.使用VC++6.0打开考生文件夹下的源程序文件3.cpp。类People包括姓名和年龄两个字段。函数fun获得年龄比较大的人的姓名,然后输出这个姓名到屏幕。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。(1)完成类的构造函数功能,请在注释1后添加适当的语句。(2)完成构造函数对姓名的赋值,请在注释2后添加适当的语句。(3)定义类的友元函数fun,请在注释3后添加适当的语句。(4)补充函数fun的年龄比较功能,请在注释4后添加适当的语句。注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。试题程序:#include<iostream.h>classPeople{public://********1********{inti;for(i=0;sUserName[i]!=0;i++){m_UserName[i]=sUserName[i];}//********2********m_Old=nOld;}private:charm_UserName[32];intm_Old;//********3********};voidfun(char*s,People&personl,People&person2{//********4********if{for(inti=0;personl.m_UserName[i]!=0;i++){s[i]=personl.m_UserName[i];s[i+1]=0;}}else{for(inti=0;person2.m_UserName[i]!=0;i++){s[i]=person2.m_UserName[i];s[i+1]=0;}}}voidmain{chars[32];Peoplepl("abc",20);Peoplep2("def",30):fun(S,p1,p2);cout<<s<<endl:return;}47.请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程proj3,其中包含了类IntegerSet和主函数main的定义。一个IntegerSet对象就是一个整数的集合,其中包含0个或多个无重复的整数;为了便于进行集合操作,这些整数按升序存放在成员数组elem的前若干单元中。成员函数add的作用是将一个元素添加到集合中(如果集合中不存在该元素),成员函数remove从集合中删除指定的元素(如果集合中存在该元素)。请编写成员函数remove。在main函数中给出了一组测试数据,此时程序的正确输出结果应为:234527283166752345627283156752345619272831667534561927283166753456192728316675要求:补充编制的内容写在“//***********333***********”与“//***********666***********”之间,不得修改程序的其他部分。注意:程序最后将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序中调用。//IntegorSet.h#ifndefINTEGERSET#defineINTEGERSET#include<iostream>usingnamespacestd;constintMAXELEMENTS=100;//集合最多可拥有的元素个数classIntegerSet{intelem[MAXELEMENTS];//用于存放集合元素的数组intcounter;//用于记录集合中元素个数的计数器puhlic:IntegerSet:counter(0){}//创建一个空集合IntegerSet(intdata[],intsize);//利用数组提供的数据创建一个整数集合voidadd(intelement);//添加一个元素到集合中voidremeve(intelement);//删除集合中指定的元素intgetCountconst{returncounter;}//返回集合中元素的个数intgetElement(inti)const{retumelem[i];}//返回集合中指定的元素voidshowconst;};voidWriteToFile(char*);#endif//main.cpp#include”IntegerSet.h”#include<inmanip>IntegerSet::IntegerSet(intdata[],intsize):counter(0){for(inti=0;i<size;i++)add(data[i]);}}voidIntegerSet::add(intelement){intj;//从后往前寻找第一个小于等于element的元素for(j=counter;j>0;j-)if(element>=elem[j一1])break;//如果找到的是等于element的元素,说明要添加的元素已经存在,直接返回if(j>0)if(element==elem[j-1])return;//如果找到的是小于element的元素,j就是要添加的位置//该元素及其后面的元素依次后移,腾出插入位置for(intk=counter;k>j;k一)elem[k]=elem[k一1];elem[j]=element;//将element插入到该位置counter++;//计数器加l}voidIntegerSet::remove(intelement){//***************333***************//***************666***************voidIntegerSet::showconst{for(inti=0;i<getCount;i++)cout<<setw(4)<<getElement(i);cout<<endl:}intmain{intd[]={5,28,2,4,5,3,2,75,27,66,31};IntegerSetS(d,11);S.show;S.add(6);s.show;S.add(19);S.show;S.remove(2);s.show;S.add(4);S.show;writeToFile(””);return0;}六、3.综合应用题(2题)48.使用VC6打开考生文件夹下的工程MyProj3。此工程包含一个源程序文件MyMain3.cpp,其中定义的类并不完整。请按要求完成下列操作,将类的定义补充完整。

①定义类Planet的保护数据成员distance和revolve,它们分别表示行星距太阳的距离和行星的公转周期。其中,distance为double型,revolve为int型。请在注释“//**1**”之后添加适当的语句。

②定义类Earth的构造函数Earth(doubled,intr),并在其中计算地球绕太阳公转的轨道周长。假定:circumference=2*d*3.1416。请在注释“//**2**”之后添加适当的语句。

③定义类Earth的成员show(),用于显示所有信息。包括地球距太阳的距离,地球的公转周期,以及地球绕太阳公转的轨道周长。请在注释“//**3**”之后添加适当的语句。

文件MyMain3.cpp中源程序如下:

//MyMain3.cpp

#include<iostream>

usingnamespacestd;

classPlanet

{

protected:

//**1**

public:

Planet(doubled,intr)

{

distance=d;

revolve=r;

}

};

classEarth:publicPlanet

{

private:

doublecircumference;

public:

//**2**

//**3**

};

intmain()

{

Earthobj(9300000,365);

obj.show;

return0;

}

49.使用VC6打开考生文件夹下的工程test31_3。此工程包含一个test31_3.cpp,其中定义了可以动态分配的字符串类,但该类的定义并不完整。请按要求完成下列操作,将程序补充完整。

(1)定义类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:

//**1**

tstring(char*m)

{

//**2**

strcpy(p,m);

}

voidstrcopy(tstringn);

friendchar*strlink(tstringm,tstringn);

};

voidtstring::strcopy(tstringn)

{

//**3**

char*q;

q=newchar[length];

strcpy(q,tstring::p);

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

tstring::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)<<end1;

}

参考答案

1.A解析:一个非空的数据结构如果满足下列两个条件:(1)有且只有一个根结点;(2)每一个结点最多有一个前件,也最多有一个后件,则称为线性结构。线性链表是线性表的链式存储结构,选项A的说法是正确的。栈与队列是特殊的线性表,它们也是线性结构,选项B的说法是错误的:双向链表是线性表的链式存储结构,其对应的逻辑结构也是线性结构,而不是非线性结构,选项C的说法是错误的;二叉树是非线性结构,而不是线性结构,选项D的说法是错误的。因此,本题的正确答案为A。

2.D

3.B解析:数据库中关系的基本类型包括基本表、视图表和查询表。基本表是关系数据库中实际存在的表,是实际存储数据的逻辑表示;视图表是由基本表或其他视图表导出的表;查询表是指查询结果表或查询中生成的临时表。

4.A解析:B中不该有“-”字符,C为保留字,D中“+”,字符不合法。

5.B

6.BB。【解析】在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的另一端称为栈底。栈顶元素总是最后被插入的元素,从而也是最先能被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。即栈是按照“先进后出”或“后进先出”的原则组织数据的。

7.D

8.D

9.C解析:本题考查的知识点是:函数重载。在C++语言中,允许定义一系列函数名相同,但形参的个数或类型不完全相同函数。这种定义就叫做函数的重载。重载函数对返回值类型不作要求,返回值类型也不参与区分函数的重载形式。故本题应该选择C。

10.C

11.B栈是先进后出的原则组织数据,所以入栈最早的最后出栈,所以选择B。

12.C本题考查公用继承和保护继承对基类成员的访问属性。公用继承中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私确、保护成员不能被类外访问,但是可以被派生类的成员函数访问。Type成为派生类的保护成员,可以被派生类访问,title仍为基类私有,派生类不能直接访问。所以答案为c。

13.A

14.C解析:本题考查的知识点是运算符重载。C++中规定,“=”运算符只能作为成员函数重载,故本题的选项C是错误的。

15.C解析:在类定义时没有定义任何构造函数时,则编译器自动生成一个不带参数的缺省构造函数,其格式如下:

<类名>::<缺省构造函数名>()

按构造函数的规定,缺省构造函数名同类名。缺省构造函数的这种格式也可由程序员定义在类体中。在程序中定义一个对象而没有指明初始化时,则编译器便按缺省构造函数来初始化该对象。用缺省构造函数对对象初始化时,则将对象的所有数据成员都初始化为零或空。

16.C本题主要考查了成员对象。类TWO的数据成员是类ONE的对象one1和one2,main()函数中首先创建类TWO的对象t并提供初始值4,先执行成员对象one1的构造函数体,输出1;再执行成员对象one2的构造函数体,输出2,最后执行类TWO的构造函数体,输出3。因此本题程序运行时的输出结果是123。

17.A解析:外模式也称子模式,它是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,它是由概念模式推导而出来的,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。

18.D解析:C抖语言中析构函数为符号“~”加类名,且析构函数没有返回值和参数,故前不加void关键字。所以正确的形式应该是-MyClass()。

19.C解析:本题考核函数的调用。题中函数声明带有默认参数,那么在C)选项的调用中,将会把字符型实参#赋值给整型形参b,这不符合参数传递规则。

20.C(21)C)【解析】由主函数mam入手,定义了TestClassl\r\n\r\n的对象m,其中参数为7和9。“m.printa();”中TestClassl中printa\r\n\r\n为“c.printb();”,其中c为TestClass2的对象,所以printb为TestClass2\r\n\r\n中的“void\r\nTestClass2::printb()',即输出为“a=7,b=9”。

21.C数据定义语言:负责数据的模式定义与数据的物理存取构建;数据操纵语言:负责数据的操纵,包括查询及增加、删除、修改等操作;数据控制语言:负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。因此本题答案为C)。

22.D解析:本题考查了运算符重载的综合应用。解本题的关键是要弄明白cout<<(x+=y)<<endl;语句是怎么执行的。因为x和y都是Complex类的对象,而Complex类中已经重载了仁运算符,所以表达式x+=y就等价于x.operator+=(y)。该函数将y中的re、\u3000im成员累加到x的对应成员之上,并返回x自身。故表达式(x+=y)返回的值是一个\u3000Complex类对象,其内容为(3,1)。因为<<运算符的结合性是从左至右的,所以现在要计算的表达式是cout<<(x+=y),cout是C++语言中预定义的输出流类ostream的对象,所以<<运算符两边的分量类型正好符合上面<的重载函数,故其等价于函数调用operator<<(cout,(x+=y))。在<<的重载函数中输出结果是(3,1),最后函数返回并输出一个换行符endl,程序结束。故应该选择D。

23.CC。【解析】该题考查了C++模板类和+运算符重载的知识,3+b1时,程序不能将b1转化为整型,所以编译会出错。

24.this

25.描述数据对象及数据对象之间的关系描述数据对象及数据对象之间的关系解析:结构化分析方法中ERD图用以数据建模,描述数据对象及数据对象之间的关系。

26.多态性多态性解析:面向对象系统包含了三个特征--封装性、继承性和多态性,这三个特征可以很好的实现数据抽象,进行行为共享,完成进化求解和描述一个系统的确定行为。

27.类类解析:C++语言面向对象程序设计的基本组成单元是class,面向过程的程序设计的基本组成单元是函数。

28.封装性。封装性。解析:对象具有下列5个基本特点:(1)标识惟一性,(2)分类性,(3)多态性:(4)封装性,(5)模块独立性好。其中,封装性是指从外面看只能看到对象的外部特征,对象的内部特征即处理能力的实行和内部状态,对外是不可见的,对象的内部状态只能由其自身改变。

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

30.Base::fun();。Base::fun();。解析:本题考查的是虚基类的使用。使用符号“::”可以用来限定要访问的成员所在类的名称。在派生类中对基类成员的访问应读是唯一的,多继承情况下就需要通过使用对象作用域分辨来解决这种对基类成员访问的二义性问题;

31.自顶而下自顶而下

32.66解析:本题考察运算优先级问题,从右向左,先括号后乘除,随后加减,这是基本的运算规则。

33.变换型变换型解析:典型的数据流类型有两种:变换型和事务型。变换型:指信息沿输入通路进入系统,同时由外部形式变换为内部形式,进入系统的信息通过变换中心。经加工处理以后冉沿输出通路变换成外部形式离开软件系统。事务型:在很多软件应用中,存在某种作业数据流,它可以引发个或多个处理,这些处理能够完成该作业要求的功能,这种数据流就叫做事务。

34.constconst解析:coast在实际编程中用的比较多,在防止无意中对变量或对象的修改,往往用\u3000const进行限定,从而可以借助C++的强大类型检查功能来防止在程序中带人错误。

35.n=b36.(1)应改为“ein.getline(str,120,?);”。

(2)应改为“while(str[i])”。

(3)应改为“if(str[i]>=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)”。37.(1)应改为“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”。

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

\n(2)应改为“while(str[i])”。

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

\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)”。

39.(1)应改为“usingnamespacestd;”。(2)应改为“outl.open("1.txt",ios::binary|ios::app);”。(3)应改为“out1.put(s[i]);”。【解析】本题第1处的“usingstd;”是在程序中引入标准命名空间std,对于C++中引入标准命名空间的格式,缺少namespace,所以第1处的语句修改为“usingnamespacestd;”。第2处,调用成员函数open中,输入、输出方式是在ios类中定义的,所以“out1.open("1.txt",binary|app);”语句缺少类ios,即第2处的语句修改为“out1.open("1.txt",ios::binary|ios::app);”。第3个标识应该用流成员函数put输出字符,所以第3处的语句修改为“out1.put(s[i]);”。40.(1)应改为“TCobjl(1);”。(2)应改为“0bj1.SetNumber(10);”。(3)应改为“0bj2.SelNumber(100);”。【解析】本题第1处的“TCobjl;”语句是声明TC类的对象0bj1,根据TC类构造函数的定义TC(inti),存在整型参数,并且题目要求第一个输出结果两1,所以补全参数1,即第1处的“TCobjl(1);”。第2处处的“objl.number=10;”应该是调用成员函数SetNumber赋值。在C++中成员函数的使用形式应该是:对象名.成员函数,所以修改为“obj1.SetNumber(10);”。类是对象的抽象,而对象是类的具体实例。第3处“TC.SetNumber(100);”语句中的TC为类,并不是对象,这里应该使用定义的对象,即obj2,所以将语句修改为“obj2.SetNumber(100);”。41.(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;”。

42.(1)应改为“TCobjl(1);”。

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

\n(3)应改为“0bj2.SelNumber(100);”。

\n【解析】本题第1处的“TCobjl;”语句是声明TC类的对象0bj1,根据TC类构造函数的定义TC(inti),存在整型参数,并且题目要求第一个输出结果两1,所以补全参数1,即第1处的“TCobjl(1);”。第2处处的“objl.number=10;”应该是调用成员函数SetNumber赋值。在C++中成员函数的使用形式应该是:对象名.成员函数,所以修改为“obj1.SetNumber(10);”。类是对象的抽象,而对象是类的具体实例。第3处“TC.SetNumber(100);”语句中的TC为类,并不是对象,这里应该使用定义的对象,即obj2,所以将语句修改为“obj2.SetNumber(100);”。

43.(1)应改为“usingnamespacestd;”。

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

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

\n【解析】本题第1处的“usingstd;”是在程序中引入标准命名空间std,对于C++中引入标准命名空间的格式,缺少namespace,所以第1处的语句修改为“usingnamespacestd;”。第2处,调用成员函数open中,输入、输出方式是在ios类中定义的,所以“out1.open('1.txt',binary|app);”语句缺少类ios,即第2处的语句修改为“out1.open('1.txt',ios::binary|ios::app);”。第3个标识应该用流成员函数put输出字符,所以第3处的语句修改为“out1.put(s[i]);”。

44.(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处的语句“TC::TC”可知,显然这里是在类外实现析构函数,析构函数是一个特殊的函数,它的名称和类名相同,并在前面加“~”字符,用采与构造函数加以区别,因此第3处的语句应改为“TC::~TC”。

45.(1)“voidmain”。(2)“intm=0144;”。(3)“intn=OX25;”或“intn===0x25;”。【解析】本题主要考查了主函数定义及幂同进制之间的转换,包括十进制到八进制

温馨提示

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

评论

0/150

提交评论