收藏 分销(赏)

面向对象程序设计模拟试卷.doc

上传人:a199****6536 文档编号:3653581 上传时间:2024-07-12 格式:DOC 页数:29 大小:187.50KB
下载 相关 举报
面向对象程序设计模拟试卷.doc_第1页
第1页 / 共29页
面向对象程序设计模拟试卷.doc_第2页
第2页 / 共29页
面向对象程序设计模拟试卷.doc_第3页
第3页 / 共29页
面向对象程序设计模拟试卷.doc_第4页
第4页 / 共29页
面向对象程序设计模拟试卷.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

1、面向对象程序设计模拟试卷一一. 单选题(15)。1. 关于构造的叙述_正确:A. 最先构造虚基类B. 最先构造基类C. 最先构造派生类的对象成员D. 都不对2. 关于静态数据成员的叙述_正确:A. 公有的可在类体外初始化B. 私有的不能在类体外初始化C. 私有和保护的不能在类体外初始化 D. 都能够且必须在体外初始化3. 若派生类函数不是基类的友元, 关于该函数访问基类成员_正确:A. 公有的可被派生类函数访问B. 都能够被派生类函数访问C. 公有和保护的可被派生类函数访问D. 都不对4. 关于函数的所有缺省参数的叙述_正确:A. 只能出现在参数表的最左边B. 只能出现在参数表的最右边C. 必

2、须用非缺省的参数隔开D. 都不对5. 使用friend、 virtual、 static说明函数的叙述_正确:A. 必须同时使用三个B. 只能同时用其中两个C只能独立单个地使用D. 都不对二. 指出各类的成员及其存取属性(20) 。 三. 指出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;struct F: virtual B, C,

3、D, EF( ) 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; friend int operator =(B); static B(i

4、nt, int); b=5;class C: Bpublic: 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) 。int x=2, y=x+30;struct A static int 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:

5、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.*p; i=a+; i=:x+c.y; i=a+b; b.h(i)=7;六. 为了没有误差地表示分数, 定义类FRACTION来表示分数, 请编程实现分数类中的除cmd外的所有函数(15)。class FRACTION /对于, numerator

6、存分子6, denominator存分母7 int numerator, denominator; static int cmd(int x, int y);/求整数x,y的最大公约数public: int operator(const FRACTION&)const;/大于比较, 例 FRACTION(int num, int den=1);/num、 den各为分子和分母 FRACTION operator*( )const;/分数约简, *= FRACTION operator+(const FRACTION&)const;/加法, += FRACTION operator*(const

7、 FRACTION&)const;/乘法, *=;int FRACTION:cmd(int x, int y) int r; if(xy) r=x; x=y; y=r; while(y!=0) y=x%(r=y); x=r; return x;面向对象程序设计模拟试卷二一单项选择题 ( 从下列各题四个备选答案选出一个正确答案, 并将其代号填在题干前的括号内。答案选错或未作选择者, 该题不得分。每小题1分, 共10分) ( ) 1以下有关析构函数的叙述, 选择正确的填入括号内。A. 能够进行重载能够定义为虚函数B. 不能进行重载能够定义为虚函数C. 能够进行重载不能定义为虚函数D. 不能进行重载

8、不能定义为虚函数( ) 2以下有关函数缺省参数的出现位置, 选择正确的叙述填入括号内。A. 必须全部出现在函数参数表的左部B. 必须全部出现在函数参数表的右部C. 必须全部出现在函数参数表的中间D. 都不对( ) 3关于两个同名函数重载的叙述, 选择最为正确的填入括号内。A. 两个函数的参数个数不同B. 两个函数对应的参数类型不同C. 两个函数的参数个数不同或对应的参数类型不同D. 都不对( ) 4关于inline保留字的用途, 选择正确的叙述填入括号内。A. 只能用于定义成员函数B. 只能用于定义非成员函数C. 能够定义成员函数及非成员函数D. 都不对( ) 5关于类的构造函数的定义位置,

9、将最为正确的叙述填入括号内。A. 只能在private下定义B. 只能在protected下定义C. 只能在public下定义D. 定义位置没有限制( ) 6如下修饰类体中函数的返回类型, 将正确的用法填入括号内。A. 同时使用static和friendB. 同时使用static和virtualC. 同时使用friend和virtualD. 不同时使用上述三个保留字中的任意两个( ) 7在如下关于继承的叙述中, 选择正确的填入括号内。A. 私有继承用于实现类之间的ISA关系B. 保护继承用于实现类之间的ISA关系C. 公有继承用于实现类之间的ISA关系D. 都不对( ) 8对于用union定义

10、的类A, 选择正确的叙述填入括号内。A. 类A能够作为某个类的基类B. 类A能够作为某个类的派生类C. 类A既不能作基类又不能作派生类D. 类A既能够作基类又能够作派生类( ) 9有关在类中声明友元函数的叙述, 将正确的答案填入括号内。A. 只能在private下声明B. 只能在protected下声明C. 只能在public下声明D. 声明位置没有限制( ) 10在构造派生类A的对象时, 选择正确的叙述填入括号内。A. 最先构造派生类A的基类B. 最先构造派生类A的虚基类C. 最先构造派生类A的数据成员对象D. 都不对二多项选择题( 从下列各题四个备选答案选出二至四个正确答案, 并将其代号填

11、在题干前的括号内。答案选错或未选全者, 该题不得分。每小题2分, 共10分) ( ) 11将符号为分隔符的编号填入括号内。A. m B. + C. D. = ( ) 12将用于定义类的保留字的编号填入括号内。A. class B. struct C. intD. union ( ) 13将用于释放p=new int8的内存的编号填入括号内。A. free (p)B. delete pC. delete p D. sizeof p( ) 14将派生类成员函数可访问的基类成员编号填入括号内。A. privateB. protectedC. publicD. 所有成员( ) 15将不能重载的运算符函

12、数的编号填入括号内。A. ? :B. :C. %D. 三填空题( 阅读以下程序并填空。每题1分, 共10分) class Aclass C: A int a;int g;protected:protected: int b; int h;public:public: int c;int c;a; c;class B: protected Astruct D: B, C int d;int j;protected:protected: int e;B:b;public:d; A:c;void main(void)int f;int x;b;16对于main, 对象a的私有成员为_。17对于mai

13、n, 对象a的保护成员为_。18对于main, 对象a的公有成员为_。19对于main, 对象b的私有成员为_。20对于main, 对象b的保护成员为_。21对于main, 对象c的保护成员为_。22对于main, 对象c的公有成员为_。23对于main, 对象d的保护成员为_。24对于main, 对象d的公有成员为_。25main应使用语句x=_取对象d的基类C的成员c的值。四名词解释( 每小题3分, 共15分) 26标识符: 27重载: 28异常: 29类型强制: 30抽象类: 五判断改错题( 阅读以下程序并判断各题是否正确, 对正确的就在其题号前打; 错误的在其题号前打, 并在题干后的括

14、号内更正。每小题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, EF( ) coutF;void main( ) /*/ ( ) 31如main定义A a, 则输出为A。( ) ( ) 32如main定义C c, 则输出为BAC。( ) ( ) 33如main定义D d, 则输出为BACD。( ) (

15、) 34如main定义E e, 则输出为AACE。 ( ) ( ) 35如main定义F f, 则输出为BCDEF。( ) 六计算题( 阅读如下程序并计算执行结果。共20分) int x=2, y=x+30;struct A static int 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 | x20

16、0) 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.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分

17、) 43如下复数类说明了五个成员函数, 请详细定义这五个函数的函数体。( 每个定义4分) class COMPLEX /real, imag分别为复数的实部和虚部, double real, imag; /若x=3+5i, 则x.real=3, x.imag=5public:COMPLEX(double r=0, double i=0);COMPLEX& operator += (const COMPLEX &c);COMPLEX& operator + ( ); /复数的实部和虚部加1COMPLEX operator ( ) const;/将实部和虚部的符号求反COMPLEX operato

18、r + (const COMPLEX &c) const;面向对象程序设计模拟试卷一答案一解: 1. A2. D3. C4. B5. C二解: 各类的成员及其存取属性如下。 三解: main中每行的输出结果见如下注释。 A a; coutn;/输出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/

19、d denominator*f.numerator/d);FRACTION FRACTION:operator*( )const int c=cmd(numerator, denominator); return FRACTION(numerator/c, denominator/c);FRACTION FRACTION:operator+(const FRACTION&f)const int n= numerator*f.denominator+denominator*f.numerator; int d= denominator*f.denominator; return *FRACTIO

20、N(n, d);/对运算结果进行约分运算FRACTION FRACTION:operator*(const FRACTION&f)const return *FRACTION(numerator*f.numerator, denominator*f.denominator); /约分面向对象程序设计模拟试卷二答案一解: 单项选择题答案1. B2. B3. C4. C5. D6. D7. C8. C9. D 10.B二解: 多项选择题答案11.BCD12.ABD13.ABC14.BC15.AB三解: 填空题答案16. a.a17.a.b18.a.c19.b.d20.b.b, b.e21.c.h2

21、2.c.c23.d.b, d.e, d.h24.d.B:c, d.f, d.C:c, d.j25. d.C:c四解: 名词解释答案26标识符: 标识符是程序变量、 常量、 函数和类型的名字, 一般是由字母或下划线开始的字母、 数字或下划线等符号序列构成。( 要点: 仅回答名字或构成得2分, 全答得3分) 27重载: 重载是指用一个标识符或操作符命名多个函数, 用于完成多个不同类型的操作。( 要点: 没有回答多个扣1分, 没有回答操作符可不扣分) 28异常: 异常是指函数执行出现了不正常的现象、 或运行结果出现了无法定义的情况而必须中断程序执行的状态。( 要点: 未回答不正( 平) 常、 结果无

22、法定义或中断执行, 可扣1分) 29类型强制: 类型强制是指将一种类型映射或转换为另一种类型。( 要点: 没有映射或转换扣1分, 没有涉及两种类型扣1分) 30抽象类: 抽象类是指定义了纯虚函数、 或继承了纯虚函数但没有定义函数体的类。或者抽象类是不能定义或产生实例对象的类。( 要点: 或者前后的两种回答都能够得分) 五解: 判断改错题答案3132X 改正: AC33. 34. 35. X 改正: BACACDAACEF六解: 计算题答案36. i=437. i=438. i=3539. i=740. i=3741. i=4742. i=7七解: 设计题答案要点如下, 达不到要求各扣1分。所有

23、函数头必须包含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+=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);

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 考试专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服