还剩39页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
2022年山东省淄博市全国计算机等级考试C++语言程序设计模拟考试(含答案)学校:班级:姓名:考号:
一、
1.选择题(10题).以下叙述中不正确的是()A.C++语言中的文本文件以ASCII码形式存储数据B.C++语言中对二进制文件的访问速度比文本文件快C.使用函数open打开的文件使用完毕后,必须使用close函数将其关闭D.C++语言中,随机读写方式不适用于文本文件.以下程序中调用cin函数给变量a输入数值的方法是错误的,其错误原因是#includeiostream.hvoidmain(){int*p*qab;p=a;coutinputa:;cinp;A.*p表示的是指针变量p的地址B.p表示的是变量a的地址,而不是变量a的值C.*p表示的是指针变量p的值D.*p只能用来说明p是一个指针变量.若有如下程序#includeiostreamusingnamespacesstd;ints=0;classsample{staticintn;public:sampleinti{n=i;}staticvoidadd{s+=n;}};intsample::n=0;intmain{samplea2b5;sample::注意错误的语句在/********error********/的下面,修改该语句即可其他的语句不能修改试题程序:#includeiostream.hclassTC*1*vt*不不不*r*个个个^^n*or个个个个不不不TCintim_i=i;voidprintcout«—m_i«;public intmi;intmaininti;TC0410;whilei5I***************/i++
04.print;cout«endl;returnO;.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp本程序要求输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输入多行,当输入字符“”时,默认字符输入结束,最后把结果输出到屏幕中注意不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面试题程序#includeiostream.hvoidmaininti=O;charstr
[120];cout«nEnterastringendwith.n«endl;*1^vl*^1*个个个个不不*r*小^^nor个个不不不不个个cin.getlinestr120;*1*vl*vi*vL*个小个小小一小小^^nor个个个不不小个个whilcstr*1^个个个个个个个个^^nor个个个个个个个个str[i]=str[i]-a+A;i++;cout«str«endl;return;}.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp但该程序运行有问题,请改正main函数中的错误,使该程序的输出结果正确程序输出88注意错误的语句在/********error********/的下面修改该语句即可,其他的语句不能修改试题程序#includeiostream.hclassCOpublic//小不不不不小不不en*or不不不不不不不不/staticintn=O COn++con—)7,k17“7,^1个不个个个个个不^^rror个个个个个小个个intCOn;voidmainCOobj;COobj2
[7];CO*C=NULL c=obj*1^*1^*1^*1*error不不不不不不个不eout«C.n«endl;cout«C0n«endl;.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp该程序运行时有错误,请改正程序中的错误本程序要求实现的功能为从键盘输入一个字符串,并将结果保存到文件
1.txt中注意不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在试题程序:#includeiostream#includefstreamCilMlusingstd;voidWriteFilechar*sofstreamoutl;/不不不不不不不不error不不不不不不不不outl.openul.txtbinary|app;forinti=0;s[i]!=0;i++CJLJLUJLoutl.putss[i];outl.close;voidClearFileofstreamoutl;outl.opennl.txt;outl.close;intmainchars
[1024];ClearFile;cout«npleaseinputastrin9n«endl;cin.getlines1024;WriteFiles;returnO;
41.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp该程序运行时有错,请改正其中的错误,使程序正常运行,输出的结果为Constructori=0Destructor注意错误的语句在//******error******的下面,修改该语句即可试题程序:#includeiostream.hclassTCinti;public TC;voiddisplay;TC;};TC TCcout«nConstructorH«n^1*.!*.!*.1*不下不不不不enor不不不不不不TC displaytoutni=n«i«nn«endl;COUI«nDestructorn«endl voidmainTCa;a.display;
42.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp该程序运行时有错误,请改正错误,使程序正常运行,并且要求最后一个catch必须抛出执行的任何异常程序异常,输出信息为error0ERROR注意不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面试题程序:#includeiostream.hintmaintrythrow,error;7777,777777,7,77777个个个个不不个个^^rror个个个个个个个个catchcharscout«s«endl;trythrowint0;个个个个个个个个^^nor个个个个个个个个catchcout«i«endl;trythrowO;thrownerrorn;K.tt个个个个个个个个•个个个个个个个个catchreturnO;.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp本程序要求输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输入多行,当输入字符“”时,默认字符输入结束,最后把结果输出到屏幕中注意不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面试题程序:#includeiostream.hvoidmaininti=O;charstr
[120];cout«nEnterastringendwith.n«endl;kL*kL*kL*kL*个小个个个不不小^^nor个个不不不小个个cin.getlinestr120;«»£个个个个小个个个^^nor个个小个个个个个whilestrklkI个个个个个个个个^^nor个个个个个个个个ifstr[i]=astr[i]=str[i]-a+A;i++;cout«str«endl;return;.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp该程序运行时有错误,请改正错误,使程序正常运行,并且要求最后一个catch必须抛出执行的任何异常程序异常,输出信息为error0ERROR注意不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******errcr******的下面试题程序#includeiostream.hintmaintrythrownerrorn;/不不不不不不不不error不不不不不不不不catchcharscout«s«endl;tryadd;coutsendl;return0;}程序运行后的输出结果是A.2B.5C.7D.
3.考虑以下的函数原型voidAintaintb=5charZ=下面的函数调用中,不正确的是A.A7B.A34C.16#D.A02田.两个或两个以上模块之间联系的紧密程度称为A.耦合性B.内聚性C复杂性D.数据传输特性.在数据流图DFD中,带有名字的箭头表示A.模块之间的调用关系B.程序的组成成分C.数据的流向D.控制程序的执行顺序.有如下程序#includeiostreamusingnamespacestd;classsample{private:intxy;public:sampleintiintj{x=i;y=j;}voiddisp{coutdisplendl;}voiddispconst{coutdisp2end1;};intmain{constsampleal2;a.disp;return0;}该程序运行后的输出结BB日米XE A.displB.disp2C.displdisp2D.程序编译时出错.有以下程序#includeiostream.hfloatfunintxinty{retumx+y;}voidmain{inta=2b=5c=8;coutfunintfuna+cba-c;}程序运行后的输出结果是throwint0;//vL*vL*k1*k!k1/不不不不不不不不eiroi•不不不不不不不不catchcout«i«endl;trythrowO;throw,error;//k!7,k!k!7,7,、!k!7/不不不小不不不不error不不小不不不不不catchcout«nERRORn«endl;returnO;
45.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp该程序运行时有错,请改正其中的错误,使程序正常运行,输出的结果为Constructori=0Destructor注意错误的语句在//******errcr******的下面,修改该语句即可试题程序#includeiostream.hclassTCinti;public TC;voiddisplay;〜TC;TC TCcout«nConstructor!«ni=0;k£k1k1k|不不小小不不error不不不小不不TC:displaytout«ni=n«i«nn«endl;errorTC TCCOUI«nDestructorn«endl voidmainTCa;a.display;
五、综合应用题2题
46.使用VC++
6.0打开考生文件夹下的源程序文件
3.cpp其中定义的类不完整,按要求完成下列操作,将类的定义补充完整每卖出一个水果,则计算水果的重量,还要计算所有卖出水果的总重量以及总个数,同时允许退货,请按照以下的操作,把类补充完整⑴定义类TCFruit的私有静态数据成员float型变量AllWeight和int型变量AHN0请在注释1后添加适当的语句2完成类TCFruit的带一个float型变量w的构造函数,并把这个w加到AllWeight中,并且AHNo自加请在注释2后添加适当的语句⑶在析构函数中,在AllWeight中减去weight然后A11N自减,请在注释3后添加适当的语句4完成静态成员变量的初始化为0请在注释4后添加适当的语句注意增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码试题程序#includeiostream.hclassTCFruitprivate floatWeight;7,7,7,71*1*k]k]si•f*-J*IrjstaticintAHNo;public TCFruitfloatw//777,77/.、*j、〃、〃、*|*.、〃、〃、*|*AllWeight+=w A11N0++:TCFruit//1kL*7777k1/q、q.
1、rj*.Xrj.q、A11Weight-=Weight voiddisplaycout«nSellaFruitwithH«Weight«Hk9n«endl;cout«^Allsellnumber n«AllNo«endl;cout«nAllsellweight n«AllWeight«nk9n«endl«endl;};/I********4********floatTCFruitAllWeight=O.0;intmainTCFruitFruitll.2;Fruitl.display;TCFruitFruit
22.3;Fruit
2.display;returnO;}
47.使用VC++
6.O打开考生文件夹下的源程序文件
3.cpp其中定义了类BA、PA1和PA2其中PA1类由BA类公有派生,PA2类由PA1类公有派生上述3个类的定义并不完整,请按要求完成下列操作,将程序补充完整程序输出结果如下1051057⑴定义类BA的构造函数,该构造函数有一个整型的参数m在构造函数中将m赋值给数据成员ao请在注释1之后添加适当的语句2定义类PA1的构造函数,该构造函数有两个整型的参数m和n在构造函数中将m赋值给数据成员b将n作为基类BA构造函数的参数值传人请在注释2之后添加适当的语句⑶定义类PA2的构造函数,该构造函数有3个整型的参数m、n和k在构造函数中请将m赋值给数据成员c将n和k分别赋值给基类PA1构造函数的参数m和no请在注释3之后添加适当的语句4完成类PA2的成员函数show的定义,该函数调用基类成员函数,输出基类私有成员a、b及类PA2自身的数据成员c的值,上述3个值在输出时用空格隔开请在注释4之后添加适当的语句注意除在指定位置添加语句之外,请不要改动程序中的其他内容试题程序#includeiostream.hclassBAinta;public//********]********intgeta{returna;};classPAl publicBAintb;public//********2********intgetb{returnb;}};classPA2publicPAlintC;public//kL**1*^1**1*J*1*J/
4、rj*\*y»«、^Jrjvoidshow/I********4********};voidmainPA2a7510;cout«a.geta«endl;cout«a.getb«endl;a.show;
六、
3.综合应用题2题
48.使用VC6打开考生文件夹下的工程test40_3o此工程包含一个test40_
3.cpp其中定义了类CVector但该类的定义并不完整请按要求完成下列操作,将程序补充完整⑴完成类CVector构造函数的定义,把传入的int型参数a和b分别赋值给类的成员变量x和yo请在注释“〃**1**”之后添加适当的语句⑵完成类CVector的“+”运算符重载函数的定义,使Cvector类的两个对象相加时可以直接使用符号“+”,并且结果仍然为类Cvector的对象,请在注释“〃**2**,,之后添加适当的语句3在主函数中添加适当的语句,把类Cvector的对象a和b相加,并且把结果保存在对象C中,最后以“Xy”的形式输出在屏幕上,请在注释“〃**3**”之后添加适当的语句源程序文件test40_
3.cpp清单如下#includeiostream.hclassCVector{public:intxy;CVector{};CVectorintint;CVectoroperator+CVector;CVector::CVectorintaintbCVectorCVector::operator+CVectorparamtemp.y=y+param.y;returntemp;intmainCVectora31;CVectorb12;CVectorc;return0;
49.使用VC6打开考生文件夹下的工程test20_3此工程包含一个源程序文件tes00_
3.cpp其中定义了用于表示复数的类comp但类comp的定义并不完整请按要求完成下列操作,将类comp的定义补充完整⑴定义comp的构造函数,函数含参数x和y它们都是in型的数据,默认值都为0请使用参数列表的形式分别将类数据成员a和b初始化x和y的值请在注释“〃**1**”之后添加适当的语句2完成类comp的成员函数inputintxinty的定义,将int型的参数x和y分别赋值给数据成员s和b请在注释“〃**2**”之后添加适当的语句;⑶完成类comp的友元函数friendcomppluscompxcompy的定义该函数首先要定义一个comp类的对象c然后将参数x和y的数据成员a与b分别相加并分别赋值给c的成员a和b最后返回c的值,请在注释“〃**3**,,之后添加适当的语句输出结果如下10+20i2+3iresult12+23i注意除在指定位置添加语句之外,请不要改动程序中的其他内容源程序文件test20_
3.cpp清单如下#includeiostream.hclasscompinta;intb;public:〃**]**friendcomppluscompxcompy;voidinputintxintyvoidoutputcouta+bninendl;;comppluscompxcompyc.b=x.b+y.b;returnc;voidmaincompx1020yz;y.input23;z=plusxy;x.output;y.output;coutresult:;z.output;参考答案l.D解析本题考核文件的读写和存储C++语言的文件流不仅可以按顺序方式进行读/写,而且还可以随机地移动文件的读/写指针有一些外部设备如磁带、行式打印机等关联的流只能做顺序访问文本文件也可以用随机读写方式访问由此可知,选项D的叙述是错误的.B解析p表示的是变量a的地址,定义后*p表示的是变量a的值
3.B.C解析A、B项中,实参不全,缺省的参数默认为函数原型中的初始值,但在C项中,第二个实参char型与函数原型中的第二个形参类型不一致,故C项错误.A解析耦合性是模块间互相连接的紧密程度的度量,取决于各个模块之间接口的复杂度、调用方式以及哪些信息通过接口A.编译出错B.9C.21D.
9.通过公有派生类的对象,只能访问基类成员中的A.公有成员B.私有成员C.保护成员D.公有成员和保护成员.只能作为成员函数重载的是A.=B.++C.*D.new
二、单选题(13题).下列关于类定义的说法中,正确的是A.类定义中包括数据成员和函数成员的声明B.类成员的缺省访问权限是保护的C数据成员必须被声明为私有的D.成员函数只能在类体外进行定义.下列不是描述类的成员函数的是()A.构造函数B.析构函数C.友元函数D.复制构造函数.以下函数值的类型是fun(floatx){floaty;y=3*x-4;returny;}A.intB.不确定C.voidD.float.与语句coutendl;不等价的是()[知识拓展]模块的独立程序是评价设计好坏的一个重要标准,衡量软件的模块独立性有两个定性的度量标准其中内聚性是指一个模块内部各个元素间彼此结合的紧密程度的度最,内聚性是从功能角度来度量模块内的联系;耦合性是模块间互相连接的紧密程度的度量,耦合性从整体的角度来度量模块间的联系
6.C解析在数据流图中,用标有名字的箭头来表示数据流
7.B解析本题考核常对象、常数据和常函数C++中,在定义常对象时必须进行初始化,而且不能被更新如果将一个对象说明为常对象,则通过该对象只能调用它的常成员函数题中,对象a被定义成类sample的常对象,所以通过对象a只能调用其常成员函数disp所以程序最后输出disp2o
8.B解析:本题的运算过程是funintfuna+cBa-Cfunintfun1052-8funint
15.000000-6fun15-6=
99.A解析本题考核派生类的访问权限派生类的继承方式有三种公有继承public、私有继承private和保护继承protected当公有派生时派生类成员函数只能访问基类的公有成员和保护成员,但是通过派生类的对象只能访问基类的公有成员W.A解析运算符重载为成员函数的形式为函数类型operator运算符形参表{函数体;};运算符重载为友元函数的形式为friend函数类型operator运算符形参表{函数体;}o一般来讲,单目运算符最好重载为成员函数,双目运算符最好重载为友元函数=、口、、->以及所有的类型转换运算符只能作为成员函数重载ll.A解析本题考查的知识点是类的定义类中缺省的访问权限是私有的private所以选项B不正确类的数据成员和函数成员的访问控制权限均可被声明为公有public>私有priate和保护protected中的任意一种,所以选项C不正确;成员函数的实现即可以在类体内定义,也可以在类体外定义,所以选项D不正确故本题应该选择Ao.C解析友元函数是独立于当前类的外部函数,但它可以访问该类的所有对象的成员;拷贝构造函数是使用已存在的对象初始化正在生成的对象时调用的成员函数.A解析函数定义时如果数据类型默认,则默认为into函数中如果有“retum表达式”语句,表达式的类型可能与函数的类型不一致,但它并不能改变函数的类型,实际情况是把表达式转换为函数值的类型作为返回值,因此本题的函数值类型是int.D题干表示的是回车换行,选项A、B、c都表示回车换行,而选项D是字符串的结尾标志.D各种排序方法中最坏情况下需要比较的次数分别为眉泡排序nn-1/
2、快速排序nn-l/
2、简单插入排序nn-l/2>希尔排序0nl.
5、简单选择排序nn-l/
2、堆排序Onlog2nDo【解析】对于两个结构体,b=a;表示将a的每一个元素都赋给b所以会输出a中的内蓉.A解析C++的I/O系统是通过一种称为流的机制来实现文件和控制台的I/O操作简单地说,在C++中,输入输出操作是通过流来完成的而文件流以磁盘文件以及其他可按文件方式进行管理的外部设备为输入输出对象每个文件流都应当与一个打开的文件相联系;关闭一个文件就是取消这种联系.D解析本题考核C++程序的基本框架“封装性”指将数据和算法捆绑成一个整体,而不是将不同类型的相关数据组合在一起C++中的多态性是指一个面向对象的系统常常要求一组具有相同基本语义的方法能在同一接口下为不同的对象服务基类的私有成员在派生类的对象中不可访问,但是也占据内存空间C++同时支持结构化和面向对象两种程序设计的基本框架,所以在面向对象的程序设计中,结构化程序设计方法仍有着重要作用.A\nA【解析】从循环语句中可以看出,是在到4的循环中输出数组a中的前5个元素,输出的值为*P+i即为指针P向后移动指向的元素所以初始化要将指针P指向数组a即int*p=a;o.C解析C++语言中的类是可以组成层次结构的,类是用于描述事物的属性和对事物的操作,类与类之间有相对的独立性,但其可以通过一些方法进行信息的通信
21.B解析派生类对象的数据结构是由基类中说明的数据成员和派生类中说明的数据成员共同构成,所以不能继承基类的构造函数,必须重新定义
22.DDo【解析】类模板是一系列相关类的模板,类成员组成相同,成员函数的源代码形式相同,所不同的是所针对的类型类模板的成员函数都是模板函数,在用类模板定义对象时,由于没有像函数实参表这样的额外信息渠道,因此无法按函数模板的方式省略模板实参但可以为类模板的参数设置默认值由此可知应选D
23.A算法的有穷性,是指算法必须能在有限的时间内做完,即算法必须能在执行有限个步骤之后终止.软件开发软件开发解析基于软件工程的目标,软件工程的理论和技术性研究的内容主要包括软件开发技术和软件工程管理软件开发技术包括软件开发方法学、开发过程、开发工具和软件工程环境,其主体内容是软件开发方法学软件工程管理包括软件管理学、软件工程经济学以及软件心理学等内容.A或者friendA或者friend解析友元的定义.集合集合解析在关系操作中,所有操作对象与操作结果都是关系而关系定义为元数相同的元组的集合因此,关系操作的特点是集合操作.可重用性可重用性
29.前件前件解析在树形结构中,每一个结点只有一个前件,称为父结点,没有前件的结点只有一个,称为树的根结点;每一个结点可以有多个后件,它们都称为该结点的了结点没有后件的结点称为叶子结点
30.有穷性有穷性解析算法是指解题方案的准确而完整的描述它有4个基本特征,分别是可行性、确定性、有穷性和拥有足够的情报
31.A
32.11解析程序进入do-while循环后,执行x=3后,输出x的值1然后判断-x为假,退出循环
33.对象类对象类
34.i+l35上.aTueb.aTue解析b.a取对象的成员变量Tue在枚举中变量为2的是Tue
36.1应改为assertsizeofsD==4;\n2应改为assertsizeofs2==lO;\n3应改为assertsizeofs3==l;\n【解析】assert函数如果为假,则会产生一个中断异常所以要让它正常执行输出结果,那么assert函数只有为真,才不会产生中断异常uassertsizeofs1==3;”语句中“sizeofsl=3”为假这会使程序产生异常,不能正常执行因为strl的值为abc但是它还有一个尾符,它的长度应该是4而不是3所以在第1处修改为“assertsizeofsl==4str2
[10]说明str2的空间为10在第2处修改为“assertsizeofs2尸=10charstr3=23;语句说明23是字符,所占存储空间为1所以修改为uassertsizeofs3==l;
37.1应添加“public:\n2“inti”应改为“inti10;\n3“i++;”应改为“i-;\n【解析】本题主要考查的是成员的访问属性成员的访问属性有公有、保护和私有3种,而默认的访问属性为私有,只有公有成员才能通过类的对象被访问故应在构造函数前添加“public:,否则该类无法被实例化变量的初始化可以通过“=”号,也可以和初始化对象一样添加构造参数,题目已要求使用后者本题要求输出5个数,while的循环变量i每次减1在i〉5时循环,故i初始化应为10o若循环中i每次增1则循环永远不会退出
38.1应改为“ein.getlinestr120;\n⑵应改为whilestr[i]”\n3应改为“ifstr[i]=astr[i]=2o\n【解析】本题中要求以输入字符“”为结束符,用于字符输入的流成员函数getline函数读入一行字符,格式为“cin.getline字符数组,字符个数终止标志字符字所以第1处改为“cin.getlinestr120;第2处的“whilestr”语句应该是判断字符串str中的每一个字符是否为结束符,若不是结束符,在循环中判断每一个字符是否为小写,若为小写,则转换所以应该修改为“whilestr[i]”第3处的“ifst巾]=a”语句是判断字符str国是否为小写字符,而现有的语句只是判断字符是否大于a但是小写字符应该是a到2所以修改为“ifst巾]=astr[i]=zo.1“staticintn=O应改为staticintn;2“intCOn;”应改为“intCOn=0;”34tcout«c.n«endl;应改为coutv〈c-nvendl;【解析】本题要在屏幕上输出两个字符,首先要静态变量初始化,第1处应改为“staticintn;,第2处要给n赋值,第3处输出时引用c的对象,应改为coutc-n«endl;.⑴应改为usingnamespacestd;2应改为outl.openl.txtiosbinaryIiosapp;3应改为“outl.puts[i];”【解析】本题第1处的“usingstd;”是在程序中引入标准命名空间std对于C++中引入标准命名空间的格式,缺少namespace所以第1处的语句修改为“usingnamespacestd;第2处,调用成员函数open中,输入、输出方式是在ios类中定义的,所以“outl.openl.txtbinaryIapp;”语句缺少类ios即第2处的语句修改为“outl.openl.txtiosbinaryIiosapp;第3个标识应该用流成员函数put输出字符,所以第3处的语句修改为“outl.puts[i];.1应改为“TCTC”2应改为voidTCdisplay”⑶应改为“TC〜TC”【解析】在类的外部定义成员函数时,必须在成员函数前面加上类名和作用域运算符“”,作用域运算符用采表示某个成员属于哪个类使用格式为“类名<成员函数〉参数函数,因此第1处应改为“TCTC”默认构造函数没有参数由第2处“TCdisplay”后的语句看,这是在类外实现TC函数,因此也有作用域运算符使用错误问题,display函数返回值为void因此第2处的语句应改为“voidTCdisplay”由第3处的语句“TCTC”可知,显然这里是在类外实现析构函数,析构函数是一个特殊的函数,它的名称和类名相同,并在前面加“〜”字符,用采与构造函数加以区别,因此第3处的语句应改为“TC〜TC”.1应改为catchchar*s”2应改为catehinti”3应改为catch…户【解析】本题中第1个标识前的异常抛出语句为“throwerror”;,其中的类型为字符串所以对应的异常捕捉语句catch中应该符合这个类型,而程序中给出的语句“catchchars”是字符型的,所以第1处的语句修改为“catchchar*S”第2个标识前的异常抛出语句为uthrowint0;,其中的类型为int对应的异常捕捉语句catch中应该符合这个类型,所以补充catch子句中的类型,否则如果找不到匹配的catch块,系统就会调用一个系统函数,使程序终止运行即第2处的语句修改为“catchinti”如果在catch子句中没有指定异常信息的类型,那么就用删节号“…”表示它可以捕捉任何类型的异常信息,即修改为“catch…”.1应改为“ein.getlinestr120;⑵应改为“whilestr[i]”3应改为“ifst巾]=astr[i]v=2”【解析】本题中要求以输入字符“”为结束符,用于字符输入的流成员函数getline函数读入一行字符,格式为“cin.getline字符数组,字符个数,终止标志字符户所以第1处改为“cin.getlinestr120;第2处的“whilestr”语句应该是判断字符串str中的每一个字符是否为结束符,若不是结束符,在循环中判断每一个字符是否为小写,若为小写,则转换所以应该修改为“whilest巾]”第3处的“ifst巾]=a”语句是判断字符str[i]是否为小写字符,而现有的语句只是判断字符是否大于a但是小写字符应该是a到2所以修改为44ifstr[i]=astr[i]=zo.1应改为catchchar*s”⑵应改为“catehinti”3应改为catch…”【解析】本题中第1个标识前的异常抛出语句为“throwerror;,其中的类型为字符串所以对应的异常捕捉语句catch中应该符合这个类型,而程序中给出的语句“catchchars”是字符型的,所以第1处的语句修改为“catchchar*S”第2个标识前的异常抛出语句为44throwint0;,其中的类型为int对应的异常捕捉语句catch中应该符合这个类型,所以补充catch子句中的类型,否则如果找不到匹配的catch块,系统就会调用一个系统函数,使程序终止运行即第2处的语句修改为“catchinti”如果在catch子句中没有指定异常信息的类型,那么就用删节号“…”表示它可以捕捉任何类型的异常信息,即修改为“catch…”.⑴应改为“TCTC”\n2应改为voidTCdisplay”\n3应改为“TC〜TC”\n【解析】在类的外部定义成员函数时,必须在成员函数前面加上类名和作用域运算符“”,作用域运算符用采表示某个成员属于哪个类,使用格式为“类名〈成员函数〉参数函数,因此第1处应改为“TCTC”,默认构造函数没有参数由第2处“TCdisplay”后的语句看,这是在类外实现TC函数,因此也有作用域运算符使用错误问题,display函数返回值为void因此第2处的语句应改为“voidTC display由第3处的语句叮^:丁小可知,显然这里是在类外实现析构函数,析构函数是一个特殊的函数,它的名称和类名相同,并在前面加“〜”字符,用采与构造函数加以区别,因此第3处的语句应改为“TC〜TC”A.cout\n;B.cout12C.cout\xA;D.cout、.对长度为n的线性表排序,在最坏情况下,比较次数不是nn-l/2的排序方法是oA.快速排序B.冒泡排序C直接插入排序D.堆排序.有下列程序#includestdiO.hvoidmain{stuctSTU{charname
[9];charsex;doublescore
[2];};stuctSTUa={nZhaOnm
85.
090.0,b={Qian”,f
95.
092.0;b=a printf%S%C%
2.0%
2.0\n\b.nameb.sexscore[O]bscore[l];程序的运行结果是oA.Qianf9592B.Oianm8590C.ZhaOf9592D.ZhaOm
8590.在C++语言中,打开一个文件就是将这个文件与一个什么建立关联A.流B.类C.结构D.对象.关于面向对象的程序设计方法,下列说法正确的是
46.1应添加“staticfloatAUWeight;2应添加“Weight=w;3应添力口“AllNo—;”4应添加“intTCFruitAllNo=0;”【解析】静态数据成员声明时需使用关键字static因此第1处应添加ustaticfloatAllWeight;5o构造函数用来对类成员进行初始化,在TCFruit类的构造函数TCFruitfloatw中,完成weight的初始化,并把这个w力口至UAllWeight中,并且AllNo自加因此第2处应添加“weight=w;调用析构函数相当于退出,这时AHWeight中减去weight然后AHN自减,因此第3处应添加“AllNo--;静态数据成员的初始化格式为“〈数据类型><类名>静态数据成员>=初始值”,因此第4处应添加“intTCFruitAllNo=0;
47.⑴应添加“BAintm{a=m;}”2应添加“PAlintmintn BAn{b=m;}”3应添力H“PA2intmintnintk PAlnk{C=m;”4应添力口“coutvvgetavvvvgetbvv«Cvvendl;【解析】根据第1处要求,构造函数的函数名和类名一致,显然BA构造函数的名称为BA在BA中通过参数m完成对成员变量a的赋值,因此构造函数的名称为BAintm在函数内部对成员a赋值,故第1处的语句应添加“BAintm{a=m;广根据第2处的要求,构造函数的形式为“PAlintmintnm赋值给PA1类成员b将n作为基类BA构造函数的参数值传入,故第2处应添加“PAlintmintn BAn{b=m;}“根据第3处的要求,函数形式为PA2intmintnintk在构造函数中将m赋值给数据成员c将n和k分别赋值给基类PA1构造函数的参数m和n因此第3处应添加“PA2intmintnintk PAlnk{C=m;}”根据第4处的要求,PA2类公有派生于PA1而PA1公有派生于BA因此在PA2类中可以调用基类的geta和getb来获得基类私有成员a和b再输出PA2的私有成员C即满足要求,因止匕第4处应添力ITcoutvvgetavWvgetbWvvCvvendl;
48.1x=a;y=b;2CVectortemp;temp.x=x+param.x;3c=a+b;toutc.xc.y;l\r\nx=a;\r\ny=b;\r\n2\r\nCVectortemp;\r\ntemp.x=x+param.x;\r\n3\r\nc=a+b;\r\ntoutc.xc.y;解析主要考查考生对于类的数据成员赋值与定义重载为成员函数的运算符函数的掌握,其中⑵就是运算符函数的实现,实际上就是通过已有的函数和符号实现复杂的运算功能,并最终返回该类的对象,注意最后的返回值必须是对象才能满足要求,4中使用对象调用类的数据成员用符号・O
49.1compintx=0inty=0axby{}2a=x;b=y;3compc;c.a=x.a+y.a;l\r\ncompintx=09inty=0:axby{\r\n2\r\na=x;\r\nb=y;\r\n3\r\ncompc;\r\nc.a=x.a+y.a;解析本题考查考生对于类的定义和友元函数定义的掌握,请注意⑴中的参数列表形式和3中对象使用“.”访问它的数据成员A.“封装性”指的是将不同类型的相关数据组合在一起,作为一个整体进行处理B.“多态性”指的是对象的状态会根据运行时要求自动变化C.基类的私有成员在派生类的对象中不可访问,也不占内存空间D.在面向对象的程序设计中,结构化程序设计方法仍有着重要作用.程序中有语句for(inti=0;i5;i++)cout«*(p+i)«;能够依次输出int型一维数组a的前5个元素由此可知,变量P的定义及初始化语句是()A.int*p=a;B.intp=a;C.np=a;D.p=a;.下列关于C++语言类的描述中错误的是A.类用于描述事物的属性和对事物的操作B.类与类之间通过封装而具有明确的独立性C.类与类之间必须是平等的关系,不能组成层次结构D.类与类之间可以通过一些方法进行通信和联络.C++语言类体系中,不能被派生类继承的有()A.转换函数B.构造函数C.虚函数D.静态成员函数.下列关于类模板的描述中,错误的是()A•类模板的成员函数都是模板函数B.可以为类模板参数设置默认值C.类模板描述了一组类D.类模板中只允许有一个类型参数.算法的有穷性是指A.算法程序的运行时间是有限的B.算法程序所处理的数据量是有限的C.算法程序的长度是有限的D.算法只能被有限的用户使用
三、
2.填空题(12题).软件工程研究的内容主要包括软件工程管理和【】技术.将一个函数声明为一个类的友元函数必须使用关键字【】.关系操作的特点是【】操作.一个类可以直接或间接的祖先中继承所有的属性和方法采用这个方法可以提高了软件的【】.问题处理方案的正确而完整的描述称为o.在树形结构中,树根结点没有【】.算法的基本特征是可行性、确定性、【】和拥有足够的情报.创建对象数组时,对数组的每一个元素都将调用一次构造函数,如果没有显示给出数组元素的初值,则调用缺省构造函数下列程序涉及对象数组的创建和单个对象的创建,其输出结果是O#includeiostreamusingnamespacestd;classFoo{public:Foointx{cout〈A;}Foo{};intmainFoof
[3]g3;return0;.有以下程序#includeiostreamusingnamespacestd;intmainintX=4;do{coutx-=3endl;}while-X;return0;运行后的打印结果是【】.可以把具有相同属性的一些不同对象归类,称为o.数组元素a[i]是该数组中的第个元素.下面的类中定义了一个枚举类型,请完成下面的程序classBase{public:enumWeek{SumMonTueWedThuFriSat};Weeka;voidfunBaseB{[]=[];〃将对象的a赋值为所定义的枚举类型值为的枚举量}
四、程序改错题10题.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果为sizeofSl=5sizeofs2=10sizeofs3=l注意不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面⑴不能删除assert语句2只能修改后面的数字提示assert函数如果为假,则会产生一个中断异常试题程序:#includeiostream.h#includeassert.hvoidmainchartsl=nabcn kL*kL**1*vL*kL#kL#个个个不不不不不不不不个个个个个assertsizeofs1==3:cout«nsizeofsl=5n«endl;chars2
[10]=nabn kIKLKL*个个个个个个个个^^nor个个个个个个个个assertsizeofs2==2;cout«nsizeofs2=10n«endl;chars3=23个不不不不不不不不不不不不不不不assertsizeofs3==4;cout«nsizeofs3=ln«endl;return;.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp该程序运行时有错误,请改正程序中的错误,使得程序输出98765。