c++程序设计实验报告(参考答案)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验要求:
对大纲中列出的四个实验要求:
1.以面向对象的程序设计思想编程。

2.熟悉面向对象程序设计语言VC++编程环境。

3.在电脑上快速完成程序编写、调试、运行。

分别写出实验报告〔三页以上〕,要求详尽描述根据实验内容要求,自己设计的上机编程源程序和结果,包括关键性截图。

完成实验报告和上交源程序。

备注:
1.《电脑应用技术》〔专〕、《电脑应用基础》〔专〕、高级语言程序设计〔一〕〔专〕要求学生进行上机操作,保留上机操作原程序,每门课程每个学生形成一个文件夹,文件夹以学生准考证号+命名,最后试点院校汇总,刻录光盘上交主考院校;2.《口语》〔专〕、《口译与听力》〔本〕要求考生进行现场练习,由试点院校教师录制相关材料,每门课程每个学生形成一个文件夹,文件夹以学生准考证号+命名,最后试点院校汇总,刻录光盘上交主考院校;
3. 论文,作业,实验报告,案例分析,前沿思考,学习报告等均要求A4
严禁打印、复印;
4.试点院校按百分制录入成绩,录入后打印学生成绩单;
5.按照系统成绩单的顺序将上报的学习过程评价成绩材料排序并打捆;
6.实践课程考核评估记录表》也需按照成绩单顺序排序,单独上报;
7.有平时作业或测试试卷等可放入本人上报的材料中一并打捆上交。

交实验报告时间:
10月8日假期后第一天上课,务必把按照要求书写完成,并装订好的实验报告交给我,一定!一定!切记不要耽误!
实验一:简单类与对象
一、实验目的
1、熟悉VC++的编程环境,掌握VC++ 6.0的调试方法。

2、掌握简单的类与对象的定义。

二、实验内容
用类定义,输入半径和高,输出圆柱体的底面积和体积。

三、实验要求
1、硬件设备:奔腾Ⅱ及以上电脑,局域网。

2、软件环境:WINDOWS XP、VC++6.0。

3、实验课前预习,课后及时完成实验报告。

4、实验过程及记录按题目格式要求填写在代码清单中。

四、代码清单或实验步骤
#include<iostream>
using namespace std;
const float PI=3.14159f;
class Cylinder{
private:
float radius;
float high;
public:
Cylinder(){}
Cylinder(float r,float h)
{
radius=r;
high=h;
}
void setradius(float r)
{
radius=r;
}
void sethigh(float h)
{
high=h;
}
float bottomarea()
{
return PI*radius*radius;
}
float volumn()
{
return bottomarea()*high;
}
};
void main()
{
float r,h;
Cylinder onecylinder;
cout<<"请输入半径:";
cin>>r;
cout<<"请输入高:";
cin>>h;
onecylinder.setradius(r);
onecylinder.sethigh(h);
cout<<"底面积为:"<<onecylinder.bottomarea()<<endl;
cout<<"体积为:"<<onecylinder.volumn()<<endl;
}
五、实验中出现的问题及解决的方法
1、数据类型的兼容问题
程序代码:const float PI=3.14159;提示将double类型强制赋给float类型的警告解决方法:const float PI=3.14159f;
六、讨论或体会或改良实验的建议
这个实验比较简单,较容易的实现了。

实验二:类与对象
一、实验目的
1、熟悉VC++的编程环境,掌握VC++ 6.0的调试方法。

2、学习类、成员函数与对象的定义方法。

3、掌握构造函数和析构函数的使用。

4、掌握对象成员的使用方法。

二、实验内容
定义一个学生类,其中有3个数据成员:学号、、年龄,以及假设干成员函数。

同时编写主函数使用这个类,实现对学生数据的赋值和输出。

要求:
a) 使用成员函数实现对数据的输入、输出;
b) 使用构造函数和析构函数实现对数据的输入、输出。

三、实验要求
1、硬件设备:奔腾Ⅱ及以上电脑,局域网。

2、软件环境:WINDOWS XP、VC++6.0。

3、实验课前预习,课后及时完成实验报告。

4、实验过程及记录按题目格式要求填写在代码清单中。

四、代码清单或实验步骤
#include<iostream>
using namespace std;
class Student{
private:
char num[10];
char name[10];
int age;
public:
Student()
{
}
Student(char num[],char name[],int age)
{
strcpy(this->num,num);
strcpy(this->name,name);
this->age=age;
}
void set(char num[],char name[],int age)
{
strcpy(this->num,num);
strcpy(this->name,name);
this->age=age;
}
void print()
{
cout<<"学号:"<<num<<",:"<<name<<",年龄:"<<age<<endl;
}
};
void main()
{
char num[10],name[10];
int age;
Student zs;
cout<<"请输入学号:";
cin>>num;
cout<<"请输入:";
cin>>name;
cout<<"请输入年龄:";
cin>>age;
zs.set(num,name,age);
zs.print();
}
五、实验中出现的问题及解决的方法
Student(char num[],char name[],int age)
{
strcpy(this.num,num);
strcpy(,name);
this.age=age;
}
E:\vctest\test2\main.cpp(25) : error C2228: left of '.num' must have class/struct/union type
E:\vctest\test2\main.cpp(26) : error C2228: left of '.name' must have class/struct/union type
E:\vctest\test2\main.cpp(27) : error C2228: left of '.age' must have class/struct/union type
解决方法:将程序代码修改如下
Student(char num[],char name[],int age)
{
strcpy(this->num,num);
strcpy(this->name,name);
this->age=age;
}
程序调试完毕,输出结果如下:
六、讨论或体会或改良实验的建议
面向对象编程,必须要首先要分析类结构,便于实现该类。

本实验中的学生类的示意图如下:
实验三:类与对象/继承与派生
一、实验目的
1、进一步熟悉VC++6.0编程环境,掌握程序的编写、调试和运行。

2、掌握const对象与const成员函数的用法。

3、掌握友元函数与友元类的用途。

4、熟悉不同派生方式的访问特性,掌握类层次中构造函数的定义方式和派生类构造函数和析构函数的调用次序。

5、学习定义虚基类的方法,利用虚基类解决二义性问题。

二、实验内容
class area_c1{
protected:
double height;
double width;
public:
area_c1(double r,double s)
{height=r;width=s;}
virtual double area()=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、软件环境:WINDOWS XP、VC++6.0。

3、实验课前预习,课后及时完成实验报告。

4、实验过程及记录按题目格式要求填写在代码清单中。

四、代码清单或实验步骤
#include<iostream>
using namespace std;
class area_c1{
protected:
double height;
double width;
public:
area_c1(double r,double s)
{height=r;width=s;}
virtual double area()=0;
};
class rectangle:public area_c1
{
public:
rectangle(double r,double s):area_c1(r,s) {
}
double area()
{
return height*width;
}
};
class isosceles:public area_c1
{
public:
isosceles(double r,double s):area_c1(r,s) {
}
double area()
{
return height*width/2;
}
};
void main()
{
rectangle rectangle(10,5);
isosceles isosceles(4,6);
area_c1 *ptr;
ptr=&rectangle;
cout<<"矩形的面积为:"<<ptr->area()<<endl; ptr=&isosceles;
cout<<"三角形的面积为:"<<ptr->area()<<endl; }
五、实验中出现的问题及解决的方法
父类area_c1中的两个成员派生到了两个子类中时,不能通过子类的构造函数直接对这两个成员进行初始化,必须通过调用父类的构造函数进行初始化才行,如下:
public:
rectangle(double r,double s):area_c1(r,s)
{
}
六、讨论或体会或改良实验的建议
C++中运行时多态是通过指向基类的指针和虚函数机制来实现的。

产生运行时多态有如下3个前提:
(1)类之间的继承关系满足赋值兼容性规则
(2)改写了同名虚函数
(3)根据赋值兼容性规则使用指针〔或引用〕。

相关文档
最新文档