您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页C++程序设计练习试卷1(题后含答案及解析)

C++程序设计练习试卷1(题后含答案及解析)

来源:华佗小知识
C++程序设计练习试卷1 (题后含答案及解析)

题型有:1. 选择题

选择题(每小题1分,共75分)下列各题ABCD四个选项中,只有一个选项是正确的,请将此选项涂写在答题卡相应位置上,答在试卷上不得分。

阅读下列说明和C++代码,回答问题。 [说明] 已知下列程序运行时的输出应为: 1:1 1:1 1:1 [C++程序] 01 #include iostream 02 using namespace std; 03 class stick{ 04 protect; 05 _________ {}; 06 Stock(int n, int pr=1) { 07 shares=n; share_val=pr; 08 }; 09 voidstock( ) {}; 10 public: 11 //成员函数 12 void output( ){ 13 ________ <<shares<<:<<share val<<endl; 14 } 15 private: 16 //成员变量 17 int shares; 18 int share_val; 19 }; 20 21 void main( ){ 22 Stock a(1); a. output( ); 23 Stock b; b. output( ); 24 Stock C=Stock( ); c.output( ); 25 }请补齐上述代码中的空缺(1)(2)

1 __________

正确答案:Stock( ):shares(1),share_val(1)Stock( ):share_val(1),shares(1)Cout 涉及知识点:C++程序设计

2 Stock的定义中有两处错误,请指出错误所在行号并给出该行修改后的完整结果。

正确答案:第4行,修改为:public:第9行,修改为:~Stock( ){}涉及知识点:C++程序设计

3 指出该代码是否存在内存泄漏。

正确答案:不存在内存泄漏

解析:由题中程序可知类Stock有默认的构造函数,且该构造函数将初始化类中一些成员变量,所以(1)处应该为Stock的构造函数。成员函数output用于输出成员变量的值,所以(2)处应为cout。对于[问题2]由于类至少有一个公共的构造函数,所以第4行的protect应该改为public,而析构函数不能有返回值,所以第9行应该去掉void。对于[问题3]main函数中类的使用没有通过new操作符生成Stock类的对象,所以不存在内存泄漏 知识模块:C++程序设计

4 阅读以下说明和C++代码,填补空缺。[说明] C++标准模板库中提供了vector模板类,可作为动态数组使用,并可容纳任意数据类型,其所属的命名空问为stdvector模板类的部分方法说明如表12-3所示。表12-3 vector模板类的部分方法 [C++代码] #includeiostream #includevector using namespace ______ ; typedef vector ______ INTZECTOR; const int ARRAY_SIZE=6; void ShowVector(INTVECTOR & theVector); int main( ) { INTVECTOR theVector; //初始化theVector,将theVector的元素依次设置为05 for (int cEachItem=0; cEachItemARRAY_SIZE; cEachItem++) theVector. push_back( ______ ); ShowVector(theVector); //依次输出theVector中的元素 theVector. erase(theVector. begin( )+3); ShowVector(theVector); } void ShowVector(INTVECTOR & theVector) { if(theVector. empty( )) { cout<<theVector is empty. <<endl; return; } INTVECTOR::iterator ______ ; for(theIterator = theVector.begin( ); theIterator != theVector.end( ); theIterator++){ cout<< *theIterator; if(theIterator ! =thevector. end( )-1)cout<<,; } cout<<endl; } 该程序运行后的输出结果为: 0, 1 , 2, 3, 4, 5 ______

正确答案:stdintcEachItemtheIterator01245

解析:本题考查的是C++语言的基本应用。在使用C++标准库中的对象时,要引入标准的命名空间,空(1)处应为std,空(2)处是用来指定vector对象的类型,此处应为int,空(3)处是将循环变量的值存入theVector中,所以应为cEachItem,空(4)处代码主要是循环输出theVector对象的内容,因此应为定义迭代器变量theIterator。程序开始会输出012345,再次输出时则为01245 知识模块:C++程序设计

5 阅读下列说明、图和C++代码,填补空缺。[说明] 已知对某载客车辆(Car)进行类建模,如图12-2所示,其中类Engine表示发动机引擎,类Wheel表示车轮,类Body表示车身,类Driver表示司机,类Passenger表示乘客。const int __________ =7; //定义最多载客数 const int MAX_WHEELS=5; //定义最多轮胎数 class Body{ //此处代码省略 ); //车身类 class Passenger{ //此处代码省略}; //乘客类 Class Wheel{ //此处代码省略}; //车轮类 Class Driver{ //司机类 public string name; //表示第几路公交车司机 Driver(string driverName)marne( __________ ){}; //构造函数 }; class Engine{ //引擎类 public string engineNo; //引擎编号 Engine(string engineNo){ __________ -engineNo=engineNo; } //构造函数 }; Class Car{ //汽车类 protected: Engine *engine; Driver *driver; Body body; Wheel *wheels[MAX_WHEELS]; Passenger *passengers[MAX_PASSENGERS]; public Car(Driver *driver)( //构造函数 this-driver=driver; engine=new Engine(TX653 6型号引擎); for(int index=0; indexMAX_WHEELS; index++){ wheels[index]=new Wheel( ); } for(int index=0; index passengers[index]=NULL; } } virtual -Car( ){ //析构函数 for (int index=0; indexMAX_WHEELS; index++) delete wheels[index]; delete __________ ; } int getPassengerNumber( ){ //获取车上乘客数量 //此处代码省略 } void getonpassenger(Passenger *apassenger ){ //乘客上车 //此处代码省略 } void run( ){ //开车 if(driver==NULL){cout<< 司机尚未上车!; return; } //此处代码省略 } }; void main( ){ Driver driver(第五路公交车司机); Car car( __________ ); Passenger passengers[MAX_PASSENGERS]; for(int index=0; indexMAX_PASSENGERS; index++) //乘客上车处理 car. getOnPasSenger(&passengers[index]); car. run( ); }

正确答案:MAX_PASSENGERSdriverNamethisengine&driver

解析:根据类图描述,分析可得:一辆汽车可以载07名乘客,一辆汽车可以被一个或者多个司机驾驶,并且一辆汽车有45个轮胎,一个引擎和一个车框架。程序代码中空(1)处表示一辆汽车最多载客数目,从后面的程序代码分析可得,应该填写MAX_PASSENGERS。空(2)处用于构造一个司机对象,需要司机名称driverName作为参数。空(3)处主要设置车的假设司机,由于参数的名称与成员变量的名称相同,因此需要加上this以示区别。空(4)处所对应代码段是汽车car的析构函数,与car的构造函数相对应,需要将构造函数中创建的引擎和车轮删除,所以空(4)处应为删除引擎。空(5)处用于产生一个汽车对象,所以,需要给汽车对象传递合适的参数,构造方法中需要传递一个司机对象,因此应该将driver对象传递到汽车对象中。 知识模块:C++程序设计

阅读下列说明、图和C++代码,回答问题。 [说明] 已知四个类之间的关系如图12-3所示,分别对每个类的方法进行编号,例如,Shapeperimeter( )方法为1号,表示为“1:perimeter( )”,Rectangle类的perimeter( ) 2号,表示为“2:perimeter( )”,依此类推,其中,每个类的perimeter方法都为虚函数且方法签名相同。[C++代码] Triangle *tr=new Triangle( ); Square *sq=new Square( ); Shape *sh=tr;

6 关于上述C++代码中shtr的以下叙述中,哪两个是正确的(写出编号)? shtr分别引用同一个对象; shtr分别引用同一类型的不同的对象; shtr分别引用不同类型的不同对象; shtr分别引用同一个对象的不同复制; shtr所引用的内存空间是相同的。

正确答案:①⑤ 涉及知识点:C++程序设计

7 写出下面消息对应的方法编号(如果该消息错误或者没有对应的方法调用,请填写“无”)tr-height( )

正确答案:3 涉及知识点:C++程序设计

8 sh-perimeter( )

正确答案:5 涉及知识点:C++程序设计

9 sq-height( )

正确答案:无 涉及知识点:C++程序设计

10 sq-perimeter( )

正确答案:4 涉及知识点:C++程序设计

11 sh-height( )

正确答案:无 涉及知识点:C++程序设计

12 tr-perimeter( )

正确答案:5 涉及知识点:C++程序设计

13 不考虑内存释放问题,下列赋值语句中哪两个是合法的(写出合法赋值语句的编号) sq=sh;②sh=tr;③tr=sq;④sq=tr;⑤sh=sq

正确答案:②⑤ 涉及知识点:C++程序设计

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务