C++实验报告1.doc
- 文档编号:139122
- 上传时间:2022-10-04
- 格式:DOC
- 页数:18
- 大小:101.50KB
C++实验报告1.doc
《C++实验报告1.doc》由会员分享,可在线阅读,更多相关《C++实验报告1.doc(18页珍藏版)》请在冰豆网上搜索。
重庆交通大学
学生实验报告
实验课程名称C++程序设计
开课实验室数学实验室
学院理学院年级09级信息专业班2班
学生姓名学号09180223
开课时间2009至2010学年第2学期
评分细则
内容
分数
实验过程设计(40%)
实验结果分析(30%)
实验体会(20%)
排版格式(10%)
总成绩
教师签名:
韩逢庆
实验2类和对象
2.1实验目的
1.类的定义;
2.类对象的使用;
3.类成员变量、成员函数的定义和使用;
4.观察类的组合使用;
5.理解类的作用域;
6.理解类的声明;
7.理解类中private和public权限;
8.掌握拷贝构造函数的定义和使用;
9.掌握构造函数的重载;
10.掌握析构函数的定义和使用
11.理解构造函数和析构函数的执行过程
2.2实验内容
2.2.1理解部分
1.理解下面的程序,回答后面的问题,并在vc6.0下运行查看结果。
#include
classCDate
{
voidSet(intm,intd,inty)
{
month=m;
day=d;
year=y;
}
intIsLeapYear()
{
return(year%4==0&&year%100!
=0)||(year%400==0);
}
public:
voidPrint()
{cout< private: intmonth;intday;intyear; }; voidmain() { CDatea;-----------------------------------------------------① a.Set(10,15,2007); a.Print(); } 问题一: 以上程序编译能通过吗,为什么,应该如何改正? 答: 不能。 因为没有定义构造函数,并且没有声明私有成员。 修改后的程序代码为: #include classCDate {private: intmonth,day,year; public: voidSet(intm,intd,inty) { month=m; day=d; year=y; } intIsLeapYear() { return(year%4==0&&year%100! =0)||(year%400==0); } voidPrint() {cout< private: intmonth;intday;intyear; }; voidmain() { CDatea; a.Set(10,15,2007); a.Print(); } 问题二: 类CDate中分别有哪些成员函数和成员变量,它们分别属于哪种访问权限? 答: 成员变量为: month、day、year.成员函数有: voidSet(intm,intd,inty) 、intIsLeapYear()、voidPrint() 问题三: ①处语句的意思是什么? 答: 定义一个省略参数的类。 2.理解下面的程序,回答后面的问题,并在vc6.0下运行查看结果。 #include intmonth;//全局变量 intday; intyear; voidSet(intm,intd,inty)----------------------------------------------a { : : month=m;-----------------------------------------------------① : : day=d; : : year=y; } classCDate { public: voidSet(intm,intd,inty)------------------------------------------------b { : : Set(m,d,y);-----------------------------------------------------② } voidPrint() {cout< private: intmonth;//成员变量 intday; intyear; }; voidmain() { CDatea; a.Set(10,15,2007); a.Print();} 问题一: ①处是在给成员变量赋值,还是在给全局变量赋值,如果去掉域作用符: : ,程序是否还能正确运行? 答: ①处是在给局部变量赋值。 去掉: : 后不能正确运行。 问题二: ②处调用的哪个函数,如果去掉域作用符: : ,程序是否还能正确运行? 答: ②处调用的是a处的函数。 去掉: : 仍然不能正确运行。 问题三: 该程序的输出结果是什么,试解释该输出结果。 答: 原因在于该类没有定义私有成员变量。 3.试指出以下程序的错误,并改正之。 #include classCPoint { public: unsignedx, unsignedy; boolIsInCircle(CCircle*Circle) { return(((x-Circle->Center.x)*(x-Circle->Center.x) +(y-Circle->Center.y)*(y-Circle->Center.y))<=Circle->Radius*Circle->Radius);} }; classCCircle { public: unsignedRadius; CPointCenter; }; voidmain() { …} 答: 错误在于boolIsInCircle(CCircle*Circle); 修改后的程序为: #include classCCircle; classCPoint { friendclassCCircle(); public: unsignedx; unsignedy; boolIsInCircle(CCircle*Circle) { return(((x-Circle->Center.x)*(x-Circle->Center.x) +(y-Circle->Center.y)*(y-Circle->Center.y))<=Circle->Radius*Circle->Radius);} }; classCCircle { public: unsignedRadius; CPointCenter; }; voidmain() { …} 4.理解下面的程序,回答后面的问题,并在vc6.0下运行查看结果。 #include classCPoint { public: voidSet(intx,inty); voidPrint(); private: intx; inty;}; voidCPoint: : Set(intx,inty) {x=x;y=y;} voidCPoint: : Print() {cout<<"x="< voidmain() { CPointpt; pt.Set(10,20); pt.Print();} 问题一: 以上程序编译能通过吗,试解释该程序? 答: 能够通过。 问题二: 以上程序的运行结构是否正确,如果不正确,试分析为什么,应该如何改正? 答: 不正确。 原因在于改程序中voidSet(intx,inty)的形参与函数变量重名,产生二义性。 voidSet(intx,inty)应改为voidSet(intx1,inty1); 5.理解下面的程序,回答后面的问题,并在vc6.0下运行查看结果。 #include classCPerson { public: voidPrint(); private: CPerson(); private: intage; char*name; }; CPerson: : CPerson() {} voidCPerson: : Print() { cout<<"name="< } voidmain() { CPersonps(23,"张三"); ps.Print();} 问题: 以上程序存在若干错误,在不改变主函数内容的前提下,试改正该程序。 答: 修改后的程序为: #include classCPerson { public: voidPrint(); CPerson(inta,char*b); private: intage; char*name; }; CPerson: : CPerson(inta,char*b) { age=a; name=b; } voidCPerson: : Print() { cout<<"name="< } voidmain() { CPersonps(23,"张三"); ps.Print();} 2.2.2程序设计部分 1.试设计一个复数类,该类有实部和虚部两个成员数据,成员数据采用私有访问权限,同时该类有两个共有成员函数,分别用来设置成员数据和输出成员数据,在主函数中分别采用对象方式,指针方式和引用方式来调用该类的公有函数设置和输出成员数据。 2.设计实现一个CPoint类,满足以下要求: a.该类包含两个整型成员变量x(横坐标)和y(纵坐标),以及一个输
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)