《2023年面向对象程序设计模拟试卷.docx》由会员分享,可在线阅读,更多相关《2023年面向对象程序设计模拟试卷.docx(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一.单选题(15)。1 .关于构造的叙述对的:B.最先构造基类0D.都不对对的:,B.私有的不能在类体外初始化4.最先构造虚基类。oC.最先构造派生类的对象成员2.关于静态数据成员的叙述一-A.公有的可在类体外初始化。C,私有和保护的不能在类体外初始化oD.都可以且必须在体外初始化.若派生类函数不是基类的友元,关于该函数访问基类成员 对的:,A.公有的可被派生类函数访问B.都可以被派生类函数访问公有和保护的可被派生类函数访问。D.都不对.关于函数的所有缺省参数的叙述对的:A.只能出现在参数表的最左边只能出现在参数表的最右边oC.必须用非缺省的参数隔开。6都不对5 .使用frie nd、vir
2、t u a 1、st a tic说明函数的叙述对的:A.必须同时使用三个。B.只能同时用其中两个oC.只能独立单个地使用oD.都不对二.指出各类的成员及其存取属性(20)。class Aclass C: Aint a;int g;protected:protected:int b:int h;public:public:int c;int i;;class B: protected A(;class D: B, Cint d;int j;protected:protected:int e;B:b;public:int k;A:c;private:int f;int n;三.指出main中每行的
3、输出结果(20)。i=: x + c . y 产 / /i=a+ b ; a。 /b .h(i)= 7 ;。836.语句执行结束后i=o (2分)3 7.语句执行结束后i=o (3分)38.语句执行结束后i=o (3分)3 9.语句执行结束后i =。(3分).语句执行结束后i=o (3分)40 .语句执行结束后i=。(3分)4 2 .语句执行结束后i=。(3分)七.设计题(20分)43.如下复数类说明了五个成员函数,请具体定义这五个函数的函数体。(每个定义4分)c las s COMPLEX “/real, i mag分别为复数的实部和虚部,doubl e re a I, i m a g; 。
4、 若 x=3+5 i ,则 x.r e al= 3 ,x. i mag= 5 pub lie:COMPLE X (d o u b le r=0, dou b le i=0);COM PL E X & opcrat o r += (const C O M P LEX &c);COMP L EX& o per a t o r + ( );。/复数的实部和虚部加1COMP LEX oper a tor - () const?/ /将实部和虚部的符号求反CO MPLEX op e rat o r + (c o n st COMPLE X &c) const;;面向对象程序设计模拟试卷一答案一解:LAQ
5、 D 。3. C 4. B 5. C 二解:各类的成员及其存取属性如下。I .private:2.private:in(a;intd;protecied:protected:intb;inte;public:intb;int c:public:int c; int f;3.private:4.private:int g;int n,j;intb;inte,c;intc;intf,h;protected:inti;int h;protected:public:intb;inti;intk;三解:ma i n中每行的输出结果见如下注释。A a; c o utn;/ 输出 AB b: cou t n
6、; 输出 BC c; cout;。/输出 ACD d ; cout (con s t FRA CTION& f )c o ns t do u ble d= d e n om i n at o r *f.d e nom i nato r ;r et u rn (numer a t or*f.denomina t or/d den o mi n a t or*f. n u mer a (or /d);FRACTION FRAC T ION : : o p e ra t or * ()consti n t c=cmd(n u m e rator, d e n o min a tor);re t um
7、 FRACTION(numer a tor/c, denomin a t o r / c );)FRACTION FRACT I 0N: o pcrato r+( c onst FRACTI0N& f ) c on s tint n= n u mcrator*f.dc n omi n ator+ den omin a t o r* f . n umcrato r ;i nt d= dcnomi n ator*f.dcnomi n ator;ret u rn *FRACTI ON(n ,d );。对运算结果进行约分运算FRACTION FRA CTION:opera t or* (con s t
8、 FRACTION &f)conslreturn * F R AC T ION(numerato r *f. n umerato r , denominator*f. den omin ato r ); / /约分面向对象程序设计模拟试卷二答案解:单项选择题答案1 . B 。2. B。3. C 4. C 5. D6. Da 7.08. C 。9. D 13.B二解:多项选择题答案1 1 . BCD。 l2.ABDo 1 3. ABC ol4. BC。 I5.AB三解:填空题答案16 .。a. ag17e 3 a .b18 .。a . c19 .由.d20 . ,b.b, b.e21 1 . c
9、. h22 2 ac.c23 3. d . b , d .e, d.h24 .。d.B: c, d. f, d.C:: c, d. j25 .d . C:c四解:名词解释答案2 6 .标记符:标记符是程序变量、常量、函数和类型的名字,通常是由字母或下划线开 始的字母、数字或下划线等符号序列构成。(要点:仅回答名字或构成得2分,全答 得3分).重载:重载是指用一个标记符或操作符命名多个函数,用于完毕多个不同类型的操 作。(要点:没有回答多个扣1分,没有回答操作符可不扣分)27 .异常:异常是指函数执行出现了不正常的现象、或运营结果出现了无法定义的情 况而必须中断程序执行的状态。(要点:未【口1答
10、不正(平)常、结果无法定义或中断 执行,可扣1分)28 .类型强制:类型强制是指将一种类型映射或转换为另一种类型。(要点:没有映射或转换扣I分,没有涉及两种类型扣1分)29 .抽象类:抽象类是指定义了纯虚函数、或继承了纯虚函数但没有定义函数体的类。或 者抽象类是不能定义或产生实例对象的类。(要点:或者前后的两种回答都可以得分) 五解:判断改错题答案30 . J31 . X 改正:AC32 . V33 . V34 . X 改正:BACACD AACEF六解:计算题答案35 . i= 4 3 7. i=438.i=35 39. i=74 0. i=374O 1 . i= 47 4 2. i =7七
11、解:设计题答案要点如下,达不到规定各扣1分。所有函数头必须包含COMPLEX:构造函数定义时不能再次定义缺省参数返回类型为COMPLEX&的&不能省略返回类型为COMPLEX&的必须用r etum *this返回类型为COMPLEX的必须定义局部对象或使用常量对象const不能漏掉,凡尾部部带c o nst的函数不能改变当前对象的值。43.五个成员函数如下。COMPLEX:: C OM P LEX(doub 1 e r, do u ble i) re a l=r; i mag=i; COMPLEX& COMPLEX:opcra t or += (cons t COMPL EX&c ) re a
12、 l+=c. r e al:imag+= c .ini a g;r et u rn *th i s;)COMPLEX& C OMP LEX:ope rato r + ()/前置运算,先运算后取值rea 1 + + ;imag+;r etum *this;COMPLEX C O MPLEX:o p erato r - ( ) const ret urn CO MP LEX (-real,i mag); C O MPLEX COMPLEX:ope rat o r + (cons t CO MPLEX &c) c ons t r e t urn COM PLE X (real+c. real, i
13、m a g+ c .im a g);#inc 1 u d e s t ru c t A A() coutA;;s t ruct BB ( ) cou t z B; ;struct C: AC() coutC;struc t D: vir t ual B, C D( ) coulD;stru c t E: AC c;E( ): c() coutEr;);stru c t F: v irtual B, C, D, EF()( c o utF;);vo i d ma i n() A a; cou t n;B b; c outn;C c ; co u tnD d; coutn;E e ; c o ut
14、* n;F f ; cout n ;)四.指出以下程序的语法错误及其因素(15) .c 1 ass Asta t i c int a=0;j p r otected:i n t b;pub 1 ic:j int c;j A(int);operator i nt(); a (1,2 );jclas s B : A B ( i nt); j v i r t u al int d;j in t e : jpu b lie: j A:: b;j frien d in t op e rator =(B); j s t a t i c B(int, i nt); b=5 ;class C: B pu b
15、lie:i n t o pe r a t o r+ ( d o u b 1 e );;i nt main() int *A:: * p , i ;i= a . a ;i=A(4);i=b.c;p=&A:c;i =b;return ;)五.指出mai n变量i在每条赋值语句执行后的值(1 5)。int x=2,y=x+30;s tr u ct Asi a ti c int x;int y;public:opera t or int( ) retu r n x-y; A oper a tor + (int) return A(x+, y+) ; A (in t x =: :x+2, int y=:
16、: y+3) A: : x=x; A:y= y ; int &h(i n t &x););int &A:h(int &x)(for(inty=l;y! =1 I I x 2 00) x-=21;y-=2; r etur n x=10;i nt A ::x= 2 3;void main ( ) Aa(54, 3 ),b( 6 5), c;in ti, &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来表达分数,请编程实现分数类中的除
17、 cmd外的所有函数(15)。c 1 ass FR A C TIO N /对于与,numer a lor 存分子 6 , d e nomi n a t or 存分母 7i n t nume r a t o r , dcnomi n ato r ; j s t atic int c md( i n t x, i n t y);。求整数x,y的最大公约数p u b 1 i c :in( op e rator (cons t FRACTION &)const;。/ /大于比较,例 y -1FR ACT I ON(int n u m, i n t den=l); “ / n u m、d e n 各为分
18、子和分母FRACT I ON o p era t or*( ) const; g/ / 分数约简,*翌=4 36 oFRAC T ION operator+(c o nst FR ACT I ON&) c onst; /加法,| + 1=-FRACTION o P er a t o r *(cons t F RACTION&)c o n s t; / / 乘法);i nt FRACTION:cmd (int x, in t y) int r;if(xC. in t o D. u n ion()13.将用于释放p= new i nt 8 的内存的编号填入括号内。A. free ( p )B. d
19、el e t e p C. d e lete 1 p D. siz e ofp()14.将派生类成员函数可访问的基类成员编号填入括号内。,A. pr i v a te B. pr o t e c t e dC. publi c ,D.所有成员()1 5 .将不能重载的运算符函数的编号填入括号内。8 A . ? : 0B. :OOoC. %0D. 三.填空题(阅读以下程序并填空。每题I分,共10分)c 1 a ss A 。in( a; o 。p r o te c led:。 。in t b;。public:。i nt c; o 。a; 。c la s s B: p ro t ectedin t
20、d; a o p ro t ecte d :。c 1 a ss A 。in( a; o 。p r o te c led:。 。in t b;。public:。i nt c; o 。a; 。c la s s B: p ro t ectedin t d; a o p ro t ecte d :。cla s s C: A Ant g;pro t ected:int h:pu b li c :i nt c;c;A o oostru c t D: B, C in t j;pro tec ted: B:b ;d;o v oid main(void) i nl x;b;6Z。80 1 6 .对于 main,
21、对象a的私有成员为。17.对于 mai n ,对象a的保护成员为。1 8.对于 main,对象a的公有成员为。19.对于 main,对象b的私有成 员 为。2 0.对于ma i n,对象b的保护成员为2 1 .对于 main,对象c 的保护成员为。2 2 .对于 main, 对象c的公有成员为2 3 .对于main,对象d的保护成员为。24 .对于 mai n , 对象d的公有成员为。25 . ma i n应使用语句x=取对象d的基类C的成员c的值。四.名词解释(每小题3分,共1 5分)26.标记符:2 7.重载:28.异常:29.类型强制:3 0 .抽象类:五.判断改错题(阅读以下程序并判断
22、各题是否对的,对对的的就在其题号前打错误 的在其题号前打x,并在题干后的括号内更正。每小题3分,共15分)#inc 1 ude st r u ct AA() c o u t A; ;s tr u ct B B( ) coutB; ;st r u c t C: A C() coutC ; ;s truct D: vir t ua I B, C D( ) co u t *D;s t r u ct E : A C c;E( ): c() co u tE;;s t ruct F: vir t u al B, C, D, EF( ) c ou t F;;void ma i n() / */()31.如m
23、ain定义A a,则输出为A。()()32.如main定义C c ,则输出为BAC。()()33.如ma in定义D d ,则输出为BACD。 ()()3 4.如ma in定义E e,则输出为AACE。()()35.如main定义F f,则输出为BCDEF_()六.计算题(阅读如下程序并计算执行结果。共20分)in t x=2,y=x+30;struct A static in t x ;1 n t y;publ i c :o p e r alor in t ( ) r e turn x+ y ; A o pcrato r +(int) r ctu r n A( x +, y +) ; A(in t x=:x+2, int y =: y +3) A: :x=x;A:y=y; i n t &h(int & x););int &A:: h ( i n t & x )(f o r (in t y = 1; y!= 1 | I x20 0 ) x-=2 1 ;y-=2;r e turn x -= 1 0 ;Iin t A: :x=2 3 ;void main()A a (5 4 , 3 ),b(6 5 ), c;i n t it &z=i, A:*p=&A: :y; i=b. x;/z=a. x; 2。i=c.* p ?/i = a +; b / /
限制150内