《2022年面向对象程序设计模拟试卷 .pdf》由会员分享,可在线阅读,更多相关《2022年面向对象程序设计模拟试卷 .pdf(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1 / 11 面向对象程序设计模拟试卷一一. 单选题 (15)。1. 关于构造的叙述_正确 : A. 最先构造虚基类B. 最先构造基类C. 最先构造派生类的对象成员D. 都不对2. 关于静态数据成员的叙述_正确 : A. 公有的可在类体外初始化B. 私有的不能在类体外初始化C. 私有和保护的不能在类体外初始化D. 都可以且必须在体外初始化3. 若派生类函数不是基类的友元,关于该函数访问基类成员_正确 : A. 公有的可被派生类函数访问B. 都可以被派生类函数访问C. 公有和保护的可被派生类函数访问D. 都不对4. 关于函数的所有缺省参数的叙述_正确 : A. 只能出现在参数表的最左边B. 只能
2、出现在参数表的最右边C. 必须用非缺省的参数隔开D. 都不对5. 使用 friend、virtual 、static 说明函数的叙述_正确 : A. 必须同时使用三个B. 只能同时用其中两个C只能独立单个地使用D. 都不对二. 指出各类的成员及其存取属性(20) 。class A int a; protected: int b; public: int c; ; class B: protected A int d; protected: int e; public: A:c; int f; ; class C: A int g; protected: int h; public: int i
3、; ; class D: B, C int j; protected: B:b; int k; private: 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 页2 / 1
4、1 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。 A(int) 。 operator int( ) 。 a(1, 2) 。class B: A B(int) 。 virtual int d 。 int e。public: A:b
5、。 friend int operator =(B) 。 static B(int, int) 。 b=5 。class C: B public: int operator+(double) 。int main( ) int *A:*p, i 。 i=a.a。i=A(4) 。i=b.c。p=&A:c 。i=b。return 。 五. 指出 main 变量 i 在每条赋值语句执行后的值(15) 。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 11 页3 / 11 int x=2, y=x+30 。struct A static int
6、x 。 int y。public: operator int( ) return x-y 。 A operator +(int) return A(x+, y+)。 A(int x=:x+2, int y=:y+3) A:x=x。 A:y=y 。 int &h(int &x)。int &A:h(int &x) for(int y=1 。 y!=1| x200) x-=21。 y-=2 。 return x-=10 。 int A:x=23 。void main( ) A a(54, 3), b(65), c 。 int i, &z=i, A:*p=&A:y。 z=b.x。 i=a.x。 i=c
7、.*p 。 i=a+。 i=:x+c.y 。 i=a+b。 b.h(i)=7 。 六. 为了没有误差地表示分数,定义类FRACTION来表示分数,请编程实现分数类中的除cmd 外的所有函数(15)。class FRACTION / 对于76,numerator 存分子 6,denominator 存分母 7 int numerator, denominator 。static int cmd(int x, int y) 。/求整数x,y 的最大公约数public: int operator(const FRACTION&)const。/大于比较,例7632FRACTION(int num, i
8、nt den=1)。/num、 den各为分子和分母FRACTION operator*()const 。/分数约简, *3630=65FRACTION operator+(const FRACTION&)const。/加法,76+32=2132FRACTION operator*(const FRACTION&)const。/乘法,76*32=2112=74。int FRACTION:cmd(int x, int y) int r。if(xy) r=x。 x=y。 y=r。 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 11 页4
9、/ 11 while(y!=0) y=x%(r=y)。 x=r。 return x。 面向对象程序设计模拟试卷二一单项选择题(从下列各题四个备选答案选出一个正确答案,并将其代号填在题干前的括号内。答案选错或未作选择者,该题不得分。每小题1 分,共 10分)()1以下有关析构函数的叙述,选择正确的填入括号内。A. 可以进行重载可以定义为虚函数B. 不能进行重载可以定义为虚函数C. 可以进行重载不能定义为虚函数D. 不能进行重载不能定义为虚函数()2以下有关函数缺省参数的出现位置,选择正确的叙述填入括号内。A. 必须全部出现在函数参数表的左部B. 必须全部出现在函数参数表的右部C. 必须全部出现在
10、函数参数表的中间D. 都不对()3关于两个同名函数重载的叙述,选择最为正确的填入括号内。A. 两个函数的参数个数不同B. 两个函数对应的参数类型不同C. 两个函数的参数个数不同或对应的参数类型不同D. 都不对()4关于 inline 保留字的用途,选择正确的叙述填入括号内。A. 只能用于定义成员函数B. 只能用于定义非成员函数C. 可以定义成员函数及非成员函数D. 都不对()5关于类的构造函数的定义位置,将最为正确的叙述填入括号内。A. 只能在 private 下定义B. 只能在 protected 下定义C. 只能在 public 下定义D. 定义位置没有限制()6如下修饰类体中函数的返回类
11、型,将正确的用法填入括号内。A. 同时使用static和 friend B. 同时使用 static 和 virtual C. 同时使用 friend 和 virtual D. 不同时使用上述三个保留字中的任意两个()7在如下关于继承的叙述中,选择正确的填入括号内。A. 私有继承用于实现类之间的ISA 关系B. 保护继承用于实现类之间的ISA 关系C. 公有继承用于实现类之间的ISA 关系D. 都不对()8对于用union 定义的类A,选择正确的叙述填入括号内。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 11 页5 / 11 A.
12、类 A 可以作为某个类的基类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 分)()11将符号为分隔符的编号填入括号内。A. m B. + C. D. = ()12将用于定义类的保留字的编号填入括号内。A. class B. struct C. int D. union ()13将用于释放p=new int8 的内存的编号填入括号内。A. free(p) B. delete p C. delete p D. sizeof p ()14将派生类成员函数可访问的基类成员编号填入括号内。A. private B. protected C. public D. 所有成员()15将不能重载的运算符函数的编号填入括号内。A. ?
14、: B. :C. % 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 main(void) 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页
15、,共 11 页6 / 11 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 的值。四名词解释(每小题3 分,共 15 分)26标识符:27
16、重载: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( ) /* */ (
17、 ) 31如 main 定义 A a,则输出为A。()( ) 32如 main 定义 C c,则输出为BAC 。()( ) 33如 main 定义 Dd,则输出为BACD 。()( ) 34如 main 定义 E e,则输出为AACE 。()( ) 35如 main 定义 Ff,则输出为BCDEF 。()精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 11 页7 / 11 六计算题(阅读如下程序并计算执行结果。共20 分)int x=2, y=x+30 。struct A static int x 。 int y。public: ope
18、rator int( ) return x+y 。 A operator +(int) return A(x+, y+)。 A(int x=:x+2, int y=:y+3) A:x=x。 A:y=y 。 int &h(int &x)。int &A:h(int &x) for(int y=1 。 y!=1 | x200) x-=21。 y-=2。 return x-=10 。 int A:x=23 。void main( ) A a(54, 3), b(65), c 。int i, &z=i, A:*p=&A:y。 i=b.x。/ z=a.x。/ i=c.*p 。/ i=a+。/ i=:x+c
19、.y 。/ i=a+b。/ b.h(i)=7 。/ 36语句执行结束后i= 。( 2 分)37语句执行结束后i= 。( 3 分)38语句执行结束后i= 。( 3 分)39语句执行结束后i= 。( 3 分)40语句执行结束后i= 。( 3 分)41语句执行结束后i= 。( 3 分)42语句执行结束后i= 。( 3 分)七设计题(20 分)43如下复数类说明了五个成员函数,请详细定义这五个函数的函数体。(每个定义4分)class COMPLEX /real, imag 分别为复数的实部和虚部,double real, imag。/若 x=3+5i ,则 x.real=3 ,x.imag=5 pub
20、lic: COMPLEX(double r=0, double i=0)。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 11 页8 / 11 COMPLEX& operator += (const COMPLEX &c)。COMPLEX& operator + ( )。/复数的实部和虚部加1 COMPLEX operator ( ) const。/将实部和虚部的符号求反COMPLEX operator + (const COMPLEX &c) const。面向对象程序设计模拟试卷一答案一解: 1. A2. D3. C4. B5. C
21、二解:各类的成员及其存取属性如下。1.private: int a; protected: int b; public: int c;2.private: int d; protected: int e; int b; public: int c; int f;3.private: int g; int b; int c; protected: int h; public: int i;4.private: int n, j; int e, c; int f, h; int i; protected: int b; int k;三解: main 中每行的输出结果见如下注释。 A a。 cout
22、n 。/输出 A B b。 coutn 。/输出 B C c。 coutn。/输出 AC D d。 coutn 。/输出 BACD E e。 coutn。/输出 AACE F f。 cout(const FRACTION&f)const double d= denominator *f.denominator 。 return (numerator*f.denominator/d denominator*f.numerator/d)。 FRACTION FRACTION:operator*( )const int c=cmd(numerator, denominator) 。 return F
23、RACTION(numerator/c, denominator/c)。 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 11 页10 / 11 FRACTION FRACTION:operator+(const FRACTION&f)const int n= numerator*f.denominator+denominator*f.numerator。int d= denominator*f.denominator 。return*FRACTION(n, d)。 /对运算结果进行约分运算 FRACTION FRACTION:oper
24、ator*(const FRACTION&f)const return *FRACTION(numerator*f.numerator, denominator*f.denominator)。 /约分 面向对象程序设计模拟试卷二答案一解:单项选择题答案1.B 2. B 3. C 4. C 5. D 6. D 7. C 8. C 9. D 10.B 二解:多项选择题答案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
25、. d.B:c, d.f, d.C:c, d.j 25. d.C:c 四解:名词解释答案26标识符:标识符是程序变量、常量、函数和类型的名字,通常是由字母或下划线开始的字母、数字或下划线等符号序列构成。(要点:仅回答名字或构成得2分,全答得3 分)27重载:重载是指用一个标识符或操作符命名多个函数,用于完成多个不同类型的操作。(要点:没有回答多个扣1 分,没有回答操作符可不扣分)28异常:异常是指函数执行出现了不正常的现象、或运行结果出现了无法定义的情况而必须中断程序执行的状态。(要点:未回答不正(平)常、结果无法定义或中断执行,可扣1 分)29类型强制:类型强制是指将一种类型映射或转换为另一
26、种类型。(要点:没有映射或转换扣1 分,没有涉及两种类型扣1分)30抽象类:抽象类是指定义了纯虚函数、或继承了纯虚函数但没有定义函数体的类。或者抽象类是不能定义或产生实例对象的类。(要点:或者前后的两种回答都可以得分)五解:判断改错题答案31精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 11 页11 / 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 七解:设计题
27、答案要点如下,达不到要求各扣1分。所有函数头必须包含COMPLEX: 构造函数定义时不能再次定义缺省参数返回类型为COMPLEX& 的 &不能省略返回类型为COMPLEX& 的必须用return *this 返回类型为COMPLEX的必须定义局部对象或使用常量对象const 不能漏掉,凡尾部部带const 的函数不能改变当前对象的值。43. 五个成员函数如下。COMPLEX:COMPLEX(double r, double i) real=r。 imag=i 。 COMPLEX& COMPLEX:operator += (const COMPLEX &c) real+=c.real。 imag
28、+=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 COMPLEX(real+c.real, imag+c.imag)。 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 11 页,共 11 页