《C++面向对象程序设计模拟试题一(34页).doc》由会员分享,可在线阅读,更多相关《C++面向对象程序设计模拟试题一(34页).doc(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-C+面向对象程序设计模拟试题一一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个备选项中,只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。1说明虚函数的关键字是( )。A. inlineB. virtualC. defineD. static2在每个C+程序中都必须包含有这样一个函数,该函数的函数名为( )。A. main B. MAIN C. name D. function3cout是某个类的标准对象的引用,该类是( )。A. ostreamB. istreamC. stdoutD. stdin4如果在类外有函数调用CPoint:f
2、unc();则函数func()是类CPoint的( )。A. 私有静态成员函数B. 公有非静态成员函数C. 公有静态成员函数B. 友元函数5. 如果class类中的所有成员在定义时都没有使用关键字public、private或protected,则所有成员缺省定义为( )。A. public B. protected C. private Dstatic 6一个类的所有对象共享的是( )。A. 私有数据成员B. 公有数据成员C. 保护数据成员D. 静态数据成员7动态联编所支持的多态性称为( )。A. 虚函数B. 继承C. 编译时多态性D. 运行时多态性8定义类模板时要使用关键字( )。A. c
3、onstB. newC. deleteD. template9对虚基类的定义( )。A. 不需要使用虚函数B. 必须使用虚函数C. 必须使用privateD. 必须使用public10类型转换函数( )。A. 不能带有参数B. 只能带一个参数C. 只能带2个参数D. 只能带3个参数二、判断正误题(本大题共6小题,每小题2分,共12分)判断正误,在题后的括号内,正确的划上“”错误的划上“”。1虚函数在基类和派生类之间定义,且要求函数原型完全一致。( )2抽象类可以用来直接创建对象。( )3内联函数中可以出现递归语句。( )4模板类与类模板的意义完全相同。( )5常对象只能调用常成员函数。( )6
4、重载函数要求函数有相同的函数名,但具有不同的参数序列。( )三、填空题(本大题共6小题,每小题2分,共12分)不写解答过程,将正确的答案写在每小题的空格内。错填或不填均无分。1在用C+进行程序设计时,最好用( )代替malloc。2函数模板中紧随template之后尖括号内的类型参数都要寇以保留字( )。3编译时多态性可以用( )函数实现。4拷贝构造函数用它所在类的( )作为参数。5用关键字static修饰的类的成员称为( )成员。6重载运算符“+”的函数名为( )。四、程序分析题(本大题共4小题,每小题5分,共20分)给出下面各程序的输出结果。1阅读下面程序,写出输出结果。#include
5、using namespace std;class CArraypublic:CArray(int iArray, int iSize):m_pArray(iArray), m_iSize(iSize)int GetSize()return m_iSize;int &operator(int iIndex)return m_pArrayiIndex - 1;private:int *m_pArray;/ 指向一个数组空间int m_iSize;/ 数组元素个数;int main()int s=3, 7, 2, 1, 5;CArray oArray(s, 5);oArray1 = 9;for (
6、int i = 1; i = 5; i+)cout oArrayi ;cout endl;return 0;上面程序的输出结果为:2阅读下面程序,写出输出结果。#include using namespace std;template void Print(Type a, int n)for (int i = 0; i n; i+)cout ai ;int main()int a = 5, 6, 8;double b = 6.8, 9.6;Print(a, sizeof(a) / sizeof(int);Print(b, 2);cout endl;return 0;上面程序的输出结果为:3阅读
7、下面程序,写出输出结果。#include using namespace std;class CTestpublic:CTest(int iVar):m_iVar(iVar)m_iCount+;CTest()void Print() const;static int GetCount()return m_iCount;private:int m_iVar;static int m_iCount;int CTest:m_iCount = 0;void CTest:Print() constcout m_iVar m_iCount ;int main()CTest oTest1(6);oTest1
8、.Print();CTest oTest2(8);oTest2.Print();cout CTest:GetCount();cout endl;return 0;上面程序的输出结果为:4阅读下面程序,写出输出结果。#include using namespace std;class CTestpublic:CTest(int iX = 0, int iY = 0, int iZ = 0):m_iZ(iZ)m_iX = iX;m_iY = iY;void Print()cout m_iX endl;cout m_iY endl;void Print() constcout m_iZ endl;p
9、rivate:int m_iX, m_iY;const int m_iZ;int main()CTest oTest1;oTest1.Print();CTest oTest2(1, 6, 8);oTest2.Print();const CTest oTest3(6, 0, 18);oTest3.Print();cout endl;return 0;上面程序的输出结果为:五、程序改错题(本大题共4小题,每小题5分,共20分)指出下面程序中的错误,说明错误原因,并加以改正。1下面程序中类的定义中有一处错误,请指出出错的行,说明错误原因,并加以改正。#include /1using namespac
10、e std;/2/3class CTest/4/5public:/6CTest(int iVar = 0):m_iArr(iVar)/7/8cout 构造函数: m_iArr endl;/9/10/11void CTest()/12/13cout 析造函数: m_iArr endl;/14/15/16private:/17int m_iArr;/18;/19/20/21int main()/22/23CTest oTest1, oTest2(8);/24cout endl;/25/26return 0;/27/282下面程序中类的定义中有一处错误,请指出出错的行,说明错误原因,并加以改正。#i
11、nclude /1using namespace std;/2/3class CTest/4/5public:/6CTest(int iA = 0, int iB):m_iA(iA), m_iB(iB)/7/8/9/10void Show()/11/12cout m_iA , m_iB endl;/13/14/15private:/16int m_iA, m_iB;/17;/18/19/20int main()/21/22CTest oTest(12, 16);/23oTest.Show();/24cout endl;/25/26return 0;/27/283下面程序中类的定义中有一处错误,
12、请指出出错的行,说明错误原因,并加以改正。#include /1using namespace std;/2/3class CTest/4/5public:/6CTest(int iVar = 0)/7/8m_iVar = iVar/9/10/11void Print() const/12/13cout m_iVar endl;/14/15/16private:/17const int m_iVar;/18;/19/20/21int main()/22/23const CTest oTest(16);/24oTest.Print();/25cout endl;/26/27return 0;/2
13、8/294下面程序中有一处错误,请指出出错的行,说明错误原因,并加以改正。#include /1using namespace std;/2/3class CBase/4/5public:/6CBase(int iBase = 0):m_iBase(iBase)/7/8/10/11virtual void Show() = 0;/12/13int Get() const/14/15return m_iBase;/16/17/18private:/19int m_iBase;/20;/21/22class CDerive:public CBase/23/24public:/25CDerive(i
14、nt iBase = 0, int iDerive = 0):CBase(iBase)/26/27m_iDerive = iDerive;/28/29/30void Show()/31/32cout CBase:Get() , m_iDerive endl;/33/34/35private:/36int m_iDerive;/37;/38/39int main()/40/41CBase obj(10);/42obj.Show();/43return 0;/44/45六、编程题(本大题共2个小题,每小题8分,共16分)1编写一个函数模板,用于求参数的绝对值,并编写测试程序进行测试。函数模板声明如
15、下:template Type Abs(Type tVar)2定义一个复数类CComplex,定义带有2个参数(其中一个为缺省参数)的构造函数,显示复数值的函数Show(), 重载“+”运算符(用成员函数实现),并编写测试程序进行测试。C+面向对象程序设计模拟试题一参考答案一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个备选项中,只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。1B2A3A4C5C6D7D8D9A10A二、判断正误题(本大题共6小题,每小题2分,共12分)判断正误,在题后的括号内,正确的划上“”错误的划上“”。1参考答案
16、:2参考答案:3参考答案:4参考答案:5参考答案:6参考答案:三、填空题(本大题共6小题,每小题2分,共12分)不写解答过程,将正确的答案写在每小题的空格内。错填或不填均无分。1参考答案:new2参考答案:class或typename3参考答案:重载4参考答案:对象5参考答案:静态6参考答案:operator+四、程序分析题(本大题共4小题,每小题5分,共20分)给出下面各程序的输出结果。1参考答案:9 7 2 1 52参考答案:5 6 8 6.8 9.63参考答案:6 1 8 2 24参考答案:001618五、程序改错题(本大题共4小题,每小题5分,共20分)指出下面程序中的错误,说明错误原
17、因,并加以改正。1参考答案:出错行:第12行原因:析造函数不能有返回值类型改正:去掉void2参考答案:出错行:第7行原因:带缺省值的参数应放在参数表的尾部,其后不允许出现不带缺省值的参数改正:CTest(int iA = 0, int iB = 0):m_iA(iA), m_iB(iB)/7或CTest(int iA , int iB = 0):m_iA(iA), m_iB(iB)/7或CTest(int iA , int iB):m_iA(iA), m_iB(iB)/73参考答案:出错行:第9行原因:常数据成员只能通过初始化表方式进行初始化。改正:去掉第9行,在第7行后加初始化表,即第9行
18、改为:CTest(int iVar = 0):m_iVar(iVar)/74参考答案:出错行:第42行原因:抽象类不能用来直接创建对象。改正:将第42行改为: CDerive obj(10);/42六、编程题(本大题共2个小题,每小题8分,共16分)1参考程序: #include using namespace std;template Type Abs(Type tVar)if (tVar = 0) return tVar;else return -tVar;int main()cout Abs(5) endl;cout Abs(-5) endl;cout Abs(2.5) endl;cou
19、t Abs(-2.5) endl;return 0;2参考程序: #include using namespace std;class CComplexpublic:CComplex(double dReal, double dImage = 0)m_dReal = dReal;m_dImage = dImage;void Show()cout 0)cout + m_dImage i endl;else if(m_dImage 0)cout - -m_dImage i endl;CComplex operator+(const CComplex &obj)CComplex objTemp(m_dReal + obj.m_dReal, m_dImage + obj.m_dImage);return objTemp;private:double m_dReal, m_dImage;int main()CComplex obj1(2, 6), obj2(3, 8), obj3(0);obj1.Show();obj2.Show();obj3.Show();obj3 = obj1 + obj2;obj3.Show();return 0;第 35 页-