《面向对象程序设计 C++》实验报告文档格式.docx
《《面向对象程序设计 C++》实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《《面向对象程序设计 C++》实验报告文档格式.docx(61页珍藏版)》请在冰豆网上搜索。
2
√
熟悉VC++开发环境
二
C++简单程序设计
4
基本算法结构
3
三
函数的应用
函数设计、模板函数
四
类与对象
6
类的设计与使用
5
五
C++程序的结构
作用域与生存期,静态成员
六
数组、指针与字符串
三种常见编程元素的使用
7
七
继承与派生
派生类的设计与使用
8
八
多态性
运算符重载、动态多态
9
九
群体类和群体数据的组织
群体类的设计
10
十
泛型程序设计与C++标准模板库
STL库的使用
11
十一
流内库与输入、输出
常用输入输出方法
12
十二
异常处理
异常处理机制的设计
十三
Windows应用程序框架
VC开发Windows程序方法
四、实验内容安排:
实验一VisualC++6.0开发环境应用入门
(验证性实验2学时)
1.目的要求:
了解VisualC++6.0的特点,熟悉了解VisualC++6.0的开发环境,学习使用VisualC++6.0编写标准的C++控制台应用程序。
2.实验内容:
使用VisualC++来建立一个非图形化的标准C++程序,编译、运行教材中的例3-3,用公式法求解PI的数值,并尝试利用其他方法求解并获得相同的结果。
π=16arctan(1/5)-4arctan(1/239)
arctan(x)=x-x³
/3+x5/5-x7/7+…求π=?
#include<
iostream>
usingnamespacestd;
intmain()
{
doublea,b;
doublearctan(doublex);
a=16.0*arctan(1/5.0);
b=4.o*aarctan(1/239.0);
cout<
<
”PI=”<
a-b<
endl;
}
doublearctan(doublex)
inti;
doubler,ef,sqr;
sqr=x*x;
r=0;
e=x;
i=1;
while(e/i>
1e-15)
f=e/I;
r=(i%4==1)?
r+f:
r-f;
e=e*sqr;
I+=2;
returnr;
stdio.h>
math.h>
main()
ints=1;
floatn=1,t=1,pi=0;
while(fabs(t)1e-4)
{
pi=pi+t;
n=n+2;
s=-s;
t=s/n;
}
pi=pi*4;
printf("
%d"
pi);
3.主要仪器设备及软件:
PC+Windows2000+VC6.0
实验二C++简单程序设计实验
(验证性实验4学时)
4.目的要求:
会编写简单的C++程序;
复习基本数据类型变量和常量的应用;
复习运算符与表达式的应用;
复习结构化程序设计基本控制结构的应用;
复习自定义数据类型的应用;
练习使用简单的输入输出;
观察头文件的作用;
学会使用VC6.0开发环境中的debug调试功能;
熟练程序设计中的技巧;
5.实验内容:
3)给定一个字符变量输出其二进制形式。
例如chara=’a’;
其二进制为00100001。
charch;
intj,k[8]={0};
cout<
"
请输入一个字符:
cin>
>
ch;
for(j=0;
j<
=7;
j++)
if(ch)
{
if(ch%2==0)
k[j]=0;
else
k[j]=1;
ch=(ch-(ch%2))/2;
}
for(j=7;
j>
=0;
j--)
cout<
k[j];
4)给定一个字符变量输出其二进制反转形式。
其二进制为00100001,反转形式为10000100。
(提示:
使用位运算)
ch<
二进制是:
;
k[j]=k[j]^1;
二进制反码是:
5)袋子里有红,黄,蓝,绿,黑五种不同颜色的球若干个,从中取出三个不同颜色的球,编程输出每种取法及统计不同取法的总数(提示:
使用枚举)
#include<
enumcolor{red=0,yellow,blue,green,black};
boolisNum(inti)
intj=0;
for(intk=0;
k<
6;
k++)if(i>
k&
1==1)j++;
returnj==3?
true:
false;
voidprintResult(inti)
5;
k++)
if(i>
1==1)
switch(k)
casered:
printf("
red"
);
break;
caseyellow:
yellow"
caseblue:
blue"
casegreen:
green"
caseblack:
black"
default:
error!
!
\n"
voidmain()
可能的方案有:
for(inti=0;
i<
=32;
i++)
if(isNum(i))
printResult(i);
j++;
6)(选做)给定一个整型变量输出其二进制形式。
6.主要仪器设备及软件:
实验三函数的应用实验
(设计性实验2学时)
7.目的要求:
掌握函数的定义和调用方法;
练习重载函数的使用;
练习使用系统函数;
学习使用VC++的debug调试功能,使用stepinto追踪到函数内部。
8.实验内容:
7)用递归的方法编写函数求Fibonacci级数,观察递归调用的过程。
intFibonacci(inti)
if(i==1)
return0;
else
if(i==2)
return1;
else
returnFibonacci(i-1)+Fibonacci(i-2);
{
intn,j,i;
n;
for(i=1;
=n;
j=Fibonacci(i);
8)编写重载函数Max1可分别求取两个整数,三个整数,两个双精度数,三个双精度数的最大值。
intMAX1(inta,intb)
if(a>
=b)
returna;
returnb;
intMAX1(inta,intb,intc)
if(a<
=c)
returnc;
returna;
if(b<
returnb;
doubleMAX1(doublea,doubleb)
doubleMAX1(doublea,doubleb,doublec)
inta,b,c;
doublei,j,k;
请输入两个整数"
a>
b;
最大的数"
MAX1(a,b)<
endl<
请输入三个整数"
b>
c;
最大的数是"
MAX1(a,b,c)<
请输入两个小数"
i>
j;
MAX1(i,j)<
请输入三个小数"
k;
MAX1(i,j,k)<
9)写一个函数,能够接收身高、体重等数据,能够根据身高、体重检测身体状况,胖,瘦等。
voidSHENGC(doublei,doublej)
if(i<
j*32)
这个人偏胖"
{if(i=j*32)
cout<
这个人适中"
这个人偏瘦"
doublei,j;
请输入身高(cm)和体重(kg)"
SHENGC(i,j);
9.主要仪器设备及软件:
实验四类与对象实验
(设计性实验4学时)
10.目的要求:
掌握类的定义和使用;
掌握类对象的声明;
复习具有不同访问属性的成员的访问方式;
观察构造函数和析构函数的执行过程;
学习类组合使用方法;
使用VC++的debug调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。
11.实验内容:
10)定义一个CPU类,包含等级(Rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。
其中,rank为枚举类型CPU__Rank,定义为enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},frequency为单位是MHz的整型数,voltage为浮点型的电压值。
观察构造函数和析构函数的调用顺序。
enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7};
classCPU
public:
CPU();
~CPU();
voidrun(enumCPU_Rankr,intf,doublev);
voidstop();
private:
enumCPU_RankRank;
intfrequency;
doublevoltage;
};
CPU:
:
CPU()
调用构造函数"
~CPU()
调研析构函数"
voidCPU:
run(enumCPU_Rankr,intf,doublev)
Rank=r;
frequency=f;
voltage=v;
stop()
Rank<
frequency<
voltage<
enumCPU_Rankt=P1;
CPUc;
c.run(t,2,4.865);
c.stop();
11)定义一个简单的Computer类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等等,有两个公有成员函数run、stop。
cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,定义并实现这个类,观察这些类的构造函数和析构函数的调用顺序。
{
CPU()
CPU构造函数被调用"
~CPU()
CPU析构函数被调用"
classRAM
RAM()
RAM构造函数被调用”<
~RAM()
RAM析构函数被调用"
classCDROM
CDROM()
CDROM构造函数被调用"
~CDROM()
CDROM析构函数被调用"
classComputer
CPUcpu;
RAMram;
CDROMcdrom;
Computer()
Computer构造函数被调用"
~Computer()
Computer析构函数被调用"
voidrun();
ComputerC;
12)定义一个Body类,拥有身高、体重等数据,能够根据身高、体重检测身体状况,要求设计相应的函数成员和构造函数。
classbody
body()
构造函数被调用"
~body()
析构函数被调用"
voidset(doubleh,doublew)
HIGH=h;
WEIGHT=w;
voidshow()
HIGH="
HIGH<
WEIGHT="
WEIGHT<
doubleHIGH;
doubleWEIGHT;
bodya;
a.set(i,j);
a.show();
13)(选做)设计一个用于人事管理的People(人员)类。
考虑到通用性,这里只抽象出所有类型人员都具有的属性:
number(编号)、sex(性别)、birthday(出生日期)、id(身份证号)等等。
其中“出生日期”定义一个“日期”类内嵌子对象。
用成员函数实现对人员信息录入和显示。
要求包括:
构造函数和析构函数、拷贝构造函数、内联成员函数、类组合。
12.主要仪器设备及软件:
PC+Windows2000+VC6.0
实验五C++程序的结构实验
13.目的要求:
观察程序运行中变量的作用域、生存期和可见性;
学习类的静态成员的使用;
学习多文件结构在C++程序中的使用。
14.实验内容:
14)运行下面的程序,观察变量X、Y的值。
(删除)
//lab5_1.cpp
iostream.h>
voidfnl();
intx=1,y=2;
”Begin…”<
”x=”<
x<
”y=”<
y<
”Evaluatexandyinmain()…”<
intx=10,y=20;
”Stepintofnl()…”<
fnl();
”Backinmain”<
return0;
voidfnl()
inty=200;
15)实现客户机(CLIENT)类。
定义字符型静态数据成员ServerName,保存其服务器名称;
整型静态数据成员ClientNum,记录已定义的客户数量;
定义静态函数ChangeServerName()改变服务器名称。
在头文件client.h中定义类,在文件client.cpp中实现,在文件test.cpp中测试这个类,观察相应的成员变量取值的变化情况。
(需要给出main函数代码和运行结果)
//cilent.h
classClient
staticcharSeverName[10];
staticintClientnum;
Client()
Client构造函数被调用"
Clientnum++;
~Client()
Client析构函数被调用"
Clientnum--;
staticvoidChangeServername()
inti;
请输入服务器的名字:
cin>
SeverName;
voidshow();
intClient:
Clientnum=0;
charClient:
SeverName[10]="
abcd"
//Client.cpp
voidClient:
show()
该用户机的服务器端名字是:
SeverName<
用户数量有:
"
Clientnum<
//Client.exe
Client:
ChangeServername();
Client