《2022年面向对象程序设计模拟试卷.docx》由会员分享,可在线阅读,更多相关《2022年面向对象程序设计模拟试卷.docx(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选学习资料 - - - - - - - - - 面对对象程序设计模拟试卷一一. 单项题 15;1. 关于构造的表达 _正确 : A. 最先构造虚基类 B. 最先构造基类C. 最先构造派生类的对象成员 D. 都不对2. 关于静态数据成员的表达 _正确 : A. 公有的可在类体外初始化 C. 私有和爱护的不能在类体外初始化B. 私有的不能在类体外初始化 D. 都可以且必需在体外初始化3. 如派生类函数不是基类的友元,关于该函数拜访基类成员 _正确 : A. 公有的可被派生类函数拜访B. 都可以被派生类函数拜访C. 公有和爱护的可被派生类函数拜访 D. 都不对4. 关于函数的全部缺省参数的表达 _
2、正确 : A. 只能显现在参数表的最左边B. 只能显现在参数表的最右边C. 必需用非缺省的参数隔开 D. 都不对5. 使用 friend 、virtual 、static 说明函数的表达 _正确 : A. 必需同时使用三个 B. 只能同时用其中两个C只能独立单个地使用 D. 都不对二. 指出各类的成员及其存取属性 20 ;class A class C: A int a; int g; protected: protected: int b; int h; public: public: int c; int i; ; ; class B: protected A class D: B, C
3、int d; int j; protected: protected: int e; B:b; public: int k; A:c; private: int f; int n; ; ; 三. 指出 main 中每行的输出结果 20 ;#include struct AA coutA; ;struct BB coutB; ;struct C: AC coutC; ;struct D: virtual B, CD coutD; ;struct E: A C c; E : c coutE ; ;1 / 11 名师归纳总结 - - - - - - -第 1 页,共 11 页精选学习资料 - - -
4、 - - - - - - struct F: virtual B, C, D, E F coutF ; ;void main A a; coutn ; B b; coutn ; C c; coutn ; D d; coutn ; E e; coutn ; F f; coutn ; 四. 指出以下程序的语法错误及其缘由 15 ;class A static int a=0 ;protected: int b;public: int c; Aint ; operator int ; a1, 2 ;class B: A Bint ; virtual int d ; int e;public: A:b
5、 ; friend int operator =B ; static Bint, int ; b=5 ;class C: B public: int operator+double ;int main int *A:*p, i ; i=a.a;i=A4 ;i=b.c ;p=&A:c ;i=b ;return ; 五. 指出 main 变量 i 在每条赋值语句执行后的值 15 ;2 / 11 名师归纳总结 - - - - - - -第 2 页,共 11 页精选学习资料 - - - - - - - - - int x=2, y=x+30 ;struct A static int x ; int y
6、;public: operator int return x-y ; A operator +int return Ax+, y+; Aint x=:x+2, int y=:y+3 A:x=x; A:y=y ; int &hint &x;int &A:hint &x forint y=1 ; y.=1| x200 x-=21; y-=2 ; return x-=10 ; int A:x=23 ;void main A a54, 3, b65, c ; int i, &z=i, A:*p=&A:y; z=b.x; i=a.x; i=c.*p ; i=a+ ; i=:x+c.y ; i=a+b;
7、b.hi=7 ; 六. 为了没有误差地表示分数,定义类 FRACTION 来表示分数,请编程实现分数类中的除cmd 外的全部函数 15;class FRACTION / 对于 7 6 ,numerator 存分子 6,denominator 存分母 7 int numerator, denominator ;static int cmdint x, int y ;/求整数x,y 的最大公约数public: /大于比较,例6 3int operatorconst FRACTION&const;FRACTIONint num, int den=1;/num、 den各为分子和分母FRACTION
8、operator*const ;30 /分数约简, * 365 = 662 + 332 = 21FRACTION operator+const FRACTION&const;/加法,7FRACTION operator*const FRACTION&const;/乘法,6*2 = 214 = 77;int FRACTION:cmdint x, int y int r;ifxy r=x; x=y; y=r ; 3 / 11 名师归纳总结 - - - - - - -第 3 页,共 11 页精选学习资料 - - - - - - - - - whiley.=0 y=x%r=y; x=r ; retur
9、n x; 面对对象程序设计模拟试卷二一单项挑选题(从以下各题四个备选答案选出一个正确答案,并将其代号填在题干前的括号内;答案选错或未作挑选者,该题不得分;每道题 1 分,共 10 分)()1以下有关析构函数的表达,挑选正确的填入括号内;A. 可以进行重载可以定义为虚函数 B. 不能进行重载可以定义为虚函数 C. 可以进行重载不能定义为虚函数 D. 不能进行重载不能定义为虚函数()2以下有关函数缺省参数的显现位置,挑选正确的表达填入括号内;A. 必需全部显现在函数参数表的左部 B. 必需全部显现在函数参数表的右部 C. 必需全部显现在函数参数表的中间 D. 都不对()3关于两个同名函数重载的表达
10、,挑选最为正确的填入括号内;A. 两个函数的参数个数不同 B. 两个函数对应的参数类型不同 C. 两个函数的参数个数不同或对应的参数类型不同 D. 都不对()4关于 inline 保留字的用途,挑选正确的表达填入括号内;A. 只能用于定义成员函数 B. 只能用于定义非成员函数 C. 可以定义成员函数及非成员函数 D. 都不对()5关于类的构造函数的定义位置,将最为正确的表达填入括号内;A. 只能在 private 下定义 B. 只能在 protected 下定义 C. 只能在 public 下定义 D. 定义位置没有限制()6如下修饰类体中函数的返回类型,将正确的用法填入括号内;A. 同时使用
11、 static 和 friend B. 同时使用 static 和 virtual C. 同时使用 friend 和 virtual D. 不同时使用上述三个保留字中的任意两个()7在如下关于继承的表达中,挑选正确的填入括号内;A. 私有继承用于实现类之间的 ISA 关系 B. 爱护继承用于实现类之间的 ISA 关系 C. 公有继承用于实现类之间的 ISA 关系 D. 都不对()8对于用 union 定义的类 A,挑选正确的表达填入括号内;4 / 11 名师归纳总结 - - - - - - -第 4 页,共 11 页精选学习资料 - - - - - - - - - A. 类 A 可以作为某个类
12、的基类B. 类 A 可以作为某个类的派生类C. 类 A 既不能作基类又不能作派生类D. 类 A 既可以作基类又可以作派生类()9有关在类中声明友元函数的表达,将正确的答案填入括号内;A. 只能在 private 下声明B. 只能在 protected 下声明C. 只能在 public 下声明D. 声明位置没有限制()10在构造派生类 A 的对象时,挑选正确的表达填入括号内;A. 最先构造派生类 A 的基类B. 最先构造派生类 A 的虚基类C. 最先构造派生类 A 的数据成员对象D. 都不对二多项挑选题(从以下各题四个备选答案选出二至四个正确答案,并将其代号填在题干前的括号内;答案选错或未选全者
13、,该题不得分;每道题2 分,共 10 分)D. = D. ()11将符号为分隔符的编号填入括号内;C. A. m B. + ()12将用于定义类的保留字的编号填入括号内;C. int A. class B. struct union ()13将用于释放 p=new int8 的内存的编号填入括号内;A. freep B. delete p C. delete p D. sizeof p ()14将派生类成员函数可拜访的基类成员编号填入括号内;A. private B. protected C. public D. 全部成员()15将不能重载的运算符函数的编号填入括号内;A. . : B. :C
14、. % D. 三填空题(阅读以下程序并填空;每题 1 分,共 10 分)class A class C: A int a;int g;protected: protected: int b;int h;public: public: int c;int c;a; c ;class B: protected A struct D: B, C int d ;int j ;protected: protected: int e;B:b ;public: d ;A:c ;void mainvoid 5 / 11 名师归纳总结 - - - - - - -第 5 页,共 11 页精选学习资料 - - -
15、- - - - - - int f ;int x ;b ; 16对于 main,对象 a 的私有成员为 _ ;17对于 main,对象 a 的爱护成员为 _ ;18对于 main,对象 a 的公有成员为 _ ;19对于 main,对象 b 的私有成员为 _;20对于 main,对象 b 的爱护成员为 _;21对于 main,对象 c 的爱护成员为 _ ;22对于 main,对象 c 的公有成员为 _ ;23对于 main,对象 d 的爱护成员为 _;24对于 main,对象 d 的公有成员为 _;25 main 应使用语句 x=_ 取对象 d 的基类 C 的成员 c 的值;四名词说明(每道题
16、3 分,共 15 分)26标识符:27重载:28反常:29类型强制:30抽象类:五判定改错题(阅读以下程序并判定各题是否正确,对正确的就在其题号前打;错误的在其题号前打 ,并在题干后的括号内更正;每道题3 分,共 15 分)#include struct AA coutA; ;struct BB coutB; ;struct C: AC coutC; ; ;struct D: virtual B, CD coutD struct E: A C c;E : c coutE ; ;struct F: virtual B, C, D, E F coutF ; ;void main /* */ 31如
17、 main 定义 A a,就输出为A;()() 32如 main 定义 C c,就输出为BAC ; 33如 main 定义 Dd,就输出为BACD ;() 34如 main 定义 E e,就输出为AACE ;() 35如 main 定义 Ff,就输出为BCDEF ;()6 / 11 名师归纳总结 - - - - - - -第 6 页,共 11 页精选学习资料 - - - - - - - - - 六运算题(阅读如下程序并运算执行结果;共 20 分)int x=2, y=x+30 ;struct A static int x ; int y;public: operator int return
18、x+y ; A operator +int return Ax+, y+; Aint x=:x+2, int y=:y+3 A:x=x; A:y=y ; int &hint &x;int &A:hint &x forint y=1 ; y.=1 | x200 x-=21; y-=2; return x-=10 ; int A:x=23 ;void main A a54, 3, b65, c ;int i, &z=i, A:*p=&A:y; i=b.x;/ z=a.x;/ i=c.*p ;/ i=a+ ;/ i=:x+c.y ;/ i=a+b;/ b.hi=7 ;/ 36语句执行终止后 i= ;
19、( 2 分)37语句执行终止后 i= ;( 3 分)38语句执行终止后 i= ;( 3 分)39语句执行终止后 i= ;( 3 分)40语句执行终止后 i= ;( 3 分)41语句执行终止后 i= ;( 3 分)42语句执行终止后 i= ;( 3 分)七设计题( 20 分)43如下复数类说明白五个成员函数,请具体定义这五个函数的函数体;(每个定义 4分)class COMPLEX double real, imag ;public: /real, imag 分别为复数的实部和虚部,/如 x=3+5i ,就 x.real=3 ,x.imag=5 COMPLEXdouble r=0, double
20、 i=0;7 / 11 名师归纳总结 - - - - - - -第 7 页,共 11 页精选学习资料 - - - - - - - - - COMPLEX& operator += const COMPLEX &c;COMPLEX& operator + ;/复数的实部和虚部加1 COMPLEX operator const;/将实部和虚部的符号求反COMPLEX operator + const COMPLEX &c const; ;面对对象程序设计模拟试卷一答案一解: 1. A2. D3. C4. B5. C 二解:各类的成员及其存取属性如下;1.private: a; 2.private:
21、 int int d; protected: b; protected: int int e; public: c;int b; int public: 3.private: g; int c; int f;4.private: int int n, j; int b; int e, c; int c; int f, h; protected: h; int i; int protected: public: i;int b; int int k;三解: main 中每行的输出结果见如下注释; A a; coutn ;/输出 A B b; coutn ;/输出 B C c; coutn ;/输
22、出 AC D d; coutn ;/输出 BACD E e; coutn ;/输出 AACE F f; coutconst FRACTION&fconst double d= denominator *f.denominator ; return numerator*f.denominator/d denominator*f.numerator/d; FRACTION FRACTION:operator* const int c=cmdnumerator, denominator ; return FRACTIONnumerator/c, denominator/c; 9 / 11 名师归纳总
23、结 - - - - - - -第 9 页,共 11 页精选学习资料 - - - - - - - - - FRACTION FRACTION:operator+const FRACTION&fconst int n= numerator*f.denominator+denominator*f.numerator;int d= denominator*f.denominator ;return*FRACTIONn, d ; /对运算结果进行约分运算FRACTION FRACTION:operator*const FRACTION&fconst return *FRACTIONnumerator*f
24、.numerator, denominator*f.denominator; /约分 面对对象程序设计模拟试卷二答案一解:单项挑选题答案1.B 2. B 3. C 4. C 10.B 5. D 6. D 7. C 8. C 9. D 二解:多项挑选题答案11.BCD12.ABD13.ABC14.BC15.AB 三解:填空题答案16. a.a 17. a.b 18. a.c 19. b.d 20. b.b, b.e21. c.h 22. c.c 23. d.b, d.e, d.h 24. d.B:c, d.f, d.C:c, d.j 25. d.C:c 四解:名词说明答案26标识符:标识符是程序
25、变量、常量、函数和类型的名字,通常是由字母或下划线开头的字母、数字或下划线等符号序列构成;(要点:仅回答名字或构成得 2分,全答得 3 分)27重载:重载是指用一个标识符或操作符命名多个函数,用于完成多个不同类型的操作;(要点:没有回答多个扣1 分,没有回答操作符可不扣分)28反常:反常是指函数执行显现了不正常的现象、或运行结果显现了无法定义的情 况而必需中断程序执行的状态;(要点:未回答不正(平)常、结果无法定义或 中断执行,可扣 1 分)29类型强制:类型强制是指将一种类型映射或转换为另一种类型;(要点:没有映射或转换扣1 分,没有涉及两种类型扣1 分)30抽象类:抽象类是指定义了纯虚函数
26、、或继承了纯虚函数但没有定义函数体的 类;或者抽象类是不能定义或产生实例对象的类;(要点:或者前后的两种回答 都可以得分)五解:判定改错题答案3110 / 11 名师归纳总结 - - - - - - -第 10 页,共 11 页精选学习资料 - - - - - - - - - 32X 改正 :AC 33. 34. 35. X 改正 :BACACDAACEF 六解:运算题答案36. i=4 37. i=4 38. i=3539. i=7 40. i=37 41. i=47 42. i=7 七解:设计题答案要点如下,达不到要求各扣 1 分;全部函数头必需包含 COMPLEX: 构造函数定义时不能再
27、次定义缺省参数返回类型为 COMPLEX& 的 & 不能省略返回类型为 COMPLEX& 的必需用 return *this 返回类型为 COMPLEX 的必需定义局部对象或使用常量对象const 不能漏掉,凡尾部部带 43. 五个成员函数如下;const 的函数不能转变当前对象的值;COMPLEX:COMPLEXdouble r, double i real=r; imag=i ; COMPLEX& COMPLEX:operator += const COMPLEX &c real+=c.real; imag+=c.imag ; return *this ; COMPLEX& COMPLEX:operator + / real+; imag+ ; return *this ; 前置运算,先运算后取值COMPLEX COMPLEX:operator - const return COMPLEX-real, -imag; COMPLEX COMPLEX:operator + const COMPLEX &c const return COMPLEXreal+c.real, imag+c.imag; 11 / 11 名师归纳总结 - - - - - - -第 11 页,共 11 页
限制150内