answer=fib(n);
cout<〈answer<〈”isthe"<〈n<<"thFibonaccinumber"〈〈endl;
}
B.截图
实验三、类与对象实验报告
系软件工程班级131学号139074164姓名吴健
同组者指导教师柯栋梁
一、实验目的:
1、掌握类与对象的声明和使用.
2、观察构造函数与析构函数的执行过程.
3、掌握具有不同访问属性的成员的访问方式。
4、使用DEBUG调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。
二、实验内容:
1、声明一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。
其中,rank为枚举类型CPU_Rank,声明为enumCPU_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
usingnamespacestd;
enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7};
classCPU
{
private:
CPU_Rankrank;
intfrequency;
floatvoltage;
public:
CPU(intnewrank,intnewfrequency,floatnewvoltage);
voidrun();
voidstop();
~CPU(){cout〈<"成功调用析构函数"〈〈endl;}
};
voidCPU:
:
run()
{
cout〈〈”程序开始执行”〈}
voidCPU:
:
stop()
{
cout〈<"程序结束"<}
CPU:
:
CPU(intnewrank,intnewfrequency,floatnewvoltage)
{
rank=(CPU_Rank)newrank;
frequency=newfrequency;
voltage=newvoltage;
cout<〈”成功调用构造函数"〈cout〈<"等级:
"<cout〈〈"频率:
"<〈frequency<cout〈<"电压:
”<〈voltage<〈endl;
}
intmain()
{
CPUcpu(2,60,220);
cpu。
run();
cpu。
stop();
return0;
}
B.截图
2。
computer类
A.程序
#include〈iostream。
h>
enumCPU_rank{p1=1,p2,p3,p4,p5,p6,p7};
classCPU
{
private:
CPU_rankrank;
intfrequency;
floatvoltage;
public:
CPU(CPU_rankr,intf,floatv)
{
rank=r;
frequency=f;
voltage=v;
cout〈〈”构造了一个cpu!
"〈〈endl;
}
~CPU()
{
cout〈<"其构了一个cpu!
”<〈endl;}
CPU_rankgetrank()const
{returnrank;}
voidsetrank(CPU_rankr)
{rank=r;}
voidrun()
{cout<〈"cpu开始运行!
”<〈endl;
}
voidstop()
{
cout〈<”cpu停止运行!
"<}
};
classRAM
{
private:
intram;
public:
RAM(intr)
{
cout〈〈"构造了一个ram!
”〈〈endl;}
RAM()
{
ram=0;cout<<”构造了一个ram!
”〈〈endl;
}
~RAM()
{
cout〈〈"析构了一个ram!
"<}
voidrun()
{
cout〈〈"ram开始运行!
"<〈endl;
}
voidstop()
{
cout〈<”ram停止运行!
"〈}
};
classCDRAM
{
private:
intcdram;
public:
CDRAM(intc)
{
cdram=c;
cout<〈”构造了一个cdram!
"<}
CDRAM()
{
cout<<”构造了一个cdram!
"〈}
~CDRAM()
{
cout<<”析构了一个cdram!
”<〈endl;
}
voidrun()
{
cout〈〈"cdram开始运行”〈〈endl;
}
voidstop()
{
cout<〈”cdram停止运行”<〈endl;
}
};
classcomputer
{
private:
CPUcpu;RAMram;CDRAMcdram;
public:
computer(CPUc,RAMr,CDRAMcd);
computer();
~computer()
{
cout<<”析构了一个computer”<}
computer(computer&p);
voidrun()
{
cout〈〈"computer开始运行"〈}
voidstop()
{
cout〈〈"computer停止运行"〈〈endl;
}
};
computer:
:
computer():
cpu(p6,100,float(1.3)),ram(20),cdram(30)
{
cout〈<"构造了一个cpu00”<}
computer:
:
computer(CPUc,RAMr,CDRAMcd):
cpu(c),ram(r),cdram(cd)
{
cout〈〈”构造了一个computer”<〈endl;
}
computer:
:
computer(computer&p):
cpu(p。
cpu),ram(p。
ram),cdram(p.cdram)
{
cout〈<"调用了复制构造函数"<}
voidmain()
{
CPUm(p6,300,float(2。
8));
RAMn
(1);
CDRAMq
(2);
computercom1;
computercom2(m,n,q);
}
B。
截图
实验四、C++程序结构实验报告
系软件工程班级131学号139074164姓名吴健
同组者指导教师柯栋梁一、实验目的:
1、观察程序运行时变量的作用域、生存期和可见性。
2、掌握类的静态成员的使用。
3、学习多文件结构在C++程序中的使用。
二、实验内容:
1、运行下面的程序,观察变量x、y的值。
#include〈iostream>
usingnamespacestd;
voidfn1();
intx=1,y=2;
intmain()
{
cout<<”Begin。
..”〈〈endl;
cout〈〈"x=”<cout〈<”y=”〈〈y〈〈endl;
cout〈<”Evaluatexandyinmain()。
.."〈〈endl;
intx=10,y=20;
cout〈<"x="〈〈x〈〈endl;
cout〈〈”y=”〈cout<<”Stepintofn1().。
。
”〈fn1();
cout〈〈"Backinmain"〈〈endl;
cout<〈”x=”〈cout<〈”y="〈〈y<〈endl;
return0;
}
voidfn1()
{
inty=200;
cout〈<”x=”<〈x〈cout<〈"y="<〈y〈〈endl;
}
2、实现客户机(CLIENT)类。
声明字符型静态数据成员ServerName,保存其服务器名称;整型静态数据成员ClientNum,记录已定义的客户数量;定义静态函数ChangeServerName()改变服务器名称。
在头文件client。
h中声明类,在文件client.cpp中实现,在文件test。
cpp中测试这个类,观察相应的成员变量取值的变化情况。
三、实验报告:
1。
程序运行观察
A。
截图
2.实现客户机(CLIENT)类
A.程序
#include
usingnamespacestd;
classClient
{
public:
staticcharservername;
staticintclientnum;
char*clientname;
Client(char*name1);
staticvoidchange()
{
cout〈<"请输入要改成的服务器名称:
"<cin〉〉servername;
}
voidshowname()
{
cout<〈"name=”〈}
#include"Client.h”
intClient:
:
clientnum=0;
charClient:
:
servername=’t';
Client:
:
Client(char*name1)
{clientname=newchar[20];
strcpy(clientname,name1);
clientnum++;
}
#include"Client.h"
voidmain()
{
Clienta("zhang”);
a。
showname();
cout<:
servername〈〈endl;
cout<:
clientnum〈Client:
:
change();
a。
showname();
cout<〈Client:
:
servername<〈endl;
cout<〈Client:
:
clientnum〈}
B.截图
实验五、数组、指针与字符串实验报告
系软件工程班级131学号139074164姓名吴健
同组者指导教师柯栋梁
一、实验目的:
1、学习使用数组数据对象及字符串的组织与处理。
2、学习使用标准C++库。
3、掌握指针的使用方法,并通过DEBUG观察指针内容及其所指的对象的内容。
4、练习通过动态内存分配实现动态数组,并体会指针在其中的作用.
二、实验内容:
1、编写并测试3×3矩阵转置函数,使用数组保存3×3矩阵.
2、使用动态内存分配生成动态数组来重新完成上题。
3、编程实现两字符串的连接.要求使用字符数组保存字符串,不允许使用系统函数。
4、使用string类声明字符串对象,重新实现上一小题.
三、实验报告:
1。
矩阵转置
A.程序
#include
usingnamespacestd;
voidmove(intmatrix[3][3])
{
inti,j,k;
for(i=0;i〈3;i++)
for(j=0;j〈i;j++)
{
k=matrix[i][j];
matrix[i][j]=matrix[j][i];
matrix[j][i]=k;
}
}
intmain()
{
inti,j;
intdata[3][3];
cout<〈"输入矩阵的元素"〈〈endl;
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<〈endl;
}
move(data);
cout〈<"转置后的矩阵为:
”〈for(i=0;i<3;i++)
{
for(j=0;j〈3;j++)
cout〈cout<}
}
B.截图
2.使用动态内存分配生成动态数组
A.程序
#include〈iostream〉
usingnamespacestd;
voidmove(int*matrix,intn)
{
inti,j,k;
for(i=0;i〈n;i++)
for(j=0;j
{
k=*(matrix+i*n+j);
*(matrix+i*n+j)=*(matrix+j*n+i);
*(matrix+j*n+i)=k;
}
}
intmain()
{
intn,i,j;
int*p;
cout<<”请输入矩阵的行、列数:
";
cin〉>n;
p=newint[n*n];
cout〈<"输入矩阵的元素”<〈endl;
for(i=0;ifor(j=0;j{
cout〈〈"第”<〈i+1〈<"行第”〈〈j+1