面向对象程序设计作业参考答案
更新时间:2024-06-30 12:16:01 阅读量: 综合文库 文档下载
习题一
5、分析下面程序运行的结果。 #
cout<<”a”<<”C++”;
cout<<”program.”< 输出结果:ThisisaC++program. 6、分析下面程序运行的结果。 #include 输出结果:a + b = 33 8、在你所用的C++系统上,输入以下程序,进行编译,观察编译情况,如果有错误,请修改程序,在进行编译,直到没有错误,然后进行连接和运行,分析运行结果。 修改后的程序如下: #include 9、输入以下程序,进行编译,观察编译情况,如果有错误,请修改程序,在进行编译,直到没有错误,然后进行连接和运行,分析运行结果。 修改后的程序如下: #include int add(int x,int y) { int z = x + y; return z; } 习题二 1、请检查下面的程序,找出其中的错误(先不要上机,在纸面上作人工检查),并改正之。然后上机调试,使之能正常运行。运行时从键盘输入时、分、秒的值,检查输出是否正确。 改正以后的程序如下: #include public: void set_time(void); void show_time(void); private: int hour; int minute; int sec; }; Time t; int main() { t.set_time(); t.show_time(); return 0; } void Time::set_time(void) { cin>>hour; cin>>minute; cin>>sec; } void Time::show_time(void) { cout< 参考程序如下: #include public: void SetValue() { for(int i = 0; i < 3;i++) { cin>>length[i]; cin>>width[i]; cin>>height[i]; } } void calArea() { for(int i = 0; i < 3;i++) { area[i] = length[i] * width[i] * height[i]; } } void showArea() { calArea(); for(int i = 0; i < 3;i++) { cout<<\长方柱\的面积为:\ } } private: double length[3],width[3],height[3],area[3]; }; int main() { Cuboid c; c.SetValue(); c.showArea(); return 0; } 习题三 1、构造函数和析构函数的作用是什么?什么时候需要自己定义构造函数和析构函数? 答: 构造函数的作用:用来初始化对象。 析构函数的作用:在删除一个对象前被调用,释放该对象成员的内存空间,以及其它一些清理工作。 用户需要按照一定的需求去初始化对象时,需要定义构造函数。同理,释放对象时,用户需要按照一定的需求去释放内存或者其他清理工作,需要定义析构函数。 2、分析下面的程序,写出其运行时的输出结果。 #include public: Date(int m,int d,int y):month(m),day(d),year(y){} Date(int m,int d):month(m),day(d){year = 2005;} Date(int m):month(m){day = 1;year = 2005;} Date(){month = 1;day = 1;year = 2005;} void display(){cout< int main(){ Date d1(10,13,2005); Date d2(12,30); Date d3(10); Date d4; d1.display(); d2.display(); d3.display(); d4.display(); return 0; } 输出结果如下: 10/13/2005 12/30/2005 10/1/205 1/1/2005 3、题目略。 答:有问题,Date d2(12,30);这行代码具有二义性,可以调用第一个构造函数,也可以调用第四个构造函数。Date d3(10) 这行代码具有二义性,可以调用第一个构造函数,也可以调 用第三个构造函数。Date d4; 这行代码具有二义性,可以调用第一个构造函数,也可以调用第二个构造函数。解决的办法就是去掉第二、三和四个构造函数。 4、建立一个对象数组,内放5个学生的数据(学号、成绩),用指针指向数组首元素,输出第1,3,5个学生的数据。 程序代码如下: #include class Student { public: Student(int n,float s):num(n),score(s){} void display(){cout< int main() { Student s[5] = {Student(1,91),Student(2,92),Student(3,93),Student(4,94),Student(5,95)}; Student *ps = s; ps->display(); ps++; ps++; ps->display(); ps++; ps++; ps->display(); return 0; } 6、阅读下面的程序,分析其执行结果,写出输入结果。 #include class Student { public: Student(int n,float s):num(n),score(s){} void change(int n ,float s){num = n; score = s;} void display(){cout< int num; float score; }; int main() { Student stud(101,78.5); stud.display(); stud.change(101,80.5); stud.display(); return 0; } 输出结果如下: 101 78.5 101 80.5 7、将第6题得程序分别做如下修改,分析所修改部分的函数以及编译和运行的情况。 (1)将main函数第2行改为 const Student stud(101,78.5); 答:有错误,常对象只能调用常成员函数,而display和change函数都不是常成员函数。 (2)在(1)的基础上修改程序,是只能正常运行,用change函数修改数据成员num和score的值。 答:首先将change和display成员函数修改为常成员函数,然后将数据成员num和score修改为可变类型(在num和score的数据类型前加mutable)。 (3)将main函数改为 int main() { Student stud(101,78.5); Student *p = &stud; p->display(); p->change(101,80.5); p->display(); return 0; } 其他部分仍同第6题的程序。 (4)在(3)的基础上将main函数改为 const Student * p = &stud; 答:有错误。p指针是个常量指针,指向的是一个常对象,故而解决的办法同题(2)。 (5)在把main函数第3行改为 Student * const p = &stud; 答:没有错误。p指针是个指针常量,指向stud以后不能再指向其他对象。 习题四 1、定义一个复数类Complex,重载运算符“+”、“=”,“*”,“、”,使之能进行复数的加、减、乘、除。运算符重载函数作为Complex类得成员函数。编程序,分别求两个复数之和、差、积和商。 #include Complex(double r=0,double i=0); Complex operator +(const Complex& c); Complex operator -(const Complex& c); Complex operator *(const Complex& c); Complex operator /(const Complex& c); void print() const; private: double real, imag; }; Complex::Complex(double r,double i){ real=r; imag=i; } Complex Complex::operator +(const Complex& c){ double r=real+c.real; double i=imag+c.imag; return Complex(r,i); } Complex Complex::operator -(const Complex& c){ double r=real-c.real; double i=imag-c.imag; return Complex(r,i); } Complex Complex::operator *(const Complex& c){ double r=real * c.real - imag * c.imag; double i=real * c.imag + imag * c.real; return Complex(r,i); } Complex Complex::operator /(const Complex& c){ double t = pow(c.imag,2) + pow(c.real,2); double r=real * c.real + imag * c.imag; double i=imag * c.real -real * c.imag; return Complex(r/t,i/t); } void Complex::print() const{ cout<<'('< int main() { Complex a(3,2),b(0,3),c; c = a + b; c.print(); c = a - b; c.print(); c = a * b; c.print(); c = a / b; c.print(); return 0; } 习题五 7、有以下程序,请完成下面的工作: ① 阅读程序,写出运行时输出的结果。 #include A(){a = 0; b = 0;} A(int i){a = i; b = 0;} A(int i, int j){a = i; b = j;} void display(){cout<<\private: int a; int b; }; class B : public A { public: B(){c = 0;} B(int i):A(i){c = 0;} B(int i, int j):A(i,j){c = 0;} B(int i, int j, int k):A(i,j){c = k;} void display1() { display(); cout<<\ } private: int c; }; int main() { B b1; B b2(1); B b3(1,3); B b4(1,3,5); b1.display1(); b2.display1(); b3.display1(); b4.display1(); return 0; } 输出结果如下: a=0 b=0 c=0 a=1 b=0 c=0 a=1 b=3 c=0 a=1 b=3 c=5 8、有以下程序,请完成下面的工作: ① 阅读程序,写出运行时输出的结果。 #include A(){cout<<\ ~A(){cout<<\}; class B : public A { public: B(){cout<<\ ~B(){cout<<\}; class C : public B { public: C(){cout<<\ ~C(){cout<<\}; int main() { C c1; return 0; } 输出结果如下: constrcting A constrcting B constrcting C destrcting C destrcting B destrcting A 习题六 4、写一个程序,定义抽象基类Shape,由它派生出3个派生类,Circle(圆形)、Rectangle(矩形)、Triangle(三角形),用一个函数printArea分别输出以上三只的面积,3个图形的数据在定义对象时给出。 代码如下: #include public: void virtual printArea() = 0;//纯虚函数 }; //派生类Circle class Circle : public Shape { public: Circle(double r = 0):radius(r){}//构造函数 void printArea(){cout<<3.14159 * radius * radius< double radius;//数据成员,表示半径 }; //派生类Rectangle class Rectangle : public Shape { public: Rectangle(double w,double h):width(w),height(h){}//构造函数 void printArea(){cout< double width;//数据成员,表示宽 double height;//数据成员,表示长 }; //派生类Triangle class Triangle : public Shape { public: Triangle(double w,double h):width(w),height(h){} //构造函数 void printArea(){cout< double width;//数据成员,表示底 double height;//数据成员,表示高 }; //主函数 int main() { Shape *s; Circle circle(1.0); Rectangle rectangle(1.0,1.0); Triangle triangle(1.0,1.0); s = &circle; s->printArea(); s = &rectangle; s->printArea(); s = ▵ s->printArea(); return 0; }
正在阅读:
面向对象程序设计作业参考答案06-30
2016-2022年中国藏银首饰行业市场分析及投资决策研究报告 - 图文10-16
征地计划书11-06
一个让我感到温暖的人作文700字07-11
超市商品陈列窍门多05-01
社区世界读书日活动方案两篇_世界读书日04-04
格力空调室内外电气连接培训教材 - 图文01-25
咨询师继续教育工程项目环境影响分析评价47237汇总03-10
传播学概论考试试题01-25
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 程序设计
- 面向
- 对象
- 作业
- 答案
- 参考
- 2014年中考历史复习七年级下学期历史测试题
- 2010山东省直事业单位公开招聘笔试真题教育类
- 综合办公室管理制度(最全)
- 基于S7-200PLC的电梯控制系统设计毕业论文 - 图文
- 三年级上册科学教案
- 锂离子电池正极材料lini13co13mn13o2项目申请立项可研报告
- 建筑工程旁站监理方案范本
- 心理统计与测量试题李明德老师
- 2018年春期七年级下册数学教学计划华师大版
- B6 平衡充 中文说明书
- 小学数学生态课堂“对话式教学”的实践与研究
- 班主任一日常规
- 高清摄像机项目可行性研究报告(目录) - 图文
- 考点5:计算机概述
- 红旗团支部申请材料 - 图文
- 山东省威海市2015届高三第二次高考模拟数学(理)试题 Word版含
- 1.长度测量、运动
- 荆河戏
- 半导体铅含量测试作业指导书
- 2014-2015第1学期社团活动计划