版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、更多电大形考作业答案、电大考试小抄、电大试题库、统考资料、请百度一下“电大天堂” 面向对象程序设计形成性考核册作业四一、填空题:1. 设px是指向一个类对象的指针变量,则执行 “delete px;”语句时,将自动调用该类的( c )。 a. 无参构造函数 b. 带参构造函数 c. 析构函数 d. 拷贝构造函数 2. 假定ab为一个类,则执行 “ab a10;”语句时调用该类无参构造函数的次数为( d )。 a. 0 b. 1 c. 9 d. 10 3. 假定ab为一个类,则执行 “ab a(2), b3, *p4;”语句时共调用该类构造函数的次数为( b )。 a. 3 b. 4 c. 5
2、d. 9 4. 假定ab为一个类,px为指向该类的一个含有n个对象的动态数组的指针,则执行“delete px;”语句时共调用该类析构函数的次数为( c )。 a. 0 b. 1 c. n d. n+1 5. 对类中引用成员的初始化是通过构造函数中给出的( c )实现的。 a. 函数体 b. 参数表 c. 初始化表 d. 初始化表或函数体 6. 一个类的静态数据成员所表示属性 ( c )。 a. 是类的或对象的属性 b. 只是对象的属性 c. 只是类的属性 d. 类和友元的属性 7. 被非静态成员函数访问的类的数据成员(a )。 a. 可以是非静态数据成员或静态数据成员 b. 不可能是类的静态
3、数据成员 c. 只能是类的非静态数据成员 d. 只能是类的静态数据成员 8. 引入友元的主要目的是为了( c )。 a. 增强数据安全性 b. 提高程序的可靠性 c. 提高程序的效率和灵活性 d. 保证类的封装性 9. 在重载一个运算符时,其参数表中没有任何参数,这表明该运算符是( b )。 a. 作为友元函数重载的1元运算符 b. 作为成员函数重载的1元运算符 c. 作为友元函数重载的2元运算符 d. 作为成员函数重载的2元运算符 10. 如果表达式a+b中的“+”是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表示为( a )。 a. a.operator+(b) b. b.op
4、erator+(a) c. operator+(a,b) d. operator(a+b) 11. 如果表达式+a中的“+”是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表示为( d )。 a. a.operator+(1) b. operator+(a) c. operator+(a,1) d. a.operator+() 12. 一个程序中数组a和变量k定义为“int a510,k;”,且程序中包含有语句“a(2,5)=+k*3;”,则此语句中肯定属于重载操作符的是( a )。 a. ( ) b. = c. + d. * 13. 下面是重载双目运算符+的普通函数原形,其中最符合
5、+原来含义的是( a )。 a. value operator+(value, value); b. value operator+(value,int); c. value &operator+(value, value); d. value &operator+(value&, value&); 14. 关于插入运算符next _指向队首结点的后继(即下一个)结点。 3. 在一个用链表实现的队列类中,若链队为空或只含有一个结点,则队首指针的值与队尾指针的值_相同_。 4一个类的_析构_函数通常用于实现释放该类对象中指针成员所指向的动态存储空间的任务。 5定义类动态对象数组时,其元素只能靠自
6、动调用该类的_无参构造函数_来进行初始化。 6. 假定 ab为一个类,则执行“ab a10;”语句时,系统自动调用该类构造函数的次数为_10_。 7对类中引用成员的初始化只能通过在构造函数中给出的_初始化表_来实现。 8. 假定要把aa定义为ab类中的一个引用整数型数据成员,则定义语句为_ int& aa;_。 9假定用户为类ab定义了一个构造函数“ab(int aa) a=aa;”,则系统_不会_为该类自动定义一个无参构造函数ab() 。 10假定用户为类ab定义了一个构造函数“ab(int aa=0):a(aa)”,则定义该类的对象时,可以有_2_种不同的定义格式。 11假定用户为类ab定
7、义了一个构造函数“ab(int aa=0, int bb=0) a=aa; b=bb;”,则定义该类的对象时,可以有_3_种不同的定义格式。 12假定用户只为类ab定义了一个构造函数“ab():a(0),b(0)”,则定义该类对象x的定义语句“ab x(5);”是_错误_(正确/错误)的。 13. 静态成员函数 只能_访问类的静态数据成员, _不能_ 访问类的非静态数据成员。 14. 重载运算符时,该运算符的_优先级_、结合性以及操作符的个数不允许改变。 15. 作为类的成员函数重载一个运算符时,参数表中只有一个参数,说明该运算符有_2_个操作数。 16. 重载抽取运算符时,其运算符函数的返回
8、值类型应当是_ istream &_。 17. 类型转换函数没有_返回值_类型,而且参数表为_空_。 18. 当保护继承时,基类的_公有和保护_成员在派生类中成为保护成员,派生类对象不能直接访问基类的 任何 _成员。19. 引进虚基类的根本目的是为了消除_二义性_。三、程序填空: 1. 已知一个利用数组实现栈的类定义如下:const int array_size=10;class stack public:void init() top=-1; /初始化栈为空 void push(int newelem); /向栈中压入一个元素int pop(); /从栈顶弹出一个元素bool empty()
9、 /判栈空 if(top=-1) return true;else return false;int depth() return top+1; /返回栈的深度void print(); /按照后进先出原则依次输出栈中每个元素,直到栈空为止private:int elemarray_size; /用于保存堆栈元素的数组int top; /指明栈顶元素位置的指针; 该类的pop和print函数的实现分别如下:_(1)_ if(top=-1) cout栈空!endl;exit(1); /中止运行return _(2)_;void stack:print() while(!empty() cout_
10、(3)_ ;(1) int stack:pop() (2) elemtop- (3) pop()2. #include #include class a int *a; int n; int maxlen; public: a(): a(0), n(0), maxlen(0) a(int *aa, int nn, int mm) n=nn; maxlen=mm; if(nmaxlen) exit(1); _(1)_; /由a指向长度为maxlen的动态数组 for(int i=0; in; i+) ai=aai; a() delete a; int getvalue(int i) _(2)_
11、/函数体返回ai的值 ; void main() int b10=1,2,3,4,5,6,7,8,9,10; a r(b,10,10); int i,s=0; for(i=0; i10; i+) _(3)_ ; /把r对象的a数据成员中的每个 /元素值依次累加到s中 couts=sendl; (1) a=new intmaxlen (2) return ai; (3) s+=r.getvalue(i) 3. 在下面一段类定义中, derived类公有继承了基类base。需要填充的函数由注释内容给出了功能。class base private: int mem1,mem2; /基类的数据成员 p
12、ublic: base(int m1,int m2) mem1=m1; mem2=m2; void output()coutmem1 mem2 ; /.;class derived: public base private: int mem3; /派生类本身的数据成员 public: /构造函数,由m1和m2分别初始化mem1和mem2,由m3初始化mem3 derived(int m1,int m2, int m3); /输出mem1,mem2和mem3数据成员的值 void output() _(1)_; coutmem3endl;/.;derived:derived(int m1,int
13、 m2, int m3): _(2)_ _(3)_;(1) base:output() (2) base(m1,m2) (3) mem3=m3四、写出程序运行结果: 1. #include class franction /定义分数类 int nume; /定义分子 int deno; /定义分母 public: /把*this化简为最简分数,具体定义在另外文件中实现void fransimp(); /返回两个分数*this和x之和,具体定义在另外文件中实现franction franadd(const franction& x); /置分数的分子和分母分别0和1 void initfranc
14、tion() nume=0; deno=1; /置分数的分子和分母分别n和d void initfranction(int n, int d) nume=n; deno=d; /输出一个分数void franoutput() coutnume/denoendl; ;void main() franction a,b,c,d; a.initfranction(6,15); b.initfranction(3,10); c.initfranction(); c=a.franadd(b); d=c.franadd(a);couta: ; a.franoutput(); coutb: ; b.fran
15、output(); coutc: ; c.franoutput(); coutd: ; d.franoutput(); 程序运行结果为:a: 6/15 b: 3/10 c: 7/10 d: 11/102. #includeclass a int a,b;public: a() a=b=0; a(int aa, int bb) a=aa; b=bb;int sum() return a+b;int* mult() int *p=new int(a*b);return p;void main() int *k;a x(2,3), *p; p=new a(4,5); coutx.sum() *(x.
16、mult()endl; coutsum() mult()endl; delete k;程序运行结果为:5 6 9 203. (此题作业本上缺漏)#includeclass datepublic:date(int y=2000,int m=1,int d=1)year=y;month=m;day=d;void printdate()coutyear/month/dayendl;protected:int year,month,day;class timepublic:time(int h=0,int m=0,int s=0)hour=h;minutes=m;seconds=s;void prin
17、ttime()couthour:minutes:secondsendl;protected:int hour,minutes,seconds;class date_time : public date, public timepublic:date_time();date_time(int y,int mo,int d,int h=0,int mi=0,int s=0):date(y,mo,d),time(h,mi,s);void printdate_time()printdate();printtime();void main()date_time a,b(2002,10,1,23,59,5
18、9),c(2002,12,31);a.printdate_time();b.printdate_time();c.printdate_time();程序运行结果为:2000/1/10:0:02002/10/123:59:592002/12/310:0:04. (此题作业本上缺漏)/* test.h */#includeclass pointpublic:void initp(float x0=0,float y0=0)x=x0,y=y0;void move(float xf,float yf)x+=xf;y+=yf;float getx()return x;float gety()return
19、 y;private:float x,y;class rectangle:public pointpublic:void initr(float x,float y,float w,float h)initp(x,y);w=w;h=h;void zoomr(float k)w*=k,h*=k;float geth()return h;float getw()return w;private:float w,h;/* test.cpp *#include”test.h”void main()rectangle rect;rect.initr(10,20,30,40);coutrect.getx(
20、),rect.gety(),rect.getw(),rect.geth()endl;rect.move(5,6);coutrect.getx(),rect.gety(),rect.getw(),rect.geth()endl;rect.zoomr(7);coutrect.getx(),rect.gety(),rect.getw(),rect.geth()next; return c; 假定intnode的类型定义为: struct intnode int data; /结点值域 intnode* next; /结点指针域 ;函数的功能为:统计出以f为表头指针的链表中结点的个数。 2. int
21、f(const char *s) int i=0; while(*s+)i+; return i; ;函数的功能为:求出并返回字符指针参数s所指向的字符串长度。六、程序改错,请根据程序段或函数模块的功能改写个别地方的错误。 1. 下面是分数类fract的定义及测试主程序,在类定义及其友元函数定义中有两处错误,更正错误后程序应显示41/28,请指出错误所在行的行号并给出改正意见。class fract int den; /分子 int num; /分母public: fract(int d=0,int n=1):den(d),num(n) /1行 friend fract &operator+=
22、(fract,fract&); /2行 void show() coutden/num; /3行; /4行 friend fract &operator+=(fract f1,fract f2) /5行 /7行 f1.den=f1.den*f2.num+f1.num*f2.den; /8行 f1.num*=f2.num; /9行 return f1; /10行void main() fract fr(3,4); fr+=fract(5,7); fr.show();错误行的行号为_2_和_5_。分别改正为_ friend fract &operator+=(fract&,fract);_ 和_
23、fract &operator+=(fract &f1,fract f2);_。七、编程: 1. 根据下面类中构造函数的原型和注释写出它的类外定义。class strings char *s; /指向动态分配的字符串数组空间int n; /记录字符串长度public:strings(char*str); /构造函数,利用str字符串长度初始化n, /利用str字符串初始化s所指的字符串空间strings(strings& str); /拷贝构造函数strings& give(strings& str); /实现str赋值给*this的功能 strings uion(strings& str);
24、 /实现*this和str中的字符串合并的 /功能,把合并结果存入临时对象并返回int lenth() return n; /返回字符串长度void print() coutsx)t=x;x=y;y=t; int variance()return x*x-y*y; /其它函数从略;void main() a_class a_obj(3,5); coutresult:a_obj.variance()x)t=x;x=y;y=t; /其它函数从略 friend int variance (a_class& ac); /参数名任意;int variance (a_class& ac) return ac.x*ac.x-ac.y*ac.y;void main() a_class a_obj(3,5); coutresult:variance(a_obj)endl;3. (此题作业本上缺漏)已知类定义如下,其中shape为基类,circle和rectangle分别shap
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 专项消防设备增设协议样本版A版
- 2025年度厂房装饰装修工程节能合同范本4篇
- 2025年度创新产业园厂房转租服务合同标准4篇
- 做菜知识培训课件图片
- 二零二五年度体育场馆建设担保协议3篇
- 2025年度高原地区柴油发电机组销售及售后服务合同3篇
- 《社区调解实务讲解》课件
- 2024年04月河南郑州银行信息科技部社会招考笔试历年参考题库附带答案详解
- 个人对公司长期借款合同(2024年版)
- 专业美甲技术劳务合作协议样本(2024版)版B版
- 科室医疗质量与安全管理小组工作制度
- 中华民族共同体概论课件第五讲大一统与中华民族共同体初步形成(秦汉时期)
- 初二生地会考试卷及答案-文档
- 私营企业廉洁培训课件
- 施工单位值班人员安全交底和要求
- 中国保险用户需求趋势洞察报告
- 数字化转型指南 星展银行如何成为“全球最佳银行”
- 中餐烹饪技法大全
- 灵芝孢子油减毒作用课件
- 现场工艺纪律检查表
- 医院品管圈与护理质量持续改进PDCA案例降低ICU病人失禁性皮炎发生率
评论
0/150
提交评论