c++程序设计实验报告参考答案.docx
《c++程序设计实验报告参考答案.docx》由会员分享,可在线阅读,更多相关《c++程序设计实验报告参考答案.docx(11页珍藏版)》请在冰豆网上搜索。
c++程序设计实验报告参考答案
实验要求:
对大纲中列出的四个实验要求:
1.以面向对象的程序设计思想编程。
2.熟悉面向对象程序设计语言VC++编程环境。
3.在计算机上快速完成程序编写、调试、运行。
分别写出实验报告(三页以上),要求详尽描述根据实验内容要求,自己设计的上机编程源程序和结果,包括关键性截图。
完成实验报告和上交源程序。
备注:
1.《计算机应用技术》(专)、《计算机应用基础》(专)、高级语言程序设计
(一)(专)要求学生进行上机操作,保留上机操作原程序,每门课程每个学生形成一个文件夹,文件夹以学生准考证号+姓名命名,最后试点院校汇总,刻录光盘上交主考院校;
2.《口语》(专)、《口译与听力》(本)要求考生进行现场练习,由试点院校教师录制相关材料,每门课程每个学生形成一个文件夹,文件夹以学生准考证号+姓名命名,最后试点院校汇总,刻录光盘上交主考院校;
3.论文,作业,实验报告,案例分析,前沿思考,学习报告等均要求A4纸手写,严禁打印、复印;
4.试点院校按百分制录入成绩,录入后打印学生成绩单;
5.按照系统成绩单的顺序将上报的学习过程评价成绩材料排序并打捆;
6.实践课程考核评估记录表》也需按照成绩单顺序排序,单独上报;
7.有平时作业或测试试卷等可放入本人上报的材料中一并打捆上交。
交实验报告时间:
10月8日假期后第一天上课,务必把按照要求书写完成,并装订好的实验报告交给我,一定!
一定!
切记不要耽误!
实验一:
简单类与对象
一、实验目的
1、熟悉VC++的编程环境,掌握VC++6.0的调试方法。
2、掌握简单的类与对象的定义。
二、实验内容
用类定义,输入半径和高,输出圆柱体的底面积和体积。
三、实验要求
1、硬件设备:
奔腾Ⅱ及以上计算机,局域网。
2、软件环境:
WINDOWSXP、VC++6.0。
3、实验课前预习,课后及时完成实验报告。
4、实验过程及记录按题目格式要求填写在代码清单中。
四、代码清单或实验步骤
#include
usingnamespacestd;
constfloatPI=3.14159f;
classCylinder{
private:
floatradius;
floathigh;
public:
Cylinder(){}
Cylinder(floatr,floath)
{
radius=r;
high=h;
}
voidsetradius(floatr)
{
radius=r;
}
voidsethigh(floath)
{
high=h;
}
floatbottomarea()
{
returnPI*radius*radius;
}
floatvolumn()
{
returnbottomarea()*high;
}
};
voidmain()
{
floatr,h;
Cylinderonecylinder;
cout<<"请输入半径:
";
cin>>r;
cout<<"请输入高:
";
cin>>h;
onecylinder.setradius(r);
onecylinder.sethigh(h);
cout<<"底面积为:
"<cout<<"体积为:
"<}
五、实验中出现的问题及解决的方法
1、数据类型的兼容问题
程序代码:
constfloatPI=3.14159;提示将double类型强制赋给float类型的警告
解决方法:
constfloatPI=3.14159f;
六、讨论或体会或改进实验的建议
这个实验比较简单,较容易的实现了。
实验二:
类与对象
一、实验目的
1、熟悉VC++的编程环境,掌握VC++6.0的调试方法。
2、学习类、成员函数与对象的定义方法。
3、掌握构造函数和析构函数的使用。
4、掌握对象成员的使用方法。
二、实验内容
定义一个学生类,其中有3个数据成员:
学号、姓名、年龄,以及若干成员函数。
同时编写主函数使用这个类,实现对学生数据的赋值和输出。
要求:
a)使用成员函数实现对数据的输入、输出;
b)使用构造函数和析构函数实现对数据的输入、输出。
三、实验要求
1、硬件设备:
奔腾Ⅱ及以上计算机,局域网。
2、软件环境:
WINDOWSXP、VC++6.0。
3、实验课前预习,课后及时完成实验报告。
4、实验过程及记录按题目格式要求填写在代码清单中。
四、代码清单或实验步骤
#include
usingnamespacestd;
classStudent{
private:
charnum[10];
charname[10];
intage;
public:
Student()
{
}
Student(charnum[],charname[],intage)
{
strcpy(this->num,num);
strcpy(this->name,name);
this->age=age;
}
voidset(charnum[],charname[],intage)
{
strcpy(this->num,num);
strcpy(this->name,name);
this->age=age;
}
voidprint()
{
cout<<"学号:
"<"<"<}
};
voidmain()
{
charnum[10],name[10];
intage;
Studentzs;
cout<<"请输入学号:
";
cin>>num;
cout<<"请输入姓名:
";
cin>>name;
cout<<"请输入年龄:
";
cin>>age;
zs.set(num,name,age);
zs.print();
}
五、实验中出现的问题及解决的方法
Student(charnum[],charname[],intage)
{
strcpy(this.num,num);
strcpy(this.name,name);
this.age=age;
}
E:
\vctest\test2\main.cpp(25):
errorC2228:
leftof'.num'musthaveclass/struct/uniontype
E:
\vctest\test2\main.cpp(26):
errorC2228:
leftof'.name'musthaveclass/struct/uniontype
E:
\vctest\test2\main.cpp(27):
errorC2228:
leftof'.age'musthaveclass/struct/uniontype
解决方法:
将程序代码修改如下
Student(charnum[],charname[],intage)
{
strcpy(this->num,num);
strcpy(this->name,name);
this->age=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)要求通过使用基类指针访问虚函数的方法(即运行时的多态性)分别求出矩形和三角形面积。
三、实验要求
1、硬件设备:
奔腾Ⅱ及以上计算机,局域网。
2、软件环境:
WINDOWSXP、VC++6.0。
3、实验课前预习,课后及时完成实验报告。
4、实验过程及记录按题目格式要求填写在代码清单中。
四、代码清单或实验步骤
#include
usingnamespacestd;
classarea_c1{
protected:
doubleheight;
doublewidth;
public:
area_c1(doubler,doubles)
{height=r;width=s;}
virtualdoublearea()=0;
};
classrectangle:
publicarea_c1
{
public:
rectangle(doubler,doubles):
area_c1(r,s)
{
}
doublearea()
{
returnheight*width;
}
};
classisosceles:
publicarea_c1
{
public:
isosceles(doubler,doubles):
area_c1(r,s)
{
}
doublearea()
{
returnheight*width/2;
}
};
voidmain()
{
rectanglerectangle(10,5);
isoscelesisosceles(4,6);
area_c1*ptr;
ptr=&rectangle;
cout<<"矩形的面积为:
"<area()<ptr=&isosceles;
cout<<"三角形的面积为:
"<area()<}
五、实验中出现的问题及解决的方法
父类area_c1中的两个成员派生到了两个子类中时,不能通过子类的构造函数直接对这两个成员进行初始化,必须通过调用父类的构造函数进行初始化才行,如下:
public:
rectangle(doubler,doubles):
area_c1(r,s)
{
}
六、讨论或体会或改进实验的建议
C++中运行时多