c++程序设计实验报告参考答案Word文档格式.docx
《c++程序设计实验报告参考答案Word文档格式.docx》由会员分享,可在线阅读,更多相关《c++程序设计实验报告参考答案Word文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
实验一:
简单类与对象
一、实验目的
1、熟悉VC++的编程环境,掌握VC++6.0的调试方法。
2、掌握简单的类与对象的定义。
二、实验内容
用类定义,输入半径和高,输出圆柱体的底面积和体积。
三、实验要求
1、硬件设备:
奔腾Ⅱ及以上计算机,局域网。
2、软件环境:
WINDOWSXP、VC++6.0。
3、实验课前预习,课后及时完成实验报告。
4、实验过程及记录按题目格式要求填写在代码清单中。
四、代码清单或实验步骤
#include<
iostream>
usingnamespacestd;
constfloatPI=3.14159f;
classCylinder{
private:
floatradius;
floathigh;
public:
Cylinder(){}
Cylinder(floatr,floath)
{
radius=r;
high=h;
}
voidsetradius(floatr)
voidsethigh(floath)
floatbottomarea()
returnPI*radius*radius;
floatvolumn()
returnbottomarea()*high;
};
voidmain()
{
floatr,h;
Cylinderonecylinder;
cout<
<
"
请输入半径:
;
cin>
>
r;
请输入高:
h;
onecylinder.setradius(r);
onecylinder.sethigh(h);
底面积为:
onecylinder.bottomarea()<
endl;
体积为:
onecylinder.volumn()<
}
五、实验中出现的问题及解决的方法
1、数据类型的兼容问题
程序代码:
constfloatPI=3.14159;
提示将double类型强制赋给float类型的警告
解决方法:
六、讨论或体会或改进实验的建议
这个实验比较简单,较容易的实现了。
实验二:
类与对象
2、学习类、成员函数与对象的定义方法。
3、掌握构造函数和析构函数的使用。
4、掌握对象成员的使用方法。
定义一个学生类,其中有3个数据成员:
学号、姓名、年龄,以及若干成员函数。
同时编写主函数使用这个类,实现对学生数据的赋值和输出。
要求:
a)使用成员函数实现对数据的输入、输出;
b)使用构造函数和析构函数实现对数据的输入、输出。
classStudent{
charnum[10];
charname[10];
intage;
Student()
Student(charnum[],charname[],intage)
strcpy(this->
num,num);
name,name);
this->
age=age;
voidset(charnum[],charname[],intage)
voidprint()
cout<
学号:
num<
姓名:
name<
年龄:
age<
charnum[10],name[10];
Studentzs;
请输入学号:
cin>
num;
请输入姓名:
name;
请输入年龄:
age;
zs.set(num,name,age);
zs.print();
}
strcpy(this.num,num);
strcpy(this.name,name);
this.age=age;
E:
\vctest\test2\main.cpp(25):
errorC2228:
leftof'
.num'
musthaveclass/struct/uniontype
\vctest\test2\main.cpp(26):
.name'
\vctest\test2\main.cpp(27):
.age'
将程序代码修改如下
程序调试完毕,输出结果如下:
面向对象编程,必须要首先要分析类结构,便于实现该类。
本实验中的学生类的示意图如下:
Student类
num学号
name姓名
age年龄
Student()构造函数
~Student()析构函数
Set()输入函数
Print()输出函数
实验三:
类与对象/继承与派生
一、实验目的
1、进一步熟悉VC++6.0编程环境,掌握程序的编写、调试和运行。
2、掌握const对象与const成员函数的用法。
3、掌握友元函数与友元类的用途。
4、熟悉不同派生方式的访问特性,掌握类层次中构造函数的定义方式和派生类构造函数和析构函数的调用次序。
5、学习定义虚基类的方法,利用虚基类解决二义性问题。
二、实验内容
classarea_c1{
protected:
doubleheight;
doublewidth;
public:
area_c1(doubler,doubles)
{height=r;
width=s;
virtualdoublearea()=0;
(1)建立基类area_c1的两个派生类rectangle与isosceles,让每一个派生类都包含一个函数area(),分别用来返回矩形与三角形的面积。
用构造函数对height与width进行初始化。
(2)写出主程序,用来求height与width分别为10.0与5.0的矩形面积,以及求height与width分别为4.0与6.0的三角形面积。
(3)要求通过使用基类指针访问虚函数的方法(即运行时的多态性)分别求出矩形和三角形面积。
四、代码清单或实验步骤
classrectangle:
publicarea_c1
rectangle(doubler,doubles):
area_c1(r,s)
doublearea()
returnheight*width;
classisosceles:
isosceles(doubler,doubles):
returnheight*width/2;
rectanglerectangle(10,5);
isoscelesisosceles(4,6);
area_c1*ptr;
ptr=&
rectangle;
矩形的面积为:
ptr->
area()<
isosceles;
三角形的面积为:
父类area_c1中的两个成员派生到了两个子类中时,不能通过子类的构造函数直接对这两个成员进行初始化,必须通过调用父类的构造函数进行初始化才行,如下:
六、讨论或体会或改进实验的建议
C++中运行时多