C++上机实验报告_c上机实验报告

其他范文 时间:2020-02-28 07:39:51 收藏本文下载本文
【www.daodoc.com - 其他范文】

C++上机实验报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c上机实验报告”。

C++上机实验报告

实验名称:实验

专业班级:

名:

号:

实验日期:11 实验

目录

1.实验目的

2.实验内容

3.程序代码

4.调试结果

5.实验心得 1.实验目的 实验10(1)进一步了解运算符重载的概念和使用方法;(2)掌握几种常用的运算符重载的方法;(3)了解转换构造函数的使用方法;

(4)了解在Visual C++6.0环境下进行运算符重载要注意的问题。实验11(1)了解继承在面向对象程序设计中的重要作用;(2)进一步理解继承和派生的概念;

(3)掌握通过继承派生出一个新的类的方法;(4)了解虚基类的作用和用法。

2.实验内容 实验10 事先编好程序,上机进行调试和运行程序,分析结果。(1)声明一个复数类Complex,重载运算符“+”,“-”,“*”,“/”,使之能用于复数的加,减,乘,除,运算符重载函数作为Complex类成员的函数。编程序,分别求两个复数之和,差,积和商。(2)声明一个复数类Complex,重载运算符“+”,使之能用于复数的加法运算。参加运算的两个运算量可以都是类对象,也可以其中有一个是整数,顺序任意。

运行程序,分别求两个复数之和,整数和复数之和,(3)有两个矩阵a和b,均为2行3列。求两个矩阵之和。重载运算符“+”,使之能用于两个矩阵相加

(4)声明一个Teacher(教师)类和一个Student(学生)类,二者有一部分数据成员是相同的,例如num(号码),name(名字),sex(性别)。编写程序,将一个Student对象(学生)转换为Teacher(教师)类,只将以上三个相同的数据成员移植过去。可以设想为:一位学生大学毕业了,留校担任教师,他原有的部分数据对现在的教师身份来说任然是有用的,应当保留并成为其教师的数据的一部分。

实验11

事先编写好程序,上机调试和运行程序,分析结果。

(1)将教材第11章例11.1的程序片段补充和改写成一个完整的、正确的程序,用公用继承方式。在程序中应当包括输入数据的函数,在程序运行时输入num,name,sex,age,addr的值,程序应输出以上5个数据的值。

(2)将教材第11章例11.3的程序修改、补充,写成一个完整、正确的程序,用保护继承方式。在程序中应包括输入数据的函数。(3)修改上面第(2)题的程序,改为用公用继承方式。上机调试程序,使之能够正确运行并得到正确的结果。

对这两种继承方式做比较分析,考虑在什么情况下二者不能互相替换。

(4)分别声明Teacher(教师)类和Cadre(干部)类,采用多 重继承方式由这两个类派生出新类Teacher-Cadre(教师兼干部)。要求:

Ⅰ.在两个基类中都包含姓名、年龄、性别、地址、电话等数据成员。

Ⅱ.在Teacher类中还包含数据成员title(职称),在Cadre类中还包含数据成员post(职务)。在Teacher-Cadre类中还包含数据成员wages(工资)。

Ⅲ.在基类中的姓名、年龄、性别、地址、电话等数据成员用相同的名字,在引用这些数据成员时,指定作用域。Ⅴ.在类体中声明成员函数,在类外定义成员函数。

Ⅵ.在派生类Teacher-Cadre的成员函数show中调用Teacher类中的display函数,输出性命、年龄、性别、职称、地址、电话,然后再用cout语句输出职务与工资。

3.程序代码 实验10(1)

#include using namespace std;cla Complex {public: Complex(){real=0;imag=0;} Complex(double r,double i){real=r;imag=i;} Complex operator +(Complex &c2);Complex operator-(Complex &c2);Complex operator*(Complex &c2);Complex operator/(Complex &c2);void display();private: double real;double imag;};

Complex Complex::operator +(Complex &c2){Complex c;c.real=real+c2.real;c.imag=imag+c2.imag;return c;}

Complex Complex::operator-(Complex &c2){Complex c;c.real=real-c2.real;c.imag=imag-c2.imag;return c;}

Complex Complex::operator*(Complex &c2){Complex c;c.real=real*c2.real-imag*c2.imag;c.imag=imag*c2.real+real*c2.imag;return c;}

Complex Complex::operator/(Complex &c2){Complex c;c.real=(real*c2.real+imag*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag);c.imag=(imag*c2.real-real*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag);return c;} void Complex::display(){cout

(2)

#include using namespace std;cla Complex {public: Complex(){real=0;imag=0;} Complex(double r,double i){real=r;imag=i;} Complex operator+(Complex &c2);Complex operator+(int &i);friend Complex operator+(int &,Complex &);void display();private:

double real;

double imag;};

Complex Complex::operator+(Complex &c){return Complex(real+c.real,imag+c.imag);}

Complex Complex::operator+(int &i){return Complex(real+i,imag);}

void Complex::display(){cout

Complex operator+(int &i,Complex &c){return Complex(i+c.real,c.imag);}

int main(){Complex c1(3,4),c2(5,-10),c3;int i=5;c3=c1+c2;cout

#include using namespace std;cla Matrix {public: Matrix();friend Matrix operator+(Matrix &,Matrix &);void input();void display();private:

int mat[2][3];};

Matrix::Matrix(){for(int i=0;i

Matrix operator+(Matrix &a,Matrix &b){Matrix c;for(int i=0;i

void Matrix::input(){cout>mat[i][j];}

void Matrix::display(){for(int i=0;i

#include using namespace std;cla Student {public: Student(int,char[],char,float);int get_num(){return num;} char * get_name(){return name;} char get_sex(){return sex;} void display(){cout

int num;

char name[20];

char sex;

float score;};

Student::Student(int n,char nam[],char s,float sco){num=n;strcpy(name,nam);sex=s;score=sco;}

cla Teacher {public: Teacher(){} Teacher(Student&);Teacher(int n,char nam[],char sex,float pay);void display();private:

int num;

char name[20];

char sex;

float pay;};

Teacher::Teacher(int n,char nam[],char s,float p} {num=n;strcpy(name,nam);sex=s;pay=p;}

Teaxher::Teacher(Student& stud){num=stud.get_num();strcpy(name,stud.get_name());sex=stud.get.sex();pay=1500;}

void Teacher::display(){cout

int main(){Teacher teacher1(10001,“Li”,'f',1234.5),teacher2;Student student1(20010,“Wang”,'m',89.5);cout

#include using namespace std;cla Student {public:

void get_value()

{cin>>num>>name>>sex;}

void display()

{cout

cout

int num;

char name[10];char sex;};

cla Student1:public Student {public: void get_value_1(){get_value();cin>>age>>addr;} void display_1(){cout

char addr[30];};

int main(){Student1 stud1;stud1.get_value_1();stud1.display();stud1.display_1();return 0;}(2)

#include using namespace std;cla Student {public: void get_value();

void display();protected: int num;

char name[10];

char sex;};

void Student::get_value(){cin>>num>>name>>sex;} void Student::display(){cout

cla Student1:protected Student {public: void get_value_1();void display1();private: int age;char addr[30];};

void Student1::get_value_1(){get_value();cin>>age>>addr;} void Student1::display1(){cout

int main(){Student1 stud1;stud1.get_value_1();stud1.display1();return 0;}(3)

#include using namespace std;cla Student {public: void get_value();void display();protected:

int num;

char name[10];

char sex;};

void Student::get_value(){cin>>num>>name>>sex;}

void Student::display(){cout

cla Student1:public Student {public: void get_value_1();void display1();private:

int age;

char addr[30];};

void Student1::get_value_1(){get_value();cin>>age>>addr;} void Student1::display1(){cout

int main(){Student1 stud1;stud1.get_value_1();stud1.display1();return 0;}(4)

#include #include using namespace std;cla Teacher {public:

Teacher(int,char[],char);void display();private: int num;char name[20];char sex;};

Teacher::Teacher(int n,char nam[],char s){num=n;strcpy(name,nam);sex=s;}

void Teacher::display(){cout

cla BirthDate {public: BirthDate(int,int,int);void display();void change(int,int,int);private: int year;int month;int day;};

BirthDate::BirthDate(int y,int m,int d){year=y;month=m;day=d;}

Void BithDate::display(){cout

void BirthDate::change(int y,int m,int d){year=y;month=m;day=d;}

cla Profeor:public Teacher {public: Profeor(int,char[],char,int,int,int,float);void display();void change(int,int,int);private: float area;BirthDate birthday;}

Profeor::Profeor(int n,char name[20],char s,int y,int m,int d,float a): Teacher(n,name,s),birthday(y,m,d),area(a){}

void Profeor::display(){Teacher::display();birthday.display();cout

Int main(){Profeor profl(3012,”Zhang”,’f’,1949,10,1,125.4);cout

4.调试结果

实验10(1)c1+c2=(8,-6i)c1-c2=(-2,14i)c1*c2=(55,-10i)c1/c2=(-0.2,0.4)(2)c1+c2=(8,-6i)i+c1=(8,4i)c1+i=(8,4i)

(3)

input value of Matrix:11 22 33 44 55 66 input value of Matrix:12 13 14 15 16 17 Matrix a: 11 22 33 44 55 66 Matrix b: 12 13 14 15 16 17 Matrix c=Matrix a + Matrix b : 23 25 47 59 71 83

(4)student1 : num :20010 name:Wang sex:m score;89.5 Teacher2: num:20010 name:Wang sex:m pay:1500

实验11(1)

10101 Li M 20 Beijing num:10101 name:Li sex:M age:20 addre:Beijing

(2)

10101 Li M 20 Beijing num:10101 name:Li sex:M age:20 addre:Beijing

(3)

10101 Li M 20 Beijing num:10101 name:Li sex:M age:20 addre:Beijing

(4)The original data: num:3012 name:Zhang sex:f area:125.4

The new data: num:3012 name:Zhang sex:f birthday:6/1/1950 area:125.4 5.实验心得

这一次上机实验,除了了解到了运算符重载的概念和用法,掌握几种常用的运算符重载的方法,了解转换构造函数的使用方法,同时也能了解虚基类的用法,理解继承与派生的概念。

但是,最主要的,我觉得,是通过这一次的上机实验,我了解到,有的实验本身是没有程序错误的,但是,也会由于实验环境的影响而不能正常运行。换句话说,有的程序并不能在Visaul C++的环境下运行,而不是程序自身的问题。所以,对于没办法调试成功的程序,我们也不能一味的认为程序有错误,要学会理性的判断程序的对错,再下结论。

下载C++上机实验报告word格式文档
下载C++上机实验报告.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

    热门文章
      整站推荐
        点击下载本文