77范文网 - 专业文章范例文档资料分享平台

面向对象程序设计作业参考答案(2)

来源:网络收集 时间:2019-03-15 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

用第三个构造函数。Date d4; 这行代码具有二义性,可以调用第一个构造函数,也可以调用第二个构造函数。解决的办法就是去掉第二、三和四个构造函数。

4、建立一个对象数组,内放5个学生的数据(学号、成绩),用指针指向数组首元素,输出第1,3,5个学生的数据。 程序代码如下: #include using namespace std;

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 using namespace std;

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 #include using namespace std; class Complex{ public:

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 using namespace std; class A{ public:

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; }

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库面向对象程序设计作业参考答案(2)在线全文阅读。

面向对象程序设计作业参考答案(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/520635.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: