还剩43页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
2022年四川省绵阳市全国计算机等级考试C++语言程序设计模拟考试含答案学校:班级:姓名:考号:
一、
1.选择题10题.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指A.模块间的关系B.系统结构部件转换成软件的过程描述C.软件层次结构D.软件开发过程.如果表达式-x/y中的“-”和是作为友元函数重载的运算符,采用运算符函数调用格式,该表达式还可表示为A.operator/x.operator—y;B.operator/operator—xy;C.x.operator—.operator/y;D.y.operator/operator—x;.类MyClass的定义如下classMyClass{public MyClass{value=0;}SetVariableinti{value=i;}private intvalue;;则对下列语句序歹正确的描述是A.MyClass*pmy;p=my;B.语句p=my;是把对象my赋值给指针变量pC.语句MyClass*pmy;会调用两次类MyClass的构造函数D.对语句*p.SetVariable5与语句my.SetVariable5等价.在派生类中,对类对象成员,基类成员和非类对象成员的初始化程序是[]o.为解决在多重继承环境中因公共基类带来的二义性问题,C++语言提供了【】机制.Jackson方法是一种面向的结构化方法.数据结构分为逻辑结构和存储结构,循环队列属于结构.排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、【】和选择排序等.下列程序的输出结果是【】#includeiostreamusingnamespacestd;classTest{public:Test{cnt++;}〜Test{ent—;}staticintCountreturnent;}private:staticintent;;intTest::cnt=0;intmaincoutTest::Countn;Testtlt2;Test*pT3=newTest;Test*pT4=newTest;coutTest::Count;deletepT4;deletepT3;coutTest::Countend1;return0;.假定一个一维数组的定义为“chara
[8]b;”若把该数组最后一个元素赋值给b应该采取的表达式为[]
0.常用的黑箱测试有等价分类法、因果图法和错误推测法4种.下面程序的输出结果是【】#includeiostreamusingnamespacestd;intx;voidfunAintint;voidfunBintint;intmainintfirst;intsccond=5;x=6;funAfirstsecond;funBfirstsecond;coutfirstnnsecondnnxendl;return0;voidfunAintaintbintfirst;first=a+b;a=2*b;b=first+4;voidfunBintuintvintsecond;second=x;v=second+4;x=u+v;.语句int*i=newinti
[10];释放指针i的语句是.以下程序的运行结果是【】#includeiostream#includestringusingnamespacestd;voidmain{chara
[10]=Chinab[]=Chinc[]=ese;coutstrlenstrcatstrcpyabcendl;
四、程序改错题(10题).使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp该程序运行时有错,请改正其中的错误,使程序正常运行,输出的结果为Constructori=0Destructor注意错误的语句在//******error******的下面,修改该语句即可试题程序#includeiostream・hclassTCinti;public TC;voiddisplay;〜TC;};errorTC TCcout«nConstructorn«n,i=0;不小不小不不error不不不不不不TC displaytoutni=n«i«nn«endl;7,7,7,7,不不小小个不error不不小小小不TC TCCOUI«HDestructorn«endl voidmainTCa;a.display;.使用VC++
6.0打开考生文件夹下的源程序文件Lcpp但该程序运行有问题,请改正main函数中的错误,使该程序的输出结果正确程序输出:注意错误的语句在/********error********/的下面修改该语句即可,其他的语句不能修改试题程序:#includeiostream.hclassCOpublic staticintn=O COn++)〜CO(n—)}:I********error********intCOn;voidmain(COobj;COobj2
[7];CO*C=NULL c=obj/%L*kL*kJ*不干不不不不不不enor不不不不不不不不eout«C.n«endl;cout«C0n«endl;).使用VC++6-打开考生文件夹下的源程序文件
1.cpp该程序运行时有错误,请改正程序中的错误,使得程序输出98765注章.错误的语句在/********error********/的下面,修改该语句即可其他的语句不能修改试题程序:#includeiostream.hclassTCkJ#7,个干个个个不不不个个个小个小个个TCintimi=i;voidprintpublic intmainvl*k1*kL*不干不不不不不不^^nor不不不不不不不不inti;TC0410;whilei5I********e口Or********Ii++
04.print;returnO;.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp0本程序要求输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输入多行,当输入字符“”时,默认字符输入结束,最后把结果输出到屏幕中注意不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面试题程序#includeiostream.hvoidmaininti=O;charstr
[120];cout«nEnterastringendwith.n«endl;cin.getlinestr120;errorwhilestrifstr[i]=astr[i]=str[i]-a+A;i++;cout«str«endl;return;.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果为sizeofSl=5sizeofs2=10sizeofs3=l注意不要改动main函数,不能增加或删除行,也不能更改程序的结⑴不能删除assert语句⑵只能修改后面的数字提示assert函数如果为假,则会产生一个中断异常试题程序#includeiostream.h#includeassert.hvoidmainchartsl=nabcn/不不不不不不不不error不不不不不不不不assertsizeofs1==3:chars2
[10]=nabn//*1**J*1^*1*si**1**1**1**1*/不不不不不不不不error不不不不不不不不assertsizeofs2==2;cout«nsizeofs2=10n«endl;chars3=23/不不不不不不不不error不不不不不不不不assertsizeofs3==4;cout«nsizeofs3=ln«endl;return;}.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp该程序运行有问题,请改正main函数中的错误,使程序的输出结果为number=1number=10number=100注意不要改动main函数,不能增加或删除行也不能更改程序的结构,错误的语句在//******errcr******的下面试题程序#includeiostream.hclassTCpublic TCintinumber=i;
4.下面关于友元的说法中错误的是A.友元函数可以访问类中的所有数据成员B.友元函数不可以在类内部定义C.友元类的所有成员函数都是另一个类友元函数D.友元函数必须声明在public区.算法指的是oA.计算机程序B.解决问题的计算方法C.解决问题的有限运算序列D.排序算法.有如下函数模板的定义templateclassTTfuncTxTy{returnX*x+y*y;}在下列对func的调用中,不正确的是A.func35;B.func35;C.func
35.5;D.funcint
35.5;.在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是0A.派生类的对象可以赋给基类的对象.派生类的对象可以初始化基类的引用C派生类的对象可以直接访问基类中的成员voidSetNumberintmnumber=m;intGetNumberconstreturnnumber;voidPrintconstcout«nnumber=n«number«endl;private intnumber;voidmainTCobjl;objl.Print;TCobj23;kL*vlvt*kL*kL*不不不不不不不下error个个个不个个个个objl.number=10;I!********ej*j*or*******TC.SetNumberlOO;objl.Print;obj
2.Print;.使用VC++
6.打开考生文件夹下的源程序文件
1.cpp该程序运行时有错误,请改正错误,使程序正常运行,并且要求最后一个catch必须抛出执行的任何异常程序异常,输出信息为error0ERROR注意不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面试题程序:#includeiostream・hintmainthrowHerrorn;vl*vlkX*catchcharscout«s«endl;trythrowint0;7个个个个个个个个^^rror不不不个个不不catchcout«i«endl;trythrowO;thrownerrorn;si*vl*个个个个个个个个^^rror个个个个个个个个catchcout«nERRORn«endl;}returnO;.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp该程序运行时有错请改正程序中的错误,使程序输出的结果为1003732注意错误的语句在//******errcr******的下面,修改该语句即可试题程序#includeiostream.h/不不不不不予error不不不不不不voidmaink1不小不小不不error不不不不不不intm=0142kL*«j*1不不不不不不eno]举不不不不不intn=0X27intq=32;coutmendl;coutnendl;coutqendl;return;.使用VC++
6.打开考生文件夹下的源程序文件
1.cpp本程序要求输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输入多行,当输入字符“”时,默认字符输入结束,最后把结果输出到屏幕中注意不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******errcr******的下面试题程序#includeiostream.hvoidmaininti=0;charstr
[120];cout«nEnterastringendwith.n«endl;vt*vL*vL*k1个个个不不不不不^^nci•不不不不’不个不cin.getlinestr120;^1*.!vt*k1*个个个个个不小个^^nor个个个个个个个个whilestrKLKLKLk1KE^个个个个个个个个^^rror个个个个个个个个ifstr[i]=astr[i]=str[i]-a+A;i++;cout«str«endl;return;.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp该程序运行时有错误,请改正错误,使程序正常运行,并且要求最后一个catch必须抛出执行的任何异常程序异常,输出信息为errorOERROR注意不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******errcr******的下面试题程序:#includeiostream.hintmaintrythrownerrorn;//7,7,7,7,7/不不不小不不不不error不不小不不不不不catchcharscout«s«endl;trythrowint0;catchcout«i«endl;trythrowO;throwerror;k|k!t个个个个个个个个^^nci•个个个个个个个个catchcout«nERRORn«endl;returnO;
五、综合应用题2题.使用VC++
6.0打开考生文件夹下的源程序文件
3.cpp其中定义了类BA、PA1和PA2其中PA1类由BA类公有派生,PA2类由PA1类公有派生上述3个类的定义并不完整,请按要求完成下列操作,将程序补充完整程序输出结果如下⑴定义类BA的构造函数,该构造函数有一个整型的参数m在构造函数中将m赋值给数据成员a0请在注释1之后添加适当的语句⑵定义类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;public7,7,7*77,T,、£7,777,7jq.q.〃・q.q.intgetb{returnb;}};classPA2publicPAlintC;public//*i**1**1*kJ**Jsi**Jk!kL*k!*1*1k!/rj*rj*voidshow//********4********};voidmainPA2a7510;cout«a.geta«endl;cout«a.getb«endl;a.show;
47.使用VC++
6.0打开考生文件夹下的源程序文件
3.cpp其中定义的类不完整,按要求完成下列操作,将类的定义补充完整每卖出一个水果,则计算水果的重量,还要计算所有卖出水果的总重量以及总个数,同时允许退货,请按照以下的操作,把类补充完整⑴定义类TCFruit的私有静态数据成员float型变量AllWeight和int型变量AHN0请在注释1后添加适当的语句2完成类TCFruit的带一个float型变量w的构造函数,并把这个w加到AUWeight中,并且AUNo自加请在注释2后添加适当的语句3在析构函数中,在在IWeight中减去weight然后析IN自减请在注释3后添加适当的语句4完成静态成员变量的初始化为0请在注释4后添加适当的语句注意增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码试题程序#includeiostream.hclassTCFruitprivate floatWeight;//k!*1*1**Jst*1kkLk!7,7,kL/I*T**T**T*rT*rr*staticintAHNo;public TCFruitfloatw//*1**1**1**1*vj*vt*vl*/q、J/卜.卜卜AllWeight+=w A11N0++:TCFruit//kI#vl*Kt*、1vt.!k9/q、,I、q、q,«、4q、q
4、«、AllWeight-=Weight voiddisplaycout«nSellaFruitwithn«Weight«nk9nendl;coutAllsellnumber H«AllNo«endl;cout«nAllsellweight n«AllWeight«nk9nendl«endl;};/I********4********D.派生类的对象的地址可以赋给指向基类的指针.下面关于break语句的描述中,不正确的是A.break可以用于循环体内.break语句可以在for循环语句中出现多次C.break语句可以在switch语句中出现多次D.break语句可用于if条件判断语句内表达式1056%3的值是A.-lB.非零值C.OD.
1.下列程序段的输出结果是#includeiostream.hvoidfunint*Xint*y{cout*X=3;*y=4;}voidmain{intx=ly=2;funyx;coutXyendl;}A.2143B.1212C.1234D.2112
二、单选题13题
11.有如下程序#include+usingnamespacestd;#includeusingnamespacestd;classBasepublic:floatTCFruitAllWeight=O.0;intmainTCFruitFruitl
1.2;Fruitl.display;TCFruitFruit
22.3;Fruit
2.display;returnO;
六、
3.综合应用题2题
48.使用VC6打开考生文件夹下的工程test32_3o此工程包含一个test32_
3.cpp其中定义了复数类complex但该类的定义并不完整请按要求完成下列操作,将程序补充完整1定义复数类complex的私有数据成员real和image用来分别表示复数的实部和虚部,它们都是double型的数据请在注释“〃**1***之后添加适当的语句2添加复数类complex的带一个参数的构造函数,分别将real和image赋值为参数r的值和
0.0请在注释“〃**2**”之后添加适当的语句⑶完成复数类complex的“+”运算符重载成员函数的定义,两个复数相加是将复数的实部和虚部分别进行相加,请在注释“〃**3**”之后添加适当的语句4完成复数类complex的友元函数isequalcomplex*clcomplex*c2的定义,如果复数C1与c2相等即C1与c2的实部和虚部分别相等,则返回1否则返回0请在注释“〃**4**”之后添加适当的语句程序输出结果如下36+0i=36+0i注意除在指定位置添加语句之外,请不要改动程序中的其他内容源程序文件test32_
3.cpp清单如下#includeiostream.hclasscomplexpublic:complex{real=image=O.O;complexdoubler〃**2**complexoperator+constcomplexc;friendboolisequalcomplex*clcomplex*c2voiddisplayO;;complexcomplex::operator+constcomplexc〃**3**temp.real=real+c.real;temp.image=image+c.image;returntemp;boolisequalcomplex*clcomplex*c2I/**4**return1;elsereturn0;voidcomplex::displayOcoutreal;ifimage=0coutimagei;elseifimage0coutimagenin;voidmaincomplexclc
236.0;cl=cl+c2;cl.displayO;ifisequalclc2coutelsecoatnn;c
2.display;coutendl;
49.使用VC6打开考生文件夹下的工程MyProjl3此工程包含一个源程序文件MyMainl
2.cppo程序中定义了两个类Base和Derived但类的定义并不完整请按要求完成下列操作,将类的定义补充完成
①定义类shapes的保护成员x和y它们都是整型变量请在注释“//**1**之后添加适当的语句
②完成构造函数shapesintdintw定义,使类shapes的保护成员x、y分别初始化为d、w并分别具有默认值
0、0请在注释“//**2**”之后添加适当的语句
③完成类shapes的成员函数setvalueintdintw的定义,shapes类的数据成员x和y分别被设置成d和wo请在注释“//**3**”之后添加适当的语句
④将类sh叩es的成员函数voiddisp设置成纯虚函数请在注释“//**4**”之后添加适当的语句注意除在指定位置添加语句之外,请不要改动程序中的其他内容源程序文件MyMainl
3.cpp清单如下//MyMainl
3.cpp#includeiostreamusingnamespacestd;classshapes〃***]***public〃***2***voidsetvalueintdintw〃***4***;classsquare:publicShapespublic voiddispcoutx*yendl;};intmainshapes*ptr;squaresi;ptr=s1;ptr-setvalue105;ptr-disp;return0;参考答案LB软件设计包括软件的结构设计、数据接口设计和过程设计其中软件结构设计主要包括系统由哪些子系统构成,以及这些子系统之间的关系是怎样的,并将这些内容编写成文档;数据接口设计的任务是为每个子系统设计其与其他子系统间的接口,并编写成文档,这个接口要是一个无二义的接口,不需要子系统的操作知识就可以使用;过程设计是指系统结构部件转换成软件的过程描述
2.B解析本题考核运算符的重载假定已经作为某个类的成员函数重载了二元运算符+且cl、c2都是该类的对象,则cl.operator+c2与cl+c2含义相同如果+作为该类的非成员函数重载,贝IJoperator+c1c2与cl+c2含义相同同理,运算符作为友元函数重载,则-x/y与表达式operator/--xy相同前缀运算符作为友元函数重载,则--X与operator--x相同,所以组合起来是operator/operator--xy;即B选项.D.D解析友元提供了不同类或对象的成员函数之间、类的成员函数与一般函数之间进行数据共享的机制类可以利用friend将一般函数、其他类成员函数或者其他类声明为友元友元的声明可以放在类的任何一个区域但是友元的实现不可以在类内部.C.C解析本题考核函数模板的使用对于C)选项,编译系统从3获得的信息是“T对应于inf.从
5.5处获得的信息是“T对应于double”,二者相互矛盾,在编译时会产生错误对于D)选项中紧跟在函数名后的<int>就是模板实参表,通过它通知编译系统在调用过程中,double型的参数
5.5将被自动换成int型.C解析友元函数的定义既可以在类内部进行也可以在类外部进行它提高了程序的运行效率,但破坏了类的封装性和隐藏性,使得类的非成员函数可以访问类的私有成员.DDo【解析】本题考查break语句的使用break可以结束switch语句和for循环语旬,但是不能使用在条件判断语句内.C解析逻辑与运算符为真的前提是两边的表达式都为真本题中6%3的值为0显然该表达式的值应该为0注意/是整除运算符,当两个操作数都为整数时,结果为整型,将小数部分舍去.A解析在fun函数中,x接收的是main函数中y的地址,所以*x值为2同样,*y值为1所以第1次输出的是21第2次改变*x的值等同于改变y的值,改变*y的值也即改变x的值,所以第2次输出的是43注意C++语言中函数的传参方式中关于指针的应用
11.B
12.D\r\n软件是与计算机操作相关的计算机程序、规程、规则,以及可能有的文件、文档及数据;软件开发要受到计算机系统的限制;软件是一个逻辑实体,不是物理实体,软件具有抽象性因此选项D正确
13.CCo【解析】基类中说明的虚函数,在派生类中自然就是虚函数,所以类B中fund是虚函数;而类A中的func2没有被关键字virtual修饰;所以不是虚函数
14.C
15.BBo【解析】eonst函数只能被eonst对象调用,a.get函数调用的返回值是3而b.get调用的返回值是
816.D解析静态数据成员必须在类体外初始化,它是类的所有对象的共有成员,需要使用类名调用,静态数据成员的初始化与权限控制无关
17.BBo【解析】根据题目,若以这种方式定义变量k时,编译程序仅为k开辟存储单元,并未在存储单元中存放任何初始值,所以变量中的值无意义,称变量值“无定义”所以正确答案为选项B
18.C本题考查的是考生对引用的掌握,ref实际上就是变量num的别名,所以ref=ref+2时,num已经变成了
319.A解析作为一个算法,一般应该具有下列4个特征
(1)可行性,即考虑到实际的条件能够达到一个满意的结果;
(2)确定性,算法中的每一个步骤都必须是有明确定义的,3有穷性,一个算法必须在有限的时间内做完;4拥有足够的情报
20.DDo【解析】本题考查for循环使用\r\n当i=3时,j可以取1和2i+j分别是4和5执行printf”\n”换行i—为2\r\n当i=2时,j可以取1和2i+j分别是3和4执行printf”\n”换行,」为1\r\n当i=l时,J可以取1和2i+j分别是2和3执行printff\n”换行,i-为0不符合循环,退出
21.A
22.CCo【解析】函数Demo为构造函数,而DemoconstDemox为复制构造函数C++在创建一个对象时,会自动调用类的构造函数,所以语句Demoad;将调用函数Demo2次当一个对象作为实参传递给函数时为初始化形参,要调用拷贝构造函数;在函数返回一个对象时调用拷贝构造函数由此可知语句dnuserCodea;调用拷贝构造函数3次
23.DAo【解析】C++流的输入运算符“”和输出运算符“vv”只能作为非成员函数重载重载输入流运算符“”须使用的原型是istreamoperator»istream类名;.Aaacaaq+l或caa+lAaaAaacaaq+l或caa+lAaao解析题中要求用aa初始化基类A用aa+1初始化类对象成员c用的初始化列表的形式,即Aaacaa+l或caa+lAaao.基类成员类对象成员非类对象成员基类成员\u3000类对象成员\u3000非类对象成员解析在派生类的初始化过程中,最先初始化的是基类对象,然后是其他类的对象成员,包括自身类对象的引用或指针或其他类的对象,最后在是非类对象成员析构的时候则反之.虚基类虚基类.数据结构数据结构.存储存储解析数据结构包括逻辑结构和物理结构(存储结构),逻辑结构包括集合、线性、树、网络等,而存储结构主要指的是逻辑结构的存储,包括顺序、链表、索引、散列等.交换排序交换排序解析常见的排序方法有插入排序(包括简单插入排序法和希尔排序法等)、交换排序(包括冒泡排序和快速排序法等)和选择排序(包括简单选择排序和堆排序等)注意常见的排序方法及其作用机制和区别.44解析static是局部静态变量,始终存在,实例化一个类就增加13Lb=a
[7]
32.边值分析法边值分析法
33.101020101020解析本题考核函数的引用传递“引用”实际上是给一个已知变量起个别名,对引用的操作也就是对被它引用的变量的操作函数funA的功能是将第二个实参的值乘以2再赋值给第一个实参(通过引用传递实现),函数funB的功能是将全局变量x加上4再赋值给第二个实参,同时x等于第一个实参与第二个实参相加的和
34.delete[]i
35.77解析本题主要考查C++中字符串函数的使用strcpy(sls2)将s2的内容赋值到si中;strcats1s2连接si和s2两个字符串;strlens返回字符数组s的长度因此最后输出的结果是b和c进行连接后的字符串长度,即
736.1应改为“TCTC”2应改为voidTCdisplay”⑶应改为“TC〜TC”【解析】在类的外部定义成员函数时,必须在成员函数前面加上类名和作用域运算符“”,作用域运算符用采表示某个成员属于哪个类使用格式为“类名成员函数〉参数函数,因此第1处应改为“TCTC”,默认构造函数没有参数由第2处“TCdisplay”后的语句看,这是在类外实现TC函数,因此也有作用域运算符使用错误问题,display函数返回值为void因此第2处的语句应改为“voidTCdisplay”由第3处的语句“TCTC”可知,显然这里是在类外实现析构函数,析构函数是一个特殊的函数,它的名称和类名相同,并在前面加“〜”字符,用采与构造函数加以区别,因此第3处的语句应改为“TC〜TC”
37.l“staticintn=O应改为staticintn;2“intCOn;”应改为intCOn=0;34tcout«c.n«endl;应改为cout«c-nvendl;voidfun{cout«nBase::funn;classDerived:publicBasepublic:voidfuncout«nDerived::funn;intmainDerivedd;d.fun;return0;已知其执行后的输出结果为Base::funDerived::fun则程序中下划线处应填入的语句是A.Base.funQ;B.Base::funC.Base-funD.fun;
12.下列描述中正确的是A.程序就是软件B.软件开发不受计算机系统的限制C.软件既是逻辑实体,又是物理实体D.软件是程序、数据与相关文档的集合
13.对于类定义classA{public virtualvoidfuncl{}【解析】本题要在屏幕上输出两个字符,首先要静态变量初始化,第1处应改为“staticintn;,第2处要给n赋值,第3处输出时引用c的对象,应改为coutv〈c-nendl;
38.1应添加“public:\n2“inti”应改为“inti10;\n3“i++;”应改为“i—;\n【解析】本题主要考查的是成员的访问属性成员的访问属性有公有、保护和私有3种,而默认的访问属性为私有,只有公有成员才能通过类的对象被访问故应在构造函数前添加“public:,否则该类无法被实例化变量的初始化可以通过“=”号,也可以和初始化对象一样添加构造参数,题目已要求使用后者本题要求输出5个数,while的循环变量i每次减1在i5时循环,故i初始化应为10若循环中i每次增1则循环永远不会退出
39.1应改为“ein.getlinestr120;\n2应改为whilestr[i]”\n3应改为ifstr[i]=astr[i]=2o\n【解析】本题中要求以输入字符“”为结束符,用于字符输入的流成员函数getline函数读入一行字符,格式为“cin.getline字符数组,字符个数,终止标志字符字所以第1处改为“cin.getlinestr120;第2处的“whilestr”语句应该是判断字符串str中的每一个字符是否为结束符,若不是结束符在循环中判断每一个字符是否为小写,若为小写,则转换所以应该修改为“whilestr[i]”第3处的“ifstr[i]=a”语句是判断字符str用是否为小写字符而现有的语句只是判断字符是否大于a但是小写字符应该是a到2所以修改为“ifst巾]=astr[i]=zo.1应改为assertsizeofsl==4;\n2应改为assertsizeofs2尸=10;\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所以修改为4assertsizeofs3==l;”.1应改为TCobjll;\n2应改为“Objl.SetNumber10;\n3应改为“0bj
2.SelNumberlOO;\n[解析】本题第1处的“TCobjl;”语句是声明TC类的对象Objl根据TC类构造函数的定义TCinti存在整型参数,并且题目要求第一个输出结果两1所以补全参数1即第1处的“TCobjll;第2处处的“objl.number=10;”应该是调用成员函数SetNumber赋值在C++中成员函数的使用形式应该是对象名.成员函数,所以修改为“objl.SetNumberlO;类是对象的抽象,而对象是类的具体实例第3处叮05©141111由©110;”语句中的1^为类,并不是对象,这里应该使用定义的对象,即obj2所以将语句修改为“obj
2.SetNumberlOO;.1应改为catchchar*s”2应改为catehinti”3应改为catch…”【解析】本题中第1个标识前的异常抛出语句为“throwerror”;,其中的类型为字符串所以对应的异常捕捉语句catch中应该符合这个类型,而程序中给出的语句“catchchars”是字符型的,所以第1处的语句修改为“catchchar*S”第2个标识前的异常抛出语句为44throwint0;,其中的类型为int对应的异常捕捉语句catch中应该符合这个类型,所以补充catch子句中的类型,否则如果找不到匹配的catch块,系统就会调用一个系统函数,使程序终止运行即第2处的语句修改为“catchinti”如果在catch子句中没有指定异常信息的类型,那么就用删节号“…”表示它可以捕捉任何类型的异常信息,即修改为“catch…”
43.ltvoidmaino2“intm=0144;3“intn=OX25;”或“intn===0x25;”【解析】本题主要考查了主函数定义及幕同进制之间的转换,包括十进制到八进制,十进制到十六进制主函数定义的定义形式为“main”,函数名之后必须是一对括号,因此第1处应改为“voidmain”cout输出默认是以十进制方式输出的,根据题目要求输出的结果可发现变量的初值不正确,十进制的100对应八进制的144卡进制的37对应十六进制的25因此2和3应分另U改成“intm=0144;”,uintn=0x25;”或“intn=025;
44.1应改为“ein.getlinestr120;⑵应改为“whilestr[i]°3应改为“ifstr[i]=astr[i]=2【解析】本题中要求以输入字符“”为结束符,用于字符输入的流成员函数getline函数读入一行字符,格式为“cin.getline字符数组字符个数终止标志字符”所以第1处改为“cin.getlinestr120;第2处的“whilestr”语句应该是判断字符串str中的每一个字符是否为结束符,若不是结束符,在循环中判断每一个字符是否为小写,若为小写,则转换所以应该修改为“whilestr[i]”第3处的“ifstr[i]=a”语句是判断字符str用是否为小写字符,而现有的语句只是判断字符是否大于a但是小写字符应该是a到2所以修改为uifstr[i]=astr[i]=zo
45.1应改为catchchar*s”⑵应改为“catehinti”3应改为catch...°【解析】本题中第1个标识前的异常抛出语句为“throwerror;,其中的类型为字符串所以对应的异常捕捉语句catch中应该符合这个类型,而程序中给出的语句“catchchars”是字符型的,所以第1处的语句修改为“catchchar*S”第2个标识前的异常抛出语句为uthrowint0;,其中的类型为int对应的异常捕捉语句catch中应该符合这个类型,所以补充catch子句中的类型,否则如果找不到匹配的catch块,系统就会调用一个系统函数,使程序终止运行即第2处的语句修改为“catchinti”如果在catch子句中没有指定异常信息的类型,那么就用删节号“…”表示它可以捕捉任何类型的异常信息,即修改为“catch…”
46.⑴应添加“BAintm{a=m;}”2应添加“PAlintmintn BAn{b=m;}”3应添力H“PA2intmintnintk PAlnk{C=m;”4应添力口“coutvvgetavvgetbvvC«endl;【解析】根据第1处要求,构造函数的函数名和类名一致,显然BA构造函数的名称为BA在BA中通过参数m完成对成员变量a的赋值,因此构造函数的名称为BAintm在函数内部对成员a赋值,故第1处的语句应添加“BAintm{a=m;”根据第2处的要求,构造函数的形式为“PAlintmintn”,m赋值给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处应添力rcoutvgeta«”vvgetbvv”yvC«endl;
47.1应添力ITstaticfloatAllWeight;2应添力口“Weight=w;⑶应添加TAllNo—;4应添加“intTCFruitAllNo=0;【解析】静态数据成员声明时需使用关键字static因此第1处应添加44staticfloatAllWeight;50构造函数用来对类成员进行初始化,在TCFruit类的构造函数TCFruitfloatw中,完成weight的初始化,并把这个w加到AllWeight中,并且AllNo自加,因此第2处应添加“weight=w;调用析构函数相当于退出,这时AllWeight中减去weight然后AllNo自减因此第3处应添加“AllNo-;静态数据成员的初始化格式为“〈数据类型〉类名〉静态数据成员=初始值”,因此第4处应添加“intTCFruitAllNo=0;.1doublerealimage;2real=r;image=
0.0;3complextemp;4ifcl-real==c2-realcl-image==c2-imagel\r\ndoublerealimage;\r\n2\r\nreal=r;\r\nimage=
0.0;\r\n3\r\ncomplextemp;\r\n4\r\nifcl-real==c2-realcl-image==c2-image解析本题主要考查了类的定义、类构造函数的重载、运算符重载和友元函数等知识点特别是在重载运算符中临时复数类的申请,相加的两个复数实部与虚部数值的获取,都是需要牢记的,这是运算符重载函数编写的核心所在.voidfunc2{};classB publicA{public voidfunci{coutclassBfunc1endl;}virtualvoidfunc2{coutclassBfunc2endl;};下面正确的叙述是A.Afunc2和Bfund都赵虚函数B.Arune2和Bfund都不是虚函数C.B::func1是虚函数,而Afune2不是虚函数D.Bfund不是虚函数,而Afunc2是虚函数.多继承的构造顺序可分为如下四步
①所有非虚基类的构造函数按照它们被继承的顺序构造
②所有虚基类的构造函数按照它们被继承的顺序构造
③所有子对象的构造函数按照它们声明的顺序构造
④派生类自己的构造函数体这四个步骤的正确顺序是A.
④③①②B.
②④③①C.
②①③④D.
③④①②.有如下程序#includeiostreamusingnamespacestd;classPair{intmn;public;Pairintjintk mjnk{}intget{returnm;}intgetconst{returnm+n;}};intmain{Paira35;constPairb35;cout«a.get«b.get;returnO;运行时的输出结果是A.33B.38C.83D.
88.下面对静态数据成员的描述中,正确的是A.静态数据成员可以在类体内进行初始化B.静态数据成员不可以被类的对象调用C.静态数据成员不能受private控制符的作用D.静态数据成员可以直接用类名调用.若函数中有定义语句“intk则A.系统将自动给k赋初值0B.这时k中的值无定义C.系统将自动给k赋初值D.这时k中无任何值.下面程序的运行结果是()#includeiostream.hvoidmainintnum=l intref=num;ref=ref+2cout«num num=num+3cout«ref«endl A.13B.16C.36D.
33.下列选项中,不是一个算法的基本特征的是0A.完整性B.可行性C有穷性D.拥有足够的情报.有下列程序#includestdiO.hvoidmain{intij;fori=3;i=l;i—{forj=l;j=2;j++printf%d”i+j;printf\n;程序的运行结果是oA.234B.43234554334C.23D.
4534342323.下列运算符中哪些是不能够被重载的?A..*:B.++—newdelete==C.sizeofnewdelete++—D.sizeofnewdelete+-.有如下程序#includeiostream.husingnamespacestd;classDemopublic Demo{cout«ndefaultconstructor\nn;}DemoconstDemox{cont«ncopyconstruc-tor\n;}};DemouserCodeDemob{Democb;retumC;}intmainDemoa;d;cout«ncallinguserCode\n”;d=userCodea returnO;执行上面程序的过程中,构造函数Demo和DemoconstDemOx被调用的次数分别是A.1和1B.1和2C.2和3D.2和
4.重载输人流运算符>>必须使用的原型为()A.istreamoperator»(istream〈类名〉);istreamoperator»(istream<类名〉);C.istreamoperator»(istream〈类名〉);口.<类名>(^侬0»出仃62111〈类名〉);
三、
2.填空题(12题)
24.请按下面注释的提示,将类B的构造函数定义补充完整classA{inta;public A(intaa=O){a=aa;));ClassB publicA(intb;Ac;public:〃用aa初始化基数A用aa+1初始化类对象成员cB(intaa):(b=aa+2));。