赞
踩
实验内容:
(1)声明一个复数类Complex,重载运算符“+”,“-”,“*”,“/”,使之能用于复数的加、减、乘、除,运算符重载函数作为Complex 类的成员函数。编程序,分别求两个复数之和、差、积和商。本题是《C++面向对象程序设计》第4章第2题。
请思考:你编的程序能否用于一个整数与一个复数的算术运算?如4 + ( 5 - 2i )。
(2)声明一个复数类Complex,重载运算符“+”,使之能用于复数的加法运算。参加运算的两个运算量可以都是类对象,也可以其中有一个是整数,顺序任意。例如:c1 + c2,i + c1 , c1 + i均合法(设i为整数,c1 , c2 为复数)。
运行程序,分别求两个复数之和、整数和复数之和。本题是《C++面向对象程序设计》 第4章第3题。
(3)有两个矩阵a 和b,均为2行3列,求两个矩阵之和。重载运算符“+”,使之能用于矩阵相加。如:c = a + b。本题是《C++面向对象程序设计》第4章第4题。
(4)声明一个Teacher(教师)类和一个Student(学生)类,二者有一部分数据成员是相同的,例如num(号码),name(姓名),sex(性别)。编写程序,将一个Student对象(学生)转换为Teacher(教师)类,只将以上3个相同的数据成员移植过去。可以设想为:一位学生大学毕业了,留校担任教师,他原有的部分数据对现在的教师身份来说仍然是有用的,应当保留并成为其教师的数据的一部分。本题是《C++面向对象程序设计》第4章第7题。
源码
"1.cpp“
#include<iostream> using namespace std; class Complex { public: Complex(){ real = 0; image = 0; } Complex(double r, double i){ real = r; image = i; }; Complex operator +(Complex &c2); Complex operator -(Complex &c2); Complex operator *(Complex &c2); Complex operator /(Complex &c2); void display(); private: double real; double image; }; Complex Complex::operator +(Complex &c2) { Complex c; c.real = real + c2.real; c.image = image + c2.image; return c; } Complex Complex::operator -(Complex &c2) { Complex c; c.real = real - c2.real; c.image = image - c2.image; return c; } Complex Complex::operator *(Complex &c2) { Complex c; c.real = real * c2.real-image*c2.image; c.image = image * c2.real+real*c2.image; return c; } Complex Complex::operator /(Complex &c2) { Complex c; c.real = (real * c2.real + image*c2.image) / (c2.real*c2.real + c2.image*c2.image); c.image = (image * c2.real - real*c2.image) / (c2.real*c2.real + c2.image*c2.image); return c; } void Complex::display() { cout << "(" << real << "," << image << "i)" << endl; } int main() { Complex c1(1, 2), c2(-3, -4), c3; cout<<"c1:"; c1.display(); cout<<"c2:"; c2.display(); c3 = c1 + c2; cout << "c1+c2="; c3.display(); c3 = c1 - c2; cout << "c1-c2="; c3.display(); c3 = c1*c2; cout << "c1*c2="; c3.display(); c3 = c1 / c2; cout << "c1/c2="; c3.display(); }
"2.cpp"
#include<iostream>//2 using namespace std; class Complex { public: Complex(){ real = 0; image = 0; } Complex(double r, double i){ real = r; image = i; }; Complex operator +(Complex &c2); Complex operator +(int &i); friend Complex operator+(int &, Complex&); void display(); private: double real; double image; }; Complex Complex::operator +(Complex &c2) { Complex c; c.real = real + c2.real; c.image = image + c2.image; return c; } Complex Complex::operator +(int &i) { Complex c; c.real = real + i; c.image = image; return c; } Complex operator+(int &i, Complex&c1) { Complex c; c.real = c1.real + i; c.image = c1.image; return c; } void Complex::display() { cout << "(" << real << "," << image << ")" << endl; } int main() { int i = 4; Complex c1(3, 4), c2(5, -6), c3; cout <<"i="<<i << endl; c3 = c1 + c2; cout << "c1+c2="; c3.display(); c3 = i + c1; cout << "i+c1="; c3.display(); c3 = c1 + i; cout << "c1+i="; c3.display();
"3.cpp"
#include<iostream> using namespace std; class jz { public: jz(); friend jz operator+(jz&, jz&); void input(); void display(); private: int A[2][3]; }; jz::jz() { for (int i = 0; i < 2; i++) for (int j = 0; j < 3; j++) A[i][j] = 0; } jz operator+(jz&a, jz&b) { jz c; for (int i = 0; i < 2; i++) for (int j = 0; j < 3; j++) c.A[i][j] = a.A[i][j] + b.A[i][j]; return c; } void jz::input() { cout << "请输入矩阵元素:"<<endl; for (int i = 0; i < 2; i++) for (int j = 0; j < 3; j++) cin >> A[i][j]; } void jz::display() { for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) cout << A[i][j] << " "; cout << endl; } } int main() { jz a, b, c; a.input(); cout<<"矩阵a为:"<<endl; a.display(); b.input(); cout<<"矩阵b为:"<<endl; b.display(); cout << "两个矩阵相加之后的矩阵c为:" << endl; c = a + b; c.display(); }
"4.cpp"
#include <iostream> #include <string> using namespace std; class Student { public: Student(string, string, string, float); string get_num(){return num;} string get_name(){return name;} string get_sex(){return sex;} void display() { cout<<"号码:"<<num<<endl; cout<<"姓名:"<<name<<endl; cout<<"性别:"<<sex<<endl; cout<<"成绩:"<<score<<endl; } private: string num; string name; string sex; float score; }; Student::Student(string n, string nam, string s, float so) { num = n; name= nam; sex = s; score = so; } class Teacher { public: Teacher(){} Teacher(Student&); Teacher(string n, string nam, string sex, float pay); void display(); private: string num; string name; string sex; float pay; }; Teacher::Teacher(string n, string nam, string s, float p) { num = n; name=nam; sex = s; pay = p; } Teacher::Teacher(Student& s) { num = s.get_num(); name=s.get_name(); sex =s.get_sex(); pay = 6666.6; } void Teacher::display() { cout<<"号码:"<< num<<endl; cout<<"姓名:"<< name<<endl; cout<<"性别:"<< sex<<endl; cout<<"工资:"<< pay << endl; } int main() { Teacher t1("110", "张三", "男", 3333.3), t2; Student s1("120", "李四", "男", 88.8); cout << "学生" << endl; s1.display(); t2 = Teacher(s1); cout << "老师" << endl; t2.display(); return 0; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。