2023年面向对象程序设计离线作业答案.pdf
《2023年面向对象程序设计离线作业答案.pdf》由会员分享,可在线阅读,更多相关《2023年面向对象程序设计离线作业答案.pdf(71页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、浙江大学远程教育学院 面向对象程序设计课程作业答案第 2 章 2.3 测试 下面的注释(它在C+风格的单行注释中套入了类似于C 的注释)是否有效。/th i s is a st r an g e/way t o do a c o mme n t*/答:有效2.4 以下这个简短的C+程序不也许编译通过,为什么?#includ e us i n g n a mes p ace s t d;int main()int a,b,c;c o u t a b;c=s u m(a,b);c o u t Msum is:n c;re t urn 0;sum(int a,int b)r e tu r n a+b
2、;答:不能潼sum使用前必须声明 2.5 回答 问题。(1)以下两个函数原型是否等价:flo a t fu n(i nt a,f 1 o a t b,c ha r*c);float fun(int,float,char*);等价(2)以下两个函数的第一行是否等价:flo a t f un(i n t a,flo a t b,charfloat fun(in t,f 1 oat,c h a r*)o答:等价 2.6 下列 语句中错误的是(DA.int*p=new int(1 0);C.i n t*p=n e w int;2.7 假设已有定义const c h a语句中对的的是(D)。A.name
3、 3-ar;C.name=new cha r 5;2.8 假设已有定义 c h a r *对的的是(A )oA.n a me 3-qC.name=n e w e h ar5;2.9 假设已有定义“c o nst char*误的是(A)oA.n a me 3=q;C.name=ne w ch a r 5;c););B.int*p=new in t 10;D.int*p=n ew in t 40(0);r*cons t n ame二 chen;”下面的B.name二“1 in”;D.c o u t n a me3;cons t n a me二 chen;”下面的语句中B.nam e=H 1 in”
4、;D.nam e=new ch a r(q);n am e 二 chen ;”下面的语句中错B.n a m e 1 i nn;D.n ame=n e w ch a rC q);【2.1 0】重载函数在调用时选择的依据中,(B )是错误的。A.函数名字 B.函数的返回类型C.参数个数 D.参数的类型 2.1 1在(A)情况下适宜采用内联函数。A.函数代码小,频繁调用 B.函数代码多,频繁调用C.函数体具有递归语句 D.函数体具有循环语句 2.1 2 下列描述中,(C)是错误的。A.内联函数重要解决程序的运营效率问题B.内联函数的定义必须出现在内联函数第一次被调用之前C.内联函数中可以涉及各种语句
5、D.对内联函数不可以进行异常接口声明 2.1 3在 C+中,关于下列设立默认参数值的描述中,(B )是对的的。A.不允许设立默认参数值B.在指定了默认值的参数右边,不能出现没有指定默认值的参数C.只能在函数的定义性声明中指定参数的默认值D.设立默认参数值时,必须所有都设立 2.14下面的类型声明中对的是(D )0A.i n t&a 4 ;B.i n t&*p ;C.i n t&q;D.i n t i,*p=&i;2.1 5 下面有关重载函数的说法中对的的是(C )oA.重载函数必须具有不同的返回值类型B.重载函数形参个数必须不同C.重载函数必须有不同的形参列表D.重载函数名可以不同 2.1 6
6、 关于n e w运算符的下列描述中,(D )是错误的。A,它可以用来动态创建对象和对象数组B.使用它创建的对象或对象数组可以使用运算符d el et e删除C.使用它创建对象时要调用构造函数D.使用它创建对象数组时必须指定初始值 2,1 7 关于de 1 e te 运算符的下列描述中,(C)是错误的。A.它必须用于new返回的指针B.使用它删除对象时要调用析构函数C.对一个指针可以使用多次该运算符D.指针名前只有一对方括号符号,不管所删除数组的维数2.1 8 写出下列程序的运营结果。#includeu sing nam e s p ace std;i n t i=1 5;int m a i n
7、()i n t i;i=100;:i=i+l;c out::i en d 1;r etur n 0;)答:1012.19 写出下列程序的运营结果。#i n c lu d e u sing n a mesp ace std;v oid f(i n t&m,i n t n)i nt temp;t em p=m;m=n;n=t e mp;int m a i n()i nt a=5,b=10;f(a,b);cout a H Mben d 1 ;retu r n 0;答:10 102.2 0 分析下面程序的输出结果。#i n c Iudeu sing n a mes p ac e s t d;int&f
8、(int&i)i+=10;r e t u r n i;)i nt main()in t k=0;int&m=f(k);c o utkendl;m=20;c outk e ndl;return 0;)答:1020 2.2 1 举例 说明可以使用c o n s t 替代#d ef i n e以消除#d ef i n e的不安全性。答:例如#i n c l u d e#d e f i n e A 2+4W d ef i n e B A*3v oi d ma i n ()(c o u t B e n d l;)上面程序的运营结果是1 4而不是1 8 藉但很容易被认为是1 8。用 c。n s t 替代#
9、d e f i n e 就能得到对的结果幕从而消除了#d ef i n e的不安全性。#i n c 1 u d e c on s t A=2 +4;con s t B=A*3;v oi d ma i n ()co u t B en d 1 ;)运营结果为1 8。2.22编写一个C+风格的程序,用动态分派空间的方法计算Fi b on a cci数列的前2 0 项,并存储到动态分派的空间中。#i n c 1 u d eu s i n g n a m espa ce st d;i n t ma i n ()i n t i;i n t *p;p=n e w i n t 2 0 ;P o=o;cou t
10、*pV *(p+l);f o r(i=2 ;i 2 0;i +)(p i =p i 2 +p i-1 ;c ou t *(p+i)”;)d el e t e p;ret u r n 0 ;)2.23编写 一个C+风格的程序,建立一个被称为sroot ()的函数,返回其参数的二次方根。重载s root ()3次,让它返回整数、长整数与双精度数的二次方根(计算二次方根时,可以使用标准库函数s qrt()0#i n c lu d e#i n clu d e i n t sroot (i n t x)(r e t u rn(i n t)sqr t (x);f loa tsroot (f 1 oa t
11、x)r et u r n(f loa t )s q r t(x);d ou b les roo t(d o u b 1 ex)r e t u rn(d ou b le)sqrt(x);v oi dm a i n()t esti n ti4;i n tr e s u It lsr o o t (i );f loa tJ4.0;fl o atr e s u 1tJ=s r o o t (j)d ou b le k4.0 0 0 0;d ou b leresu 1 t Ks r oot (k);2.24编写一个C+风格的程序,解决百钱问题:将一元人民币兑换成1、2、5分的硬币,有多少种换法?#i n
12、 elu d e u s i n g n a m e s p a ce st d;i n t m a i n ()i n t i,j,k;i n t su m=0;f or(i=0;i =1 0 0;i +)f or(j=0;j =50;j+)f or(k=0;k=2 0;k+)(i f (i*1 +2*j+5*k=1 0 0)s u m+;)c ou t。总数为 s um e nd 1;2.25 编写一个C+风格的程序,输入两个整数,将它们按由小到大的顺序输出。规定使用变量的引用。#i n clu d e u s i n g n a m e sp a c e s t d ;v o i d s
13、w a p(i n t&x,i n t&y)(i n t t emp=x;x=y;y =t emp;)i n t ma i n ()i n t a,b;c i n a b;i f(a b)sw a p(a ,b);c o u t a p u b lic、pr o te c t e d 可以按任意顺序出现D.没有用p riva t e、pu b 1 i c、p rotected定义的数据成员是公有成员3.9 在下面有关析构函数特性的描述中,对的的是(C )。A.一个类中可以定义多个析构函数B.析构函数名与类名完全相同C.析构函数不能指定返回类型D.析构函数可以有一个或多个参数3.1 0 构造函数
14、是在(B)时被执行的。A.程序编译 B.创建对象C.创建类 D.程序装人内存 3.11 在下面有关静态成员函数的描述中,对的的是(B )。A.在静态成员函数中可以使用th is 指针B.在建立对象前,就可认为静态数据成员赋值C.静态成员函数在类外定义时,要用s t a t i c 前缀D.静态成员函数只能在类外定义3.1 2 在下面有关友元函数的描述中,对的的说法是(AA.友元函数是独立于当前类的外部函数B.一个友元函数不能同时定义为两个类的友元函数C.友元函数必须在类的外部定义D.在外部定义友元函数时,必须加关键字f r ie n d3.1 3 友元的作用之一是(A)。A.提高程序的运营效率
15、 B.加强类的封装性C.实现数据的隐藏性 D.增长成员函数的种类3.1 4 以下程序运营的结果是(B)0#i n cl u d e usin g n amespa c e std;c 1 ass Bp u b 1 ic:B()B(int i,i nt j)x=i;y=J;woid p r intb()co u t x n,y e n d 1;)pri v a te:“n t x,y;);c 1 ass Ap ubli c:A()A(i n t I,in t j);v oid p rinta();private:。B c;);A::A(int i,int j):c(i,j)voidA:print
16、a()c.pr i ntb();)int main()A a(7,8);a.pr i n t a();return 0;)A.8,9 B.7,8 C.5,6 D.9,103,1 5 以下程序的运营结果是(A)o#i n c 1 udeus i ng n a m e s p ace s t d;c 1 a s s Apublic:v o id s e t(i n t i,int j)x=i;y=j;in t get_y()r et u m y;)p r iv a te:3 i nt x,y;);c l a s s boxpublic:v oid s et(i nt l,int w,int s,i
17、n t p)。leng t h=l;b w idt h=w;1 abe 1 .set(s,p);int get_a r ea()re t urn 1 e n g t h*wid t h;e)p r ivate:。int 1 e ngth,wid t h;A label;);in t mai n()b o x b;b.s e t(4,6,1,2 0);cou t b.ge t _a r e a()e ndl;retur n 0;A.2 4B.4C.2 0D.6.1 6 以下程序的运营结果是(B)。#i n cludeu s ing namespa c e s t d;class S amp 1
18、e(p u b lie:Sam p le(int i,i nt j)x=i;6 y=j;)voi d d isp()c out”d i s plen d 1 ;0 void d i s p()c o nst3 c o utd i sp2nend 1 ;e)p r i v a t e:i nt x,y;;int main()c o nst S a mpl e a(1,2);a.d i s p();return 0;A.disp 1 B.d i sp2C.d i spl d isp2D.程序编译犯错 3.1 7 以下程序的运营结果是(B )。#includeu sin g names p a c
19、e std;cl a s s R(p u b lie:0 R(int rl,i nt r2)o Rl=rl;o R2=r2;)o voi d p ri n t();void print()const;p r iva t e:int RI,R2;;v o id R:p r int()c o u t R lM,H R 2 e n d l;)void R:p r i nt()c o n stco u t R 1 n R2e n d 1 ;)in t main()R a(6,8);const R b(56,8 8);b.p ri n t();re t u m 0;A.6,8 B.56,88 C.0,3
20、.1 8 写出下面程序的运营结果。#includeu sing nam e s p ac e s td;cl a ss toy p u b lie:toy(i n t q,i n t p)quan=q;P r ice=p;。i n t get_ q ua n()。return q u an;0 o int g et_ p ric e()o return p r i c e;)pri v ate:int qu a n,p r i ce;);int main()to y op3 2=toy(10,2 0),t o y(30,48),o t oy(5 0,68),toy(7 0,80),toy(90
21、,l 6),t oy(11,120),D.8,6;for(inti=0;i 3;i+)co u top i 0.g e t_ quan(),;c o u t opi0.g e t_pr i c e()n;cou t op i 1.g e t_ q uan()co u t o p il.g e t_ pric e()n;coutend 1 ;re tu rn 0;)1 0,2030,4 85 0,6870,8 090,161 1,120 3.1 9 写出下面程序的运营结果。#in c lu d eusing nam e spa c e s t d;c 1 a ss ex a mpl e p u
22、blic:exam p 1 e(i n t n)i=n;c o u tC o n s t r u c ti n gn;)e x amp 1 e()coutDest r u cting n;Ant get_i()。retur n i;)pr i v ate:int i;);int s q r_i t(e x a mple o)retu r n o.geti()*o.g et_i();)int ma i n()example x(1 0);cout x.g e ti()endl;co u t s qrjt(x)e nd 1 ;retu r n 0;)101 00Destr u c tingDest
23、ruc t i n g3.2 0 写出下面程序的运营结果。#includeusin g n a mespace std;clas s aClass p ub 1 ic:。a C las s()t o t a 1+;a Cl a ss()。t otal-;)Nnt g e ttotal()r et u m to t a 1 ;private:sta t ic i nt t ota 1 ;i nt aC 1 a ss::to t al=0;i nt main()a Cl a s s ol,o2,o3;coutol.gettotal()n o b j e cts in e xis t encen,r
24、;aClass*p;p=new aClass;if(!p)co u t n Allo catio n er r o r nn;return 1;)cou t o 1 .g e 11 otal();cou t ob j e c ts in existen c e a fte r a llo cationn;delete p;c o u t ol.ge t t o t a 1 ();c o u tnobj e cts i n e xistence a f ter de 1 etion n;return 0;3obje c t s in existenc e4 o bj e cts in exist
25、ence afte r ai l ocation3object s in existence aft e r d elet i on.2 1 写出下面程序的运营结果。#i nclu d eusing namesp ace s t d;cl a s s t est p u bl i c:。te s t();t e s t();p riva t e:Ant i;test:te s t()i=25;for(int ct r=0;ctr10;ctr+)c o u t H Coun t i ng a t c tr n)test anObject;int m a in()r e t ur n 0;C o
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 面向 对象 程序设计 离线 作业 答案
限制150内