视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
c++实验报告
2025-09-25 03:06:05 责编:小OO
文档


面向对象程序设计

(C++)

指导老师:***

学生:吴健

班级:软131

学号:*********

实验一、 VC6.0环境入门与简单程序设计实验报告

系   软件工程  班级   131         学号  *********  姓名   吴健        

同组者                                            指导教师  柯栋梁    

一、实验目的:

1、熟悉VC++6.0开了环境并编写简单的C++程序。

3、使用C++语言编写简单的输入输出程序。

4、使用VC++6.0的DEBUG调试功能:单步执行、设置断点、观察变量值。

二、实验内容:

    1、使用VC++建立一个标准C++程序,编译、运行如下程序:

#include

Int main()

{

Cout<<”Hello World!\\n”;

Cout<<”Welcome to C++!\\n”;

}

    2、编程计算图形的面积。程序可计算圆形、长方形、正方形等的面积,运行时首先提示用户选择图形类型,然后根据不同图形类型,输入相关参数计算其面积,并将其显示出来。

    3、使用DEBUG功能观察任务2程序运行中变量值的变化情况。

三、实验要求:

1、任务1要求熟悉VC++开发环境,并能够使用其建立第一个C++程序。

2、实验前要做好充分准备,包括程序清单、调试步骤、调试方法,以及对程序结果的分析等。

四、实验报告:

1.程序运行截图

2.面积计算

1、程序说明。

用if -else语句进行选择程序功能,while语句实现功能的循环实现

程序如下:

#include

#include

using namespace std;

int main()

{

cout<<"1计算圆面积"< <<"2计算矩形面积"< <<"3计算正方形面积"< <<"4退出"< <<"请选择相应功能代码:";

 int x;   //x对应编号 

cin>>x;

 double area;

 while(x!=4)

 {

  if(x==1)

  {

   double r;

cout<<"半径:";

cin>>r;

   area=3.14*r*r;

cout<<"面积为 "<  }

  else if(x==2)

  {

   double a,b;

cout<<"长和宽:";

cin>>a>>b;

   area=a*b;

cout<<"面积为 "<  }

  else if(x==3)

  {

      double a,b,c,d;

cout<<"边长:";

cin>>a;

   area=a*a;

cout<<"面积为 "<        }

        else

cout<<"输入有误,请重新输入!"< cout<<"功能代码:";

cin>>x;

 }

 return 0;

程序截图:

   

实验二、函数的应用实验报告

系   软件工程    班级  131          学号  1390741  姓名  吴健  

同组者                                            指导教师  柯栋梁    

一、实验目的:

1、掌握函数的定义和调用方法。

2、练习重载函数的使用。

3、练习使用系统函数。

4、学习使用VC++的DEBUG调试功能,使用STEP INTO追踪到函数的内部。

二、实验内容:

1、编写一个函数把华氏温度转换为摄氏温度,转换公式:C=(F-32)*5/9。

2、编写重载函数Max1可分别求取两个整数,三个整数,两个双精度数,三个双精度数的最大值。

3、使用系统函数pow(x,y)计算XY的值,注意包含头文件math.h。

4、使用递归的方法编写函数求Fibonacci级数,观察递归调用的过程。

三、实验报告:

1、温度转换

A.程序

#include

using namespace std;

double FtoC(double F)

{

    return (F-32)*5/9;

}

void main()

{

    double F,c;

cout<<"输入华氏温度:";

cin>>F;

    c=FtoC(F);

cout<<"输出摄氏温度"<}

B.截图

2.重载函数

A.程序

#include

using namespace std;

int max1(int a,int b)//两个整数

{

return a>b?a:b;

}

int max1(int a,int b,int c)//三个整数

{

    return max1(a,max1(b,c));

}

double max1(double a,double b)//两个双精度

{

return a>b?a:b;

}

double max1(double a,double b,double c)//三个双精度

{

    return max1(a,max1(b,c));

}

void main() 

    int a,b,c,m;

    double x,y,z;

cout<<"1、两个整数"<     <<"2、三个整数"<     <<"3、两个双精度数"<     <<"4、三个双精度数"<     <<"5、退出"< <<"请选择相应功能代码:";

cin>>m;

    while(m!=5)

    {

        if(m==1)

        {

         cout<<"请输入两个整数"<         cin>>a>>b;

            a=max1(a,b);

         cout<<"最大值为"<        }

        else if(m==2)

        {

         cout<<"请输入三个整数"<         cin>>a>>b>>c;

            a=max1(a,b,c);

         cout<<"最大值为"<        }

        else if(m==3)

        {

         cout<<"请输入两个双精度数"<         cin>>x>>y;

            x=max1(x,y);

         cout<<"最大值为"<        }

        else if(m==4)

        {

         cout<<"请输入三个双精度数"<         cin>>x>>y>>z;

            x=max1(x,y,z);

         cout<<"最大值为"<        }

     cout<<"请选择相应功能代码:";

     cin>>m;    

    }

}

B.截图

3系统函数pow(x,y)计算XY

A.程序

#include

#include

using namespace std;

int main()

    int x,y;

cout<<"请输入两个数x,y"< cin>>x>>y;

cout<<"x的y次方为"<}

B.截图

4使用递归的方法编写函数求Fibonacci级数

A.程序

#include

using namespace std;

int fib(int n)

{  

cout<<"Processing fib("< if(n<3)

    {   

     cout<<"Reutrn 1!\\n";

        return(1); 

    } 

    else 

    {  

     cout<<"Call fib("<        return(fib(n-2)+fib(n-1));

    }

}       

int main()      

{   

    int n,answer;

cout<<"Enter number:";

cin>>n;

cout<<""<    answer=fib(n);

cout<

B.截图

实验三、类与对象实验报告

系   软件工程    班级   131            学号  1390741  姓名   吴健        

同组者                                            指导教师  柯栋梁       

一、实验目的:

1、掌握类与对象的声明和使用。

2、观察构造函数与析构函数的执行过程。

3、掌握具有不同访问属性的成员的访问方式。

4、使用DEBUG调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。

二、实验内容:

1、声明一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。其中,rank为枚举类型CPU_Rank,声明为enum CPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},frequency为单位是MHz的整型数,voltage为浮点型的电压值,观察构造函数和析构函数的调用顺序。

2、声明一个简单的computer类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等等,有两个公有成员函数run、stop。cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,声明并实现这个类。

三、实验报告:

1、cpu类

A.程序

#include

using namespace std;

enum CPU_Rank {P1=1,P2,P3,P4,P5,P6,P7};

class CPU

{

private: 

    CPU_Rank rank;

 int frequency;

 float voltage;

public:

 CPU(int newrank,int newfrequency,float newvoltage);

 void run();

 void stop();

~CPU(){cout<<"成功调用析构函数"<};

void CPU::run()

{

cout<<"程序开始执行"<}

void CPU::stop()

{

cout<<"程序结束"<}

CPU::CPU(int newrank,int newfrequency,float newvoltage)

 rank=(CPU_Rank)newrank;

 frequency=newfrequency;

 voltage=newvoltage;

cout<<"成功调用构造函数"< cout<<"等级:"< cout<<"频率:"< cout<<"电压:"<

int main()

{

 CPU cpu(2,60,220);

 cpu.run();

 cpu.stop();

 return 0;

}

B.截图

2.computer类

A.程序

#include

enum CPU_rank{p1=1,p2,p3,p4,p5,p6,p7};

class CPU

{

    private:

     CPU_rank rank;

     int frequency;

     float voltage;

    public:

    CPU (CPU_rank r,int f,float v)

    {

          rank=r;

          frequency=f;

          voltage=v;

            cout<<"构造了一个cpu!"<     }

     ~CPU()

     { 

     cout<<"其构了一个cpu!"<         CPU_rank getrank() const

         { return rank;}

         void setrank(CPU_rank r)

         { rank=r;}

         void run()

      {cout<<"cpu开始运行!"<     }

     void stop()

     {

     cout<<"cpu停止运行!"<    }

};

class RAM

{

    private:

     int ram;

    public:

    RAM(int r)

    {   

     cout<<"构造了一个ram!"<     RAM()

    {  

     ram=0;cout<<"构造了一个ram!"<    }

     ~RAM()

    {

     cout<<"析构了一个ram!"<    }

    void run()

     {

     cout<<"ram开始运行!"<    }

    void stop()

    {

     cout<<"ram停止运行!"<    }

};

class CDRAM

{

    private:

     int cdram;

    public:

     CDRAM(int c)

    {   

        cdram=c;

       cout<<"构造了一个cdram!"<    }

     CDRAM()

    {  

     cout<<"构造了一个cdram!"<    }

     ~CDRAM()

    {

     cout<<"析构了一个cdram!"<    }

     void run()

     {

     cout<<"cdram开始运行"<    }

     void stop()

     {

     cout<<"cdram停止运行"<    }

};

class computer

{

    private:

    CPU cpu;RAM ram;CDRAM cdram;

    public:

     computer(CPU c,RAM r,CDRAM cd);

     computer();

     ~computer()

    {

     cout<<"析构了一个computer"<    }

     computer(computer &p);

      void run()

     {

     cout<<"computer开始运行"<    }

     void stop()

    {

     cout<<"computer停止运行"<    }

};

computer::computer():cpu(p6,100,float(1.3)),ram(20),cdram(30)

{

cout<<"构造了一个 cpu00"<}

computer::computer(CPU c,RAM r,CDRAM cd):cpu(c),ram(r),cdram(cd)

{

cout<<"构造了一个computer"<}

computer::computer(computer &p): cpu(p.cpu),ram(p.ram),cdram(p.cdram)

{

cout<<"调用了复制构造函数"<}

void main()

{

    CPU m(p6,300,float(2.8));

    RAM n(1);

    CDRAM q(2);

    computer com1;

    computer com2(m,n,q);

}

B.截图

实验四、C++程序结构实验报告

系   软件工程    班级  131          学号  1390741  姓名  吴健  

同组者                                            指导教师  柯栋梁   一、实验目的:

1、观察程序运行时变量的作用域、生存期和可见性。

2、掌握类的静态成员的使用。

3、学习多文件结构在C++程序中的使用。

二、实验内容:

1、运行下面的程序,观察变量x、y的值。

#include

using namespace std;

void fn1(); 

int x = 1, y = 2; 

int main()

{

cout << "Begin..." << endl;

    cout << "x = " << x << endl;

cout << "y = " << y << endl;

    cout << "Evaluate 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();

cout << "Back in main" << endl;

    cout << "x = " << x << endl;

cout << "y = " << y << endl;

    return 0;

}

void fn1()

{

    int y = 200;

cout << "x = " << x << endl;

    cout << "y = " << y << endl;

}

2、实现客户机(CLIENT)类。声明字符型静态数据成员ServerName,保存其服务器名称;整型静态数据成员ClientNum,记录已定义的客户数量;定义静态函数ChangeServerName()改变服务器名称。在头文件client.h中声明类,在文件client.cpp中实现,在文件test.cpp中测试这个类,观察相应的成员变量取值的变化情况。

三、实验报告:

1.程序运行观察

A.截图

2.实现客户机(CLIENT)类

A.程序

# include

using namespace std; 

class Client 

public:  

    static char servername; 

    static int clientnum; 

    char *clientname;   

    Client(char *name1);  

    static void change()  

{

cout<<"请输入要改成的服务器名称:"< cin>>servername;

    }  

    void showname()   

    {    

     cout<<"name="<    } 

# include"Client.h" 

int Client::clientnum=0; 

char Client::servername='t'; 

Client::Client(char *name1)

 {clientname=new char[20];   

 strcpy(clientname,name1);  

 clientnum++;

}

# include"Client.h"

void  main() 

{  

     Client a("zhang");  

     a.showname();

cout< cout< Client::change();  

 a.showname(); 

cout< cout<}

B.截图

 实验五、数组、指针与字符串实验报告

系   软件工程    班级  131          学号  1390741  姓名  吴健  

同组者                                            指导教师  柯栋梁      

一、实验目的:

1、学习使用数组数据对象及字符串的组织与处理。

2、学习使用标准C++库。

3、掌握指针的使用方法,并通过DEBUG观察指针内容及其所指的对象的内容。

4、练习通过动态内存分配实现动态数组,并体会指针在其中的作用。

二、实验内容:

1、编写并测试3×3矩阵转置函数,使用数组保存3×3矩阵。

2、使用动态内存分配生成动态数组来重新完成上题。

3、编程实现两字符串的连接。要求使用字符数组保存字符串,不允许使用系统函数。

4、使用string类声明字符串对象,重新实现上一小题。

三、实验报告:

1.矩阵转置

A.程序

# include

using namespace std;

void move(int matrix[3][3])

{

    int i,j,k;

for(i=0;i<3;i++)

     for(j=0;j        {

            k=matrix[i][j];

            matrix[i][j]=matrix[j][i];

            matrix[j][i]=k;

        }

}

int main()

{

    int i,j;

    int data[3][3];

cout <<"输入矩阵的元素"< for(i=0;i<3;i++)

     for(j=0;j<3;j++)

        {

         cout <<"第"<             <<"个元素为:";

         cin>>data[i][j];

        }

     cout <<"输入的矩阵为:"<     for(i=0;i<3;i++)

        {

         for(j=0;j<3;j++)

             cout<         cout<        }

        move(data);

     cout <<"转置后的矩阵为:"<     for(i=0;i<3;i++)

        {

         for(j=0;j<3;j++)

             cout <         cout <        }

}

B.截图

2.使用动态内存分配生成动态数组

A.程序

# include

using namespace std;

void move(int *matrix,int n)

{

    int i,j,k;

for(i=0;i     for(j=0;j        {

            k= *(matrix + i*n + j);

            *(matrix + i*n + j)= *(matrix + j*n + i);

            *(matrix + j*n + i)=k;

        }

}

int main()

{

    int n,i,j;

    int *p;

cout <<"请输入矩阵的行、列数:";

cin >> n;

    p=new int[n*n];

cout <<"输入矩阵的元素"< for(i=0;i     for(j=0;j        {

         cout <<"第"<             <<"个元素为:";

         cin >> p[i*n +j];

        }

cout <<"输入的矩阵为:"< for(i=0;i        {

         for(j=0;j             cout <         cout<        }

        move(p,n);

     cout <<"转置后的矩阵为:"<     for(i=0;i        {

         for(j=0;j             cout <         cout <        }

}

B.截图

3.编程实现两字符串的连接

A.程序

#include

using namespace std; 

int main() 

char str1[40]; 

char str2[20];

int c1=0,c2=0;

cout<<"请输入第一个字符串: ";

cin>>str1;

cout<<"\\n请输入第二个字符串: ";

cin>>str2;

while(str1[c1]!='\\0') 

++counter1;  

while(str2[c2]!='\\0') 

str1[c1]=str2[c2];

++c1; 

++c2; 

str1[c1]='\\0';

cout<<"\\n连接后的字符串: "<}

B.截图

4.使用string类声明字符串对象

A.程序

#include

#include

using namespace std;

int main()

{

    string s1,s2;

cout<<"请输入第一个字符串: ";

cin>>s1;

cout<<"\\n请输入第二个字符串: ";

cin>>s2;

    s1+=s2;

cout<<"连接后的字符串为:"<}

B.截图

实验六、继承和派生实验报告

系   软件工程    班级   131            学号  1390741  姓名   吴健        

同组者                                            指导教师  柯栋梁  

一、实验目的:

1、学习声明和使用类的继承关系,声明派生类。

2、熟悉不同继承方式下对基类成员的访问控制。

3、学习利用虚基类解决二义性问题。

二、实验内容:

1、定义一个基类Animal,有私有数据成员变量age,构造其派生类dog,在其成员函数setAge(int n)中直接给Age赋值,看看会有什么问题,把age改为公有成员变量,还会有问题吗?编程测试一下。

2、定义一个基类BaseClass,有整型成员变量Number,构造其派生类DerivedClass,观察构造函数的析构函数的执行情况。

3、定义一个车(Vehicle)基类,具有MaxSpeed,Weight等成员变量,Run,Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类。自行车类有高度(height)等属性,汽车类有座位数(SeatNum)等属性。从bicycle和moorcar派生出摩托车(motorcycle)类,在继承过程中注意把vehicle设置为虚基类。如果不设为虚基类,会出现什么问题?编程测试一下。

三、实验报告:

1定义一个基类Animal

A.程序

#include

using namespace std;

class Animal{

public:

    int age;

};

class Dog:public Animal{

public:

    SetAge(int n)

    {

        age=n;

     cout<    }

};

void main()

{

    Dog dog;

    dog.SetAge(4);

}

B.截图

2.定义一个基类BaseClass,

A.程序

#include

using namespace std;

class BaseClass{

public:

    int number;

    BaseClass()

    {

     cout<<"BaseClass"<    }

    ~BaseClass()

    {

     cout<<"Destory BaseClass"<    }

};

class DerivedClass:public BaseClass{

public:

    DerivedClass()

    {

     cout<<"DerivedClass"<    }

    ~DerivedClass()

    {

     cout<<"Destory DerivedClass"<    }

};

void main()

{

    DerivedClass sl;

}

B.截图

3.定义一个车(Vehicle)基类

A.程序

#include

using namespace std;

class vehicle

{

public:

    vehicle()

    {

     cout<<"vehicle构造函数被调用"<    }

    ~vehicle()

    {

     cout<<"vehicle析构函数被调用"<    }

    virtual  void Run()

    {

        

     cout<<"设置vehicle最大速度和重量"<        

    }

    virtual void Stop()

    {

     cout<<"显示vehicle最大速度和重量"<        

    }

private:

    double MaxSpeed,Weight;

};

class bicycle:public  vehicle

{

public:

    bicycle()

    {

     cout<<"bicycle构造函数被调用"<    }

    ~bicycle()

    {

     cout<<"bicycle析构函数被调用"<    }

    void Run()

    {

     cout<<"设置bicycle最大速度和重量"<    }

    void Stop()

    {

     cout<<"显示bicycle最大速度和重量"<    }

private:

    double Height;

};

class motorcar:public  vehicle

{

public:

    motorcar()

    {

     cout<<"motorcar构造函数被调用"<    }

    ~motorcar()

    {

     cout<<"motorcar析构函数被调用"<    }

    void Run()

    {

     cout<<"设置motorcar最大速度和重量"<    }

    void Stop()

    {

cout<<"显示motorcar最大速度和重量"<    }

private:

    int SeatNum;

};

class motorcycle:public motorcar, public bicycle

{

public:

    motorcycle()

    {

     cout<<"motorcycle构造函数被调用"<    }

    ~motorcycle()

    {

     cout<<"motorcycle析构函数被调用"<    }

    void Run()

    {

     cout<<"设置motorcycle最大速度和重量"<    }

    void Stop()

    {

cout<<"显示motorcycle最大速度和重量"<    }

};

void fun(vehicle *p)

{

p->Run();

p->Stop();

}

int main()

{

    vehicle a0,*p;

    bicycle a1;  

    motorcar a2;  

    motorcycle a3;  

cout<    p=&a0;

    fun(p);

    p=&a1;

    fun(p);

    p=&a2;

    fun(p);

cout<}

B.截图

实验七、 多态性实验报告

系   软件工程    班级   131            学号  1390741  姓名   吴健        

同组者                                            指导教师  柯栋梁  

一、实验目的:

1、掌握运算符重载的方法。

2、掌握使用虚函数实现动态多态性。

二、实验内容:

1、定义Point类,有坐标x,y两个成员变量;对Point类重载++、――运算符,实现对坐标值的改变。

2、定义一个车(vehicle)基类,有Run、Stop等成员函数,由此派生出自行车类(biclcle)、汽车类(motorcar),从bicycle和motorcar派生出摩托车类(motorcycle),它们都有Run、Stop等成员函数。观察虚函数的作用。

三、实验报告:

1.定义Point类

A.程序

#include

using namespace std;

class Point{

public:

    Point()

    {

    }

    Point(float a,float b)

    {

        x=a;

        y=b;

    }

    Point operator++()

    {

        x++;

        y++;

        return Point(x,y);

    }

    Point operator--()

    {

        x--;

        y--;

        return Point(x,y);

    }

    void display()

    {

     cout<<"The Point:"<<"("<    }

private:

    float x;

    float y;

};

void main()

{

    Point p(3,5);

    p.display();

    p++;

    p.display();

    p--;

    p.display();

}

B.截图

2.定义一个车(vehicle)基类

A.程序

#include

using namespace std;

class Vehicle{

public:

     void Run()

    {

     cout<<"Vehicle Run"<    }

     void Stop()

    {

     cout<<"Vehicle Stop"<    }

};

class bicycle:public Vehicle{

public:

    void Run()

    {

     cout<<"bicycle Run"<    }

    void Stop()

    {

     cout<<"bicycle Stop"<    }

};

class motorcar:public Vehicle{

public:

    void Run()

    {

     cout<<"motorcar Run"<    }

    void Stop()

    {

     cout<<"motorcar Stop"<    }

};

class motorcycle:public bicycle,public motorcar{

public:

    void Run()

    {

     cout<<"motorcycle Run"<    }

    void Stop()

    {

     cout<<"motorcycle Stop"<    }

};

void main()

{

    Vehicle p;

    bicycle q;

    motorcar x;

    motorcycle y;

    p.Run();

    p.Stop();

    q.Run();

    q.Stop();

    x.Run();

    x.Stop();

    y.Run();

    y.Stop();

}

B.截图

实验八、面向对象综合实验实验报告

系   软件工程    班级   131            学号  1390741  姓名   吴健        

同组者                                            指导教师  柯栋梁  

一、实验目的:

1、综合运用面向对象编程思想。

2、学习设计较复杂的类。

二、实验内容:

实现一个计算器类,支持加、减、乘、除等基本运算。

三、实验报告:  

A.程序

#include

using namespace std;

class Opera

{

    public:

        void get();

        void add();

        void red();

        void mul();

        void div();

        void quyu();

        char get_c(){return c;}

    private:

        int a;

        int b;

        char c;

};

void Opera::get()

{

cout<<"请输入你要计算的式子:"< cin>>a>>c>>b;

}

void Opera::add()

{

cout<}

void Opera::div()

{

cout<}

void Opera::mul()

{

cout<}

void Opera::red()

{

cout<}

void Opera::quyu()

{

cout<}

int main()

{

    while(1)

    {

        Opera o;

        o.get();

        switch(o.get_c())

        {

            case '+':o.add();break;

            case '-':o.red();break;

            case '*':o.mul();break;

            case '/':o.div();break;

            case '%':o.quyu();break;

        }

    }

    return 0;

}

B.截图下载本文

显示全文
专题