还剩43页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
2021年安徽省安庆市全国计算机等级考试C++语言程序设计模拟考试(含答案)学校:班级:姓名:考号:
一、.选择题(题)110是以一种完全通用的方法来设计函数或类而不必预先说明将被使用
1.()的每个对象的类型模板类对象函数A.B.C.D..下列关于函数的叙述中,正确的是2C++.每个函数至少要具有一个参数每个函数都必须返回一个值.函A B.C数在被调用之前必须先声明函数不能自己调用自己D..为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能3把该成员的访问权限定义为()A.public B.protected C.private D.static下列关于二定义性的说法错误的是
4.o.派生类中的成员与基类的成员同名,在调用时可能存在二义性A派生类的二个基类是有同名成员,调用这一成员时可能产生有二义性B.派生类的二个基类是从同一共同基类派生出来,调用基类的成员时可能C存在二义性使用成员限定可解决二义性问题D.publicint n;baseint x{n=x;}virtual void setint m{n=m;coutnf;class deriveApublic basepublicderiveAint xbasex{}void setintm{n+=m;coutn;class deriveBpublic basepublicderiveB int xbasex{voidsetintm{n+=m;coutn1f;;int mainderiveA dll;deriveB.d23;base*pbase;pbase=dl;phase-setl;;pbase=d2;phase-set2;return0}[]是实现语言编译时多态性的机制,【】是实现语言运行
33.C++C++时多态性的机制在最坏情况下,冒泡排序的时间复杂度为
34.o在面向对象方法中,类之间共享属性和方法的机制称为
35.
四、程序改错题题
10.使用打开考生文件夹下的源程序文件该程序36VC++
6.
01.cpp,运行时有错请改正程序中的错误,使程序输出的结果为1003732注意错误的语句在/的下面,修改该语句即/******error******可试题程序#includeiostream.h voidmainerrorvl^1^*J*1KJerrorK1K1*KL*KJ**1**4*intm=0142intn=0X27intq=32;K|f«J*J*1*1rj*cout mendl;cout nendl;cout qendl;return;.使用打开考生文件夹下的源程序文件但该程37VC++
6.
1.cpp,序运行有问题,请改正函数中的错误,使该程序的输出结果正main确程序输出88注意错误的语句在/的下面修改该语句********em r********/即可,其他的语句不能修改试题程序#includeiostream.h classCOpublic/777KI7,不不不不不不不不不不不不不不不不en0rstaticintn=OCO(n++)〜CO(n—))不不不不不不不不不不不不不不不不en*orintCOn;voidmain(;COobjCOobj2
[7];CO*C=NULL c=obj小不不不不小不不不不不不不不不不en*or;eout«C.n«endlcout«C0n«endl;.使用打开考生文件夹下的源程序文件该程序运38VC++
6.
01.cpp,行时有错误,请改正程序中的错误,使得程序输出9,8,7,6,5注意错误的语句在/的下面,修改该语句即********error********/可其他的语句不能修改试题程序#includeiostream.h classTC7个个个不不不不个个个不不不小个不TCinti m1=1voidprint cout«—m_i«,publiczintm i;intmain个个不个个个个个个个个个个个个个inti;TC0410;whilei5I********enrOr********/i++
04.print;cout«endl;returnO;.使用打开考生文件夹下的源程序文件该程序运39VC++
6.
01.cpp,行有问题,请改正函数中的错误,使程序的输出结果为mainnumber=1number=10number=100注意不要改动函数,不能增加或删除行也不能更改程序的结main构,错误的语句在/的下面/******eirc r******试题程序#includeiostream.hclassTC publicTCinti number=i;voidSetNumberintmnumber=m;intGetNumberconst returnnumber;voidPrintconst cout«nnumber=n«number«endl;private;intnumbervoidmainW、q、q.q.q.error;TCobjl;objl.Print;TCobj23si*vl*个个个个个个个个个个个个个个个个^^rror;objl.number=10I!********ej*j*or*******;TC.SetNumberlOO;objl.Print;obj
2.Print.使用打开考生文件夹下的源程序文件该程序运40VC++
6.
01.cpp,行时有错,请改正其中的错误,使程序正常运行,输出的结果为Constructor,i=0,注意错误的语句在/I******试的下面,修改该语句即可error******题程序#includeiostream.h classTCinti;publicTC;voiddisplay;〜TC;//******error******TCTC cout«nConstructorn«n”•,/i=0;//******eifor******TCdisplaytout«i=«i«endl//******eiror******TCTC voidmain;TCa;a.display}.使用打开考生文件夹下的源程序文件该程序41VC++
6.
01.cpp,运行有问题,请改正函数中的错误,使程序的输出结果为mainnumber=1number=10number=100注意不要改动函数,不能增加或删除行也不能更改程序的结main构,错误的语句在/的下面/******errc r******试题程序#includeiostream.hclassTC public TCintinumber=i;voidSetNumberintm number=m;intGetNumberconst returnnumber;voidPrintconst cout«nnumber=n«number«endl;privateintnumber;};voidmain个个个个个个个个个个个个个个个个^^norTCobjl;objl.Print;TCobj23;7,7,个个个个个个个个个个个个个个个个objl.number=10;!1********error*******TC.SetNumberlOO;objl.Print;obj
2.Print;.使用打开考生文件夹下的源程序文件该程序42VC++
6.
01.cpp,运行时有错,请改正其中的错误,使程序正常运行,输出的结果为有以下程序
5.#includeiostreamusing namespace std;int flint x,int y{return xyx:y;}int f2intx,int y{return xy y:x;}int main{int a=4,b=3,c=5,d,e,f;d=fla,b;d=fld,c;e=f2a,b;e=f2e,c;f=a+b+c-d-e;coutdnen,nfendl;}执行后的输出结果是return0;A.3,4,5B.5,3,4C.5,4,3D.3,5,4对于下面定义的类在函数中将对象成员的值修改为
6.MyClass,f n的语句应该是50class MyClasspublic:MyClassint x{n=x;}void SetNumint nl{n=nl;}private:int n;int f二MyClass*ptr new MyClass45;A.MyClass50B.SetNum50C.ptr-SetNum50D.ptr-n=
50.假设线性表的长度为则在最坏情况下,冒泡排序需要的比较次数7n,为A.log2nB.n2C.On15D.nn-l/2对于重载的运算符,它是一个
8.用于输入的友元函数用于输入的成员函数用于输出的友元函A.B.C.Destructor注意错误的语句在/的下面,修改该语句即/******error******可试题程序#includeiostream.hclassTCinti;publicTC;voiddisplay;〜TC;};//TCTC/不不不不不不不小不不不不errorcout«nConstructorn«n,n;不不不不不enrori=0;TCdisplay tout«n―i卜=-In,«i«n,n«endl;不不不不不*J enorKLK!K!K!KL**JTCTC不COUI«nDestructorn«endlvoidmain TCa;a.display;.使用打开考生文件夹下的源程序文件该程序运行时43VC++
6.
01.cpp,有错,请改正其中的错误,使程序正常运行,并使程序输出的结果为sizeofSl=5sizeofs2=10sizeofs3=l注意不要改动函数,不能增加或删除行,也不能更改程序的结构,main错误的语句在/的下面/******error******⑴不能删除语句assert⑵只能修改后面的数字提示函数如果为假,则会产生一个中断异常assert试题程序#includeiostream.h#includeassert.h voidmainchartsl=abc///不下不不不不不不不不不不不-「不不errorassertsizeofsl==3:cout«nsizeofsl=5n«endl;chars2
[10]=nabn//777777777777777,/不不不不不不不不不不小不不不不不error;assertsizeofs2==2cout«,fsizeofs2=10n«endl;chars3=23/不不不不不不不不•不不不不不不不不eiroi;assertsizeofs3==4cout«nsizeofs3=ln«endl;;return.使用打开考生文件夹下的源程序文件本程序要求44VC++
6.
01.cpp输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输入多行,当输入字符“”时,默认字符输入结束,最后把结果输出到屏幕中注意不要改动函数,不能增加或删除行,也不能更改程序的结构,main错误的语句在/的下面/******errc r******试题程序#includeiostream.hvoidmain inti=O;charstr
[120];cout«nEnterastringendwith.n«endl;///不下不不不不下不不不不不个不不不errorcin.getlinestr,120;//77777777777777”7”/不不不小个不不不不小不个不小不不errorwhilestr/不不不小不不不不不不小不不不不不errorifstr[i]=astr[i]=str[i]-a+A;i++;cout«str«endl;return;.使用打开考生文件夹下的源程序文件该程序运行时45VC++
6.
01.cpp,有错误,请改正错误,使程序正常运行,并且要求最后一个必须抛catch出执行的任何异常程序异常,输出信息为error0ERROR注意不要改动函数,不能增加或删除行,也不能更改程序的结main构,错误的语句在/的下面/******eirc r******试题程序:#includeiostream.h intmainthrownerrorn;}//********en\r********catchcharscout«s«endl;try throwint0;//********匕1Tor********catch cout«i«endl;try throwO;thrownerrorn;//********error********catchcout«nERRORn«endl;returnO;
五、综合应用题(题)
2.请使用或使用【答题】菜单打开考生文件夹下的工程46VC6proj3proj3,其中声明的类,是一个用于表示数据表的类的重载运DataList DataList算符函数其功能是求当前数据表与另一个相同长度的数据表之Operator+,和;即它返回一个数据表,其每个元素等于相应两个数据表对应元素之和请编写这个函数程序的正确输出应该是两个数据表perator+两个数据表之和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#inCludeiostream usingnamespaCe std;{〃数据表类ClaSS DataListintfen;double*d;public;;DataListint len,double data[]=NULL DataListDataListdata;}int lengthConst{return lendoublegetElementint iConsttreturn d[i];};〃两个数据表求和DataList operator+Const DataListlistConst void//显示数据表showConst;;void writeToFileChar$,Const DataList;//main.Cpp#inClude,,DataList.hDataListDataListint len,double data[]lenien{d=newdoublet len];forint i=0;ilen;i++九d i=data=NULLO.0data[i];}二DataListDataListDataListdatalendata.len{d newdoubletlen];forint i=0;ilen;i++d[i]=data.d[i];{〃两个数据DataList DataList0perator+Con8t DataListlist,Const表求和double*dd=new doubletlist,lensth];〃********333********〃********666********{〃显示return DataListlist.1ength,dd;}void DataListshowConst数据表frinto i=0;ilen-l;i++eout«d[i]«,,,”;;Cout«d[l en-l]«endlint main{double sl[]={l,2,3,4,5,6};double s2[]={3,4,5,6,7,8};//定义两个数据表对象两个数据表”DataList listl6,si,list26,s2;eout«”《endl两个数据表之listl.showlist
2.show;eoutwendlw”和,,«endllistl+list
2.show;writeToFile,,,,listl+list2;return
0.请使用或使用【答题】菜单打开考生目录下的工程文件47VC6proj3proj3,此工程中包含一个源程序文件补充编制程序其功proj
3.cpp,C++proj
3.cpp,能是读取文本文件中的全部内容,将文本存放到类的对象in.dat doc中然后将中的字符序列反转,并输出到文件中myDoc myDocut.dat文件的长度不大于字节in.dat1000要求:补充编制的内容写在“〃**********”与〃**********”两行之间实现将中的字符序列反转,并将反转后的序列在屏幕上输出不得修myDoc改程序的其他部分注意程序最后已将结果输出到文件中,输出函数Out.dat已经给出并且调用writeToFile//proj
3.cpp#includeiostream#includefstream#includecattingusing namespace std;class docprivate〃文本字符串首地址char*sir;〃文本字符个数int length;public〃构造函数,读取文件内容,用于初始化新对象,是文件名字符filename串首地址;docchar*filename〃将字符序列反转void reverse;一doc;;void writeToFilecharfilename};docdocchar filenameifstreammyFilefilename;int len=100L tmp;atr=new char[len];length=O;whiletrap=myFile.get!=EOF str[l ength++]=trap;str[length]=\0;myFile.close;void docreverse//将数组中的个字符中的第一个字符与最后一个字符交换,第atr length二个字符与倒数第二个〃字符交换右,,7,、,,7,7,7,、!7”7,7,7,,,,//K17777K*KI7,//个个个个个个个个个个个个个个个个个个个个个个个个个个hhhdoc〜doe delete[]str;void docwriteToFilechar*filenameOfstream outFilefilename;数用于输出的成员函数D.是给对象取一个别名,它引入了对象的同义词
9..指针引用故举结构A B.C.D.若有以下程序
10.#includeiostreamusing namespacestd;class A;,”;}};{privateinta publicAinti{a=i;voiddispQ{couta;;class B{privateintb publicBint j{b=j}void disp{coutb A.10,10,10B.10,12,14C.8,10,12D.8,12,10
二、单选题题
13.建立模型的工作,属于软件生命周期中的11E-R需求分析阶段设计阶段编码阶段测试阶段A.A.B.C.D..面向对象的没计方法与传统的面向过程的方法有本质不同,它的基本12原理是.模拟现实世界中不同事物之间的联系A强调模拟现实世界中的算法而不强调概念B.使用现实世界的概念抽象地思考问题从而自然地解决问题C..鼓励开发者在软件开发的绝大部分中都用实际领域的概念去思考D.下列有关继承和派生的叙述中,正确的是13ooutFile«str;outFile.close;void maindocmyDocin.dat;myDoc.reveme;myDoc.writeToFile^out.dat;
六、.综合应用题题
32.使用打开考生文件夹下的工程此工程包含一个48VC6test32_3o其中定义了复数类但该类的定义并不完整请按要test32_
3.cpp,complex,求完成下列操作,将程序补充完整定义复数类的私有数据成员和用来分别表示复数1complex realimage,的实部和虚部,它们都是型的数据请在注释“〃**”之后添加double1**适当的语句添加复数类的带一个参数的构造函数,分别将和赋2complex realimage值为参数的值和请在注释“〃**”之后添加适当的语句r
0.0,2**⑶完成复数类的运算符重载成员函数的定义,两个复数相加是将complex复数的实部和虚部分别进行相加,请在注释“〃**”之后添加适当的3**语句完成复数类的友元函数的4complex isequalcomplex*cl,complex*c2定义,如果复数与相等即与的实部和虚部分别相等,则返Cl c2cl c2回否则返回请在注释“〃**”之后添加适当的语句1,04**程序输出结果如下36+0i=36+0i注意除在指定位置添加语句之外,请不要改动程序中的其他内容源程序文件清单如下test32_
3.cpp#includeiostream.hclass complexpublic:complex{real=image=O.O;complexdouble rcomplex operator+constcomplex c;friend bool isequalcomplex*cl,complex*c2void display;complex complex::operator+const complexc temp.real=real+c.real;temp.image=image+c.image;return temp;boolisequalcomplex*cl,complex*c2//**4**return1;elsereturn0;}void complex::displaycoutreal;if image=0coutimagei;else ifimage0coutimagenin;void main complex cl,c
236.0;cl=cl+c2;cl.displayO;if isequalcl,c2coutelse coatnn;c
2.display;coutendl;.使用打开考生文件夹下的工程此工程包含一个源程序文49VC6test9_3,件其中定义了类与类,类可对半径为test9_
3.cpp,Circle MoneyCircle r的圆进行周长与面积的计算,而类用于计算一圆形游泳池的造价Money游泳池四周有原形过道,过道外围上栅栏,过道宽度为米,根据键入3的游泳池半径,每米栅栏价格及每平方米过道价格,即可计算出游泳池的造价请按要求完成下列操作,将程序补充完整⑴定义符号常量值为与值为分别用于表示PI
3.14159WIDTH
3.00f,圆周率与过道的固定宽度请在注释“〃**”之后添加适当的语句1**2定义类默认构造函数,把私有成员初始化为参数的值请Circle radiusr在注释后添加适当的语句“〃**2**”⑶完成类默认构造函数的定义,把私有成员每米栅栏Money FencePrice的价格、每平方米过道的价格初始化为参数的值请ConcretePrice f,c在注释“〃**”之后添加适当的语句3**完成类成员函数4Money floatMoney::TotalMoneynoat fencelen,float的定义根据参数栅栏的长度和过道的面积,conarea fencelenconarea返回栅栏与过道的总造价请在注释“〃**”之后添加适当的语句注4**意除在指定位置添加语句之外,请不要改动程序中的其他内容源程序文件清单如下test9_
3.cpp#includeiostream.h〃**]**class Circleprivate:float radius;public:float Circumference{return2*PI*radius;float Area{return PI*radius*radius;;class Moneyprivate:float FencePrice;float ConcretePrice;public:Moneyfloat f,float c;float TotalMoneyfloat fencelen,float conarea;;Money::Moneyfloatf,float cfloat Money::TotalMoneyfloat fencelen,floatconareavoid mainfloat radius,fence,concrete;cout.setf10s::fixed;cout.setfios::showpoint;cout.precision2;coutEnter theradius ofthe pool:;cinradius;coutnEnter theFencePrice:cinfence;coutEnter theConcretePrice:H;cinconcrete;Circle Poolradius;Circle PoolRimradius+WIDTH;Money monfence,concrete;float totalmoney=mon.TotalMoneyPoolRim.CircumferencePoolRim.Area-P00LArea;coutThe totalmoney isRMBtotalmoneyendl;参考答案解析此题考查的是模板的特点模板是以一种完全通用的方法来设LA计函数或类而不必预先说明将被使用的每个对象的类型解析本题考核函数的声明和调用定义一个函数就是为了以后的调
2.C用,但如果函数定义在后面而调用在前,就会产生编译错误为此,必须将函数定义在前或在调用前进行“函数的说明“函数说明消除了函数定义的位置影响选项的描述是正确的函数可以没有参数,可以没有C返回值递归函数就是自己调用自己所以、和选项的描述都是A BD错误的解析本题考查点为类成员的访问权限,关键字修饰的类成员
3.A public可以被类的对象通过成员操作符“.直接访问,和则不protected private能,而不能单独修饰类的成员static
4.B解析本题考核函数的调用和条件运算符解此题前,先来复习一
5.B下条件运算符的运算规则对于表达式〈表达式〉〈表达式〈表达式〉,它的运算方式123为先计算表达式的值,如果其值为真则表达式的值就是整个1true,2表达式的最终结果,否则表达式的值就是整个表达式的值3在了解条件运算符的运算规则后,来看函数门和根据条件运算符f2o的运算规则,可得到函数的功能是返回两数中的较大信函数3的功fl能足返回两数中的较小值再分析主函数,由于经过第次a=4,b=3,d1赋值后得到值为即的4,d=4d第次赋值表达式为由于此时、故经过两次赋值后2“d=fld,C”,d=4c=5,得到同样经过两次赋值后可得再把、、、、d=5e e=3a=4b=3c=5d=5代入表达式最后得到e=3f=a+b+c-d-e,f=
46.C解析假设线性表的长度为则在最坏情况下,冒泡排序要经过出
7.D n,2遍的从前往后的扫描和遍的从后往前的扫描,需要的比较次数为n/2nn-l/2o解析语言中和〉〉运算符都是友元函数重载,分别用于
8.A C++输出和输入注意运算符[]只能作为成员函数重载
9.B解析本题考查派生类构造函数的使用派生类具有多重继承关
10.D C系,所以在派生类的构造函数中应该包含基类和的成员初始化列C A B表解析建立模型是数据库概念设计的重要内容,而概念设计是1LB E-R设计阶段的组成部分
12.C【解析】面向对象设计通过对人类认识客观世界及事物发展过程的抽Co象,建立了规范化的分析设计方法,由此带来软件模块化特色突出、可读性好、易维护等一系列优点
13.D私有继承方式为基类的公用成员和保护成员在派生类中成了私有成员,其私有成员仍为基类私有,但派生类对象可以访问基类的保护成员,所以基类对象不能赋值给派生类对象抽象类是指含有纯虚拟函数的类,所以选项正确D解析人工管理阶段是在计算机出现的初期,主要用于科学计算,没
14.C有大容量的存储设备处理方式只能是批处理,数据不共享,不同程序问不能交换数据文件系统阶段把有关的数据组织成一种文件,这种数据文件可以脱离程序而独立存在,由一个专门的文件管理系统实施统一管理;但是,数据文件仍高度依赖于其对应的程序,不能被多个程序所通用数据库系统阶段对所有的数据实行统一规划管理,形成了一个数据中心,构成了一个数据仓库;数据库中的数据能够满足所有用户的不同要求,供不同用户共享;数据共享性显著增强
15.D解析时间复杂度是指一个算法执行时间的相对度量;空间复杂度是指算法在运行过程中临时占用所需存储空间大小的度量人们都希望选择一个既省存储空间、又省执行时间的算法然而,有时为了加快算法的运行速度,不得不增加空间开销;有时为了能有效地存储算法和数据,又不得不牺牲运行时间时间和空间的效率往往是一对矛盾,很难做到两全但是,这不适用于所有的情况,也就是说时间复杂度和空间复杂度之间虽然经常矛盾,但是二者不存在必然的联系因此,选项、、AB的说法都是错误的故本题的正确答案是C D
16.B本题考查模板函数的应用,表达式和足将和intl.1int
4.
21.1强制转换为整型
4.
217.A【解析】程序定义了字符数组和字符型指针变量并且使指向数Ao S P,P组的首地址,执行语句后,*表示数组中元素的个数和S P=S Ps[o];S P所指字符串长度不相等,数组中包括字符串结束标志“\而所指字s0”,P符串不包括数组中的内容和指针变量中的内容不相同,数组中“\0”,s P存放的是字符串,而指针变量存放的是数组的首地址P
18.D本题考查标识符的命名规则,规定如下
①所有标识符可以由字母、C++数字和下画线组成,且必须以字母或画线开头;的关键字不能作F
②C++为标识符;
③大、小写字母表示不同意义,即代表不同的标识符,如mun和选项是的关键字,选项不能以数字开头,选项“一”MuO AC++B C不能用于组成标识符
19.D解析本题考查的知识点是;语句块和函数语句的分支和循环语句的if循环体可以是一条语句也可以是一个语句块,所以不是必须用一对大括号括起来;语句中的标号语句可以是一系列语句,也可以包switch case含语句块,也不是必须用一对大括号括起来函数的函数体必须使用一对大括号括起来故本题应该选择D解析在关系模型数据库中,基本结构是二维表,这种二维表称为关
20.C系关系的列称为属性,一个具有个属性的关系称为元关系注意N N各种关系查询语言与过程性语言和非过程性语言的关系,过程性语言的特点
21.A解析语句是重新定义了一个变量并赋值为因此whileint i=0i,0,while循环条件为假,不执行循环体,所以不会输出解析编译时的多态性是通过函数重载和模板体现的,运行时的多
22.C态性是通过虚函数体现的解析友元函数的定义既可以在类内部进行,也可以在类外部进行
23.C它提高了程序的运行效率,但破坏了类的封装性和隐藏性,使得类的非成员函数可以访问类的私有成员
24.
2025.
2026.6解析本题考查的知识点是循环的嵌套题目中外循环会循环6for次,每次循环变量的值分别为、、而内循环会循环次,故3i123o i次执行内循环,循环的次数分别为、、次那么,总共被增3123sum了次故最终的值为16sum
60.数据库管理系统27数据库管理系统)(DBMS()()解析本题考查的是考生
28.ptr-SetNum50;ptr-SetNum50;使用对象指针调用成员函数的能力,指针调用成员函数应该使用符号“-
29.ws.物理独立性物理独立性解析数据独立性分为逻辑独立性与物理独立30性当数据的存储结构改变时,其逻辑结构可以不变,因此,基于逻辑结构的应用程序不必修改,称为物理独立性解析考核引用的使用题中整型变量定义为的引用,
31.600600ref num所以对的作用等同于对的作用,所以加上后,的值ref numref10num也就变成了600o解析本题考核虚函数的定义和调用在中,一个基类指针
32.2525C++(或引用)可以用来指向它的派生类对象,而且通过这样的指针(或引用)调用虚函数时,被调用的是该指针(或引用)实际所指向的对象类的那如果一个派生类公有继承其基类,则该派生类对象可以访问基类的保护A.成员.派生类的成员函数可以访问基类的所有成员B.基类对象可以赋值给派生类对象C如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类D..在数据管理技术发展的个阶段中,数据共享最好的是()143人工管理阶段文件系统阶段数据库系统阶段个阶段相同A.B.C.D.
3.下列叙述中正确的是()15一个算法的空间复杂度大,则其时间复杂度也必定大A.一个算法的空间复杂度大,则其时间复杂度必定小B.一个算法的时间复杂度大,则其空间复杂度必定小C.上述三种说法都不对D..下列程序的运行结果为()16#includeiostream.h templateclassTT classFF{TT al,a2,a3;public()FF TT bl,TTb2,TTb3{al=bl;a2=b2;a3=b3;}TT Sum{returnal+a2+a3;};)void main个重定义版本题中基类成员函数被定义成虚函数,而且其派生类set和都有函数的重定义版本,所以通过指针的两deriveA deriveBset phase次调用分别调用的是派生类和中定义的版本,即输出deriveA deriveB
250.静态联编或静态绑定动态联编或动态绑定静态联编或静态绑定动33\r\n态联编或动态绑定解析语言编译时多态性的机制是静态绑定,实现C++语言运行时多态性的机制是动态绑定C++解析冒泡排序法是通过相邻数据元素的交换逐步将线
34.nn-l/2nn-l/2性表变成有序假设线性表的长度为则在最坏的情况下,冒泡排序需n,要经过遍的从前往后的扫描和遍的从后往前的扫描,需要的比较n/2n/2次数为nn-l/2o.继承继承解析在面向对象的程序设计方法中,某些属性和方法是可35以共享的,由子类从父类中继承而来,这样提高了软件的可重用性
36.lttvoidmain,,o2“intm=0144;”或3“intn=OX25;“intn===0x25;【解析】本题主要考查了主函数定义及幕同进制之间的转换,包括十进制到八进制,十进制到十六进制主函数定义的定义形式为函数“main”,名之后必须是一对括号,因此第处应改为输出默认是1“voidmain”cout以十进制方式输出的,根据题目要求输出的结果可发现变量的初值不正确,十进制的对应八进制的卡进制的100144,37对应十六进制的因此和应分另改成”25,23IJ“intm=0144;”,“intn=0x25;或“intn=025;应改为
37.1“staticintn=O staticintn;”应改为2“intC0n;“intCOn=0;3t4cout«c.n«endl;应改为coutv〈c-〉nendl;【解析】本题要在屏幕上输出两个字符,首先要静态变量初始化,第处1应改为第处要给赋值,第处输出时引用的对象,“staticintn;,2n3c应改为cout«c-nendl;应添力二
38.1Tpublic应改为;\n2“inti”inti10「应改为;W⑶“i++“i--【解析】本题主要考查的是成员的访问属性成员的访问属性有公有、保\n护和私有种,而默认的访问属性为私有,只有公有成员才能通过类的3对象被访问故应在构造函数前添加:,否则该类无法被实例化“public变量的初始化可以通过“=”号,也可以和初始化对象一样添加构造参数,题目已要求使用后者本题要求输出个数,的循环变量每次减5while i1,在时循环,故初始化应为若循环中每次增则循环永远不会5i10i1,退出应改为;
39.⑴TCobjll应改为;\n2“Objl.SetNumberlO应改为;\n3“0bj
2.SelNumberlOO【解析】本题第处的;”语句是声明类的对象根据\n1“TCobjl TCObj l,类构造函数的定义存在整型参数,并且题目要求第一个输出TC TCinti,结果两所以补全参数即第处的;第处处的1,1,1“TCobjll2“objl.;”应该是调用成员函数赋值在+中成员函number=10SetNumber C+数的使用形式应该是对象名.成员函数,所以修改为;“objl.SetNumberlO类是对象的抽象,而对象是类的具体实例第处3“TC.;”语句中的为类,并不是对象,这里应该使用定SetNumberlOO TC义的对象,即切所以将语句修改为;2,“obj
2.SetNumberlOO应改为
40.1“TCTC”应改为\n2voidTCdisplay”应改为\n3“TC::~TC”【解析】在类的外部定义成员函数时,必须在成员函数前面加上类名和\n作用域运算符”作用域运算符用采表示某个成员属于哪个类,使用格式为“类名〈成员函数〉参数函数,因此第处应改为1“TC默认构造函数没有参数由第处」后的语句看,这是TC”,2“TC display”在类外实现函数,因此也有作用域运算符使用错误问题,函数TC display返回值为因此第处的语句应改为由第处的语void,2“voidTC::display3句叮小可知,显然这里是在类外实现析构函数,析构函数是一个3T特殊的函数,它的名称和类名相同,并在前面加“”字符,用采与构造〜函数加以区别,因此第处的语句应改为3“TC~TC”应改为叮”
41.120511;应改为”2“Objl.SetNumberlO;应改为3“0bj
2.SelNumberlOO;【解析】本题第处的”语句是声明类的对象根据1“TCobjl;TC Objl,TC类构造函数的定义存在整型参数,并且题目要求第一个输出结果TCinti,两所以补全参数即第处的第处处的”1,1,1“TCobjll;2“objl.number=10;应该是调用成员函数赋值在+中成员函数的使用形式应该SetNumber C+是对象名.成员函数,所以修改为类是对象的抽“objl.SetNumberlO;象,而对象是类的具体实例第处”语句中的3“TC.SetNumberlOO;为类,并不是对象,这里应该使用定义的对象,即所以将语句TC bj2,修改为“obj
2.SetNumberlOO;应改为
42.1“TCTC”应改为2voidTCdisplay”⑶应改为“TC〜TC”【解析】在类的外部定义成员函数时,必须在成员函数前面加上类名和作用域运算符“”,作用域运算符用采表示某个成员属于哪个类,使用格式为“类名<成员函数〉参数函数,因此第处应改为1默认构造函数没有参数由第处后的语“TCTC”,2“TCdisplay”句看,这是在类外实现函数,因此也有作用域运算符使用错误问题,TC函数返回值为因此第处的语句应改为display void,2“voidTCdisplay”由第处的语句可知,显然这里是在类外实现析构函数,析3“TCTC”构函数是一个特殊的函数,它的名称和类名相同,并在前面加“”字符,〜用采与构造函数加以区别,因此第处的语句应改为3“TC〜TC”应改为;
43.1assertsizeofsl==4应改为;\n⑵assertsizeofs2==lO⑶应改为尸;”\n assertsizeofs3=1【解析】函数如果为假,则会产生一个中断异常所以要让它正常\n assert执行输出结果,那么函数只有为真,才不会产生中断异常assertuassertsizeofs1==3;”语句中“sizeofsl尸=3”为假,这会使程序产生异常,不能正常执行因为的值为但是它还有一个尾符,它的长度strl abc,应该是而不是所以在第处修改为尸说明,4,3,1“assertsizeofsl=4str2
[10]的空间为在第处修改为尸str210,2“assertsizeofs2=10charstr3=23;语句说明23是字符,所占存储空间为1,所以修改为uassertsizeofs3==l;应改为
44.1“ein.getlinestr,120,;应改为2whilestr[i]°3应改为“ifstr[i]=a str[i]=2,,【解析】本题中要求以输入字符“”为结束符,用于字符输入的流成员函数函数读入一行字符,格式为字符数组,字符个数,getline“cin.getline终止标志字符厂,所以第处改为1“cin.getlinestr,;第处的语句应该是判断字符串中的每一个字符120,2“whilestr”str是否为结束符,若不是结束符,在循环中判断每一个字符是否为小写,若为小写,则转换所以应该修改为第处的“whilestr[i]°3“ifstr[i]=a”语句是判断字符用是否为小写字符,而现有的语句只是判断字符是否str大于a,但是小写字符应该是a到2,所以修改为uifstr[i]=a str[i]=z,,o应改为
45.1catchchar*s‘应改为2catehinti”应改为”3catch…【解析】本题中第个标识前的异常抛出语句为其中1“throw,error”;”,的类型为字符串所以对应的异常捕捉语句中应该符合这个类型,catch而程序中给出的语句是字符型的,所以第处的语句修改为“catchchars”1catchchar*S”第2个标识前的异常抛出语句为t4throwint0;,其中的类型为对应的异常捕捉语句中应该符合这个类型,所以补充int catch子句中的类型,否则如果找不到匹配的块,系统就会调用一个catch catch系统函数,使程序终止运行即第处的语句修改为如果2“catchinti”在子句中没有指定异常信息的类型,那么就用删节号“…”表示它catch可以捕捉任何类型的异常信息,即修改为”“catch…〃遍历对象中的数组和数组,把对应的值
46.fOTint i=0;ilen;++i listd相加后放到数组中dddd[i]=d[i]+list.d[i];〃定义两个整数临时变量
47.intj,J;1i.j.fori=0,j=length—*1;ij;i++,j-chartemp=str[i];〃把用中的值保存在临时变量str tempstr[i]=str[j];〃把值赋给实现字符前后替换Str[j]Str[i],str[j]=temp;〃把保存在临时变量中的值再赋值给temp Str|j]【考点分析】本题主要考查的是类、构造函数、成员函数和析构函数doc【解题思路】题目要求将中的字符序列反转,在函数中我们看到myDoc mainmyDoc是类,根据类的定义可以知道它是把读取文件的字符串存到doc docstr动态数组中函数实现将数组中的个字符中的第一个字reverse strlength符与最后一个字符交换,第二个字符与倒数第二个字符交换,依次类推使用变量和分别表示第一个字符和最后一个字符的下标,定义i J,temp作为中间变量进行交换
48.1double realimage;2real=r;image=
0.0;3complex temp;4ifcl-real==c2-realcl-image==c2-imagel\r\n doublereal,image;\r\n2\r\n real=r;\r\n image=
0.0;\r\n3\r\ncomplextemp;解析本\r\n4\r\n ifcl-real==c2-realcl-image==c2-image题主要考查了类的定义、类构造函数的重载、运算符重载和友元函数等知识点特别是在重载运算符“+”中临时复数类的申请,相加的两个复数实部与虚部数值的获取,都是需要牢记的,这是运算符重载函数编写的核心所在
49.1const floatPI=
3.14159f;const float WIDTH=
3.00f;2Circlenoatr:radiusr{;3FencePrice=f;ConcretePrice=c;4returnFencePrice*fencelen+ConcretePrice*conarea;1\r\n constfloatPI=
3.14159f;\r\n constfloatWIDTH=
3.00f;\r\n2\r\n Circlenoatr:radiusr{};\r\n3\r\n FencePrice=f;\r\n ConcretePrice=c;\r\n4\r\n return解析本题考查了考生对符号FencePrice*fencelen+ConcretePrice*conarea;常量的定义及类的定义与实现等方面的内容注意常类型的定义应使用关键字const{FFintxintl.1,2,3,Yint
4.2,5,6;cout«x.Sum««Y.Sum«endl;}A.
6.
115.2B.615C.
615.2D.
6.
115.设有下列程序段;;则执行;”语17chars
[20]=Beijing,*P P=S“p=s句后,下列叙述正确的是o.可以用*表示A Ps
[0]数组中元素的个数和所指字符串长度相等B.S P和都是指针变量C.SP数组中的内容和指针变量中的内容相同D.s P.下列符号中,正确的标识符是18C++A.enum B.2b C.fOO-9D._
32.必须用一对大括号括起来的程序段是19语句中的标号语句语句的分支循环语句的循环体A.switch caseB.if C.函数的函数体D.一个关系中属性个数为时,称此关系为
20.1对应关系单一关系一元关系二元关系A.B.C.D..有如下程序段21int i=5;whileint i=0{cout«c*;i—;}运行时输出“*”的个数是无穷A.OB.l C.5D..下列关于多态性的描述,错误的是22语言中的多态性分为编译时的多态性和运行时的多态性A.C++.编译时的多态性可通过函数重载实现B运行时的多态性可通过模板和虚函数实现C.实现运行时多态性的机制称为动态绑定D..下面对于友元函数描述正确的是
23.友元函数的实现必须在类的内部定义A.友元函数是类的成员函数B.友元函数破坏了类的封装性和隐藏性C友元函数不能访问类的私有成员D.
三、.填空题题212若有以下程序
24.#includeio streamusing namespacestd;class TestClass1public:TestClass1x o;二intx;;class TestClass2:virtual public TestClasslpublic:TestClass2x=10;;class TestClass3:virtual publicTestClass1public:TestClass3x=20;;class TestClass4:publicTestClass2,protected TestClass3{;int mainTestClass4obj;coutobj.xendl;return0:该程序运行后的输出结果是______o下列程序的输出结果为【】
25.includeiostream.h voidmain;inta[]={10,20,30,40},*pa=a;int*ph=paPb++;;cout*paendl.执行下列语句后,变量的值是[]26sumo;int sum=0forint i=l;i=3;i++;;forintj=l j=i j++;sum++.数据库系统中实现各种数据管理功能的核心软件称为【】27对于下面定义的类请在函数中添加对象成员把的值
28.MyClass,f n修改为50class MyClasspublic;}MyClassint x{n=x;}void SetNumintnl{n=nlprivate;intn;int f;MyClass*ptr=newMyClass45[].流操作子可跳过输入流中的前导空白字符29数据独立性分为逻辑独立性与物理独立性当数据的存储结构改变时,
30.其逻辑结构可以不变,因此,基于逻辑结构的应用程序不必修改,称为【]o下列程序的输出结果是【】
31.#includeiostream usingnamespacestd;int mainint Bum=500;int ref=num;ref+=100;coutnumend!;return0;
32.下列程序的输出结果是______#includeiostream usingnamespacestd;class base。