当前位置:文档之家› 2014太原理工大学C++实验报告

2014太原理工大学C++实验报告

本科实验报告课程名称:C++面向对象程序设计实验项目:C++语言编程实验地点:明向校区专业班级:软件1431 学号:******XXXX 学生姓名:***指导教师:***2015年5月10 日1.运行例题程序:#include<iostream>using namespace std;void fn1(int z=5);int x=1,y=2;int main(){cout<<"Begin. . ."<<endl;cout<<"x="<<x<<endl;cout<<"y="<<y<<endl;cout<<"Evaluae x and y in main()..."<<endl;int x=10,y=20;cout<<"x="<<x<<endl;cout<<"y="<<y<<endl;cout<<"Step into fn1()..."<<endl;fn1();fn1(10);cout<<"Bace in main"<<endl;cout<<"x="<<x<<endl;cout<<"y="<<y<<endl;return 0;}void fn1(int z){static int x=100;int y=200;cout<<"x="<<x<<endl;cout<<"y="<<y<<endl;x=x+y+z;}运行结果:3.用new操作为一个包含10个整数的数组分配内存,输入若干个值到数组中,分别统计其中正数和负数的个数后再用delete操作释放内存。

#include<iostream>using namespace std;const int N=10;int main(){int *p,i,plus,minus;p=new int[N];if(!p){cout<<"内存分配错误!"<<endl;exit(1);}plus=0;minus=0;cout<<"请任意输入"<<N<<"个整数"<<endl;for(i=0;i<N;i++){cin>>p[i];if(p[i]>0)plus++;else if(p[i]!=0)minus++;}cout<<"正数的个数:"<<plus<<endl;cout<<"负数的个数:"<<minus<<endl;delete []p;return 0;}运行结果:{double m;cout<<"请输入正方形的边长:";cin>>m;area=m*m;cout<<"正方形的面积:"<<area<<endl;}else{cout<<"输入有误,请重新输入!"<<endl;cout<<"输入代码:";cin>>x;}}return 0;}运行结果:2.定义一个复数类Complex,复数的实部Real与虚部Image定义为私有数据成员。

用复数类定义复数对象c1、c2、c3,用默认构造函数将c1初始化为c1=20+40i ,将c2初始化为c2=0+0i,用拷贝构造函数将c3初始化为c3=20+40i。

用公有成员函数Dispaly()显示复数c1、c2与c3 的内容。

程序:#include<iostream>using namespace std;class Complex{private:double real,image;public:Complex(double r,double i);Complex(Complex &c);void Display();};Complex::Complex(double r,double i){real=r;image=i;}Complex::Complex(Complex &c){real=c.real;image=c.image;}void Complex::Display(){cout<<real<<"+"<<image<<"i"<<endl;}int main(){Complex c1(20,40),c2(0,0),c3(c1);cout<<"c1="; c1.Display();cout<<"c2="; c2.Display();cout<<"c3="; c3.Display();return 0;}运行结果:3.定义一个学生成绩类Score,描述学生成绩的私有数据成员为学号(No)、姓名(Name[8])、数学(Math)、物理(Phi)、数据结构(Data)、平均分(ave)。

定义能输入学生成绩的公有成员函数Write(),能计算学生平均分的公有成员函数Average(),能显示学生成绩的公有成员函数Display()。

在主函数中用Score类定义学生成绩对象数组s[3]。

用Write()输入学生成绩,用Average()计算每个学生的平均分,最后用Display()显示每个学生的成绩。

实验数据:No Name Math Phi Data Ave1001Zhou 80 70 601002Chen9080 851003Wang70 75 89程序:#include<iostream>#include<string>using namespace std;class Score{private:int No;char Name[10];float Math,Phi,Data,Ave;public:void Write(int no,char name[],float math,float phi,float data){No=no;strcpy(Name,name);Math=math;Phi=phi;Data=data;}void Average(){Ave=(Math+Phi+Data)/3;}void Display(){cout<<No<<"\t"<<Name<<"\t"<<Math<<"\t"<<Phi<<"\t"<<Data<<"\t"<<Ave<<endl;}};int main(){int i,no;char name[10];float math,phi,data;Score s[3];cout<<"学号姓名数学物理数据结构"<<endl;for(i=0;i<3;i++){cin>>no>>name>>math>>phi>>data;s[i].Write(no,name,math,phi,data);s[i].Average();}cout<<"学号姓名数学物理数据结构平均分"<<endl;for(i=0;i<3;i++)s[i].Display();return 0;}运行结果:4.定义一个矩形类Rectangle,矩形的左上角(Left,Top)与右下角坐标(Right,Bottom)定义为保护数据成员。

用公有成员函数Diagonal()计算出矩形对角线的长度,公有成员函数Show()显示矩形左上角与右下角坐标及对角线长度。

在主函数中用new运算符动态建立矩形对象r1,初值为(10,10,20,20)。

然后调用Show()显示矩形左上角与右下角坐标及对角线长度。

最后用delete运算符回收为矩形动态分配的存储空间。

程序:#include<iostream>#include<cmath>using namespace std;class Rectangle{private:float Left,Top,Right,Bottom;public:Rectangle(float left,float top,float right,float bottom);float Diagonal();void Show();};Rectangle::Rectangle(float left,float top,float right,float bottom):Left(left),Top(top),Right(right),Bottom(bottom){}float Rectangle::Diagonal(){float dia;dia=sqrt((Right-Left)*(Right-Left)+(Bottom-Top)*(Bottom-Top));return dia;}void Rectangle::Show(){cout<<"矩形左上角坐标: <"<<Left<<","<<Top<<">"<<endl;cout<<"矩形右下角坐标: <"<<Right<<","<<Bottom<<">"<<endl;cout<<"矩形对角线长度: "<<Rectangle::Diagonal()<<endl;}int main(){Rectangle *r1;r1=new Rectangle(10,10,20,20);r1->Diagonal();r1->Show();delete r1;return 0;}运行结果:};int main(){int x,y,len,wid,rad;cin>>x>>y>>len>>wid;Point p1(x,y);cout<<"p1 has been constructed"<<endl;Rectangle r1(p1,len,wid);cout<<"r1 has been constructed"<<endl;cout<<"矩形的周长:"<<r1.length()<<endl;;cin>>x>>y>>rad;Point p2(x,y);Circle c1(p2,rad);cout<<"c1 has been constructed"<<endl;cout<<"圆的周长:"<<c1.length()<<endl;cin>>x>>y>>len;Point p3(x,y);Square s1(p3,len);cout<<"s1 has been constructed"<<endl;cout<<"正方形的周长:"<<s1.length()<<endl;return 0;}运行结果:(坐标似乎没有用处)2.程序:#include<iostream>using namespace std;class Person{char strName[20];public:Person(char *name,int age){strcpy(strName,name);nAge=age;cout<<"constructor of person"<<strName<<endl;}~Person() { cout<<"deconstrutor of person"<<strName<<endl;}};class Employee :public Person{char strDept[20];Person Wang;public:Employee (char *name,int age,char *dept,char *name1,intage1):Person(name,age),Wang(name1,age1){strcpy(strDept,dept);cout<<"constructor of Employee"<<strDept<<endl;}~Employee() { cout<<"deconstrucor of Employee"<<strDept<<endl;}};int main(){Employee emp("张三",25,"财务部","李四",30);return 0;}运行结果:3.定义描述职工档案的类Archives,私有数据成员为职工号No,姓名Name[8],性别Sex,年龄Age。

相关主题