ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:20.38KB ,
资源ID:12518394      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12518394.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C++实验报告1.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C++实验报告1.docx

1、C+实验报告1重 庆 交 通 大 学学 生 实 验 报 告实验课程名称 C+程序设计 开课实验室 数学实验室 学 院 理学院 年级 09级信息 专业班 2班 学 生 姓 名 学号 09180223 开 课 时 间 2009 至 2010 学年 第 2 学期评分细则内容分数实验过程设计 (40%)实验结果分析(30%)实验体会(20%)排版格式(10%)总 成 绩教师签名:韩逢庆实验2 类和对象2.1 实验目的 1 类的定义; 2 类对象的使用; 3 类成员变量、成员函数的定义和使用; 4 观察类的组合使用; 5 理解类的作用域; 6 理解类的声明; 7 理解类中 private 和 publi

2、c 权限;8 掌握拷贝构造函数的定义和使用; 9 掌握构造函数的重载; 10 掌握析构函数的定义和使用11 理解构造函数和析构函数的执行过程2.2 实验内容 2.2.1 理解部分 1 理解下面的程序,回答后面的问题,并在 vc6.0 下运行查看结果。 #include ? class CDate void Set( int m, int d, int y ) month = m ; day = d ; year = y ; int IsLeapYear() return (year%4 = 0 & year%100 != 0)|(year%400 = 0); public : void Pri

3、nt() coutmonth / day / yearendl; private : int month; int day; int year; ; ? void main() CDate a; - a.Set(10,15,2007) ; a.Print(); 问题一:以上程序编译能通过吗,为什么,应该如何改正? 答:不能。因为没有定义构造函数,并且没有声明私有成员。修改后的程序代码为:#include class CDate private:int month,day,year;public :void Set( int m, int d, int y ) month = m ; day =

4、 d ; year = y ; int IsLeapYear() return (year%4 = 0 & year%100 != 0)|(year%400 = 0); void Print() coutmonth / day / yearendl; private : int month; int day; int year; ; void main() CDate a; a.Set(10,15,2007) ; a.Print(); 问题二:类 CDate 中分别有哪些成员函数和成员变量,它们分别属于哪种访问权限? 答:成员变量为:month、day、year. 成员函数有:void Set

5、( int m, int d, int y ) 、int IsLeapYear()、void Print() 问题三:处语句的意思是什么? 答: 定义一个省略参数的类。2 理解下面的程序,回答后面的问题,并在 vc6.0 下运行查看结果。 #include ? int month; / 全局变量 int day; int year; void Set( int m, int d, int y) - a :month=m; - :day=d; :year=y; class CDate public : void Set( int m, int d, int y) - b :Set(m,d,y);

6、 - void Print() coutmonth / day / yearendl; private : int month; / 成员变量 int day; int year; ; ? void main() CDate a; a.Set(10,15,2007) ; a.Print(); 问题一:处是在给成员变量赋值,还是在给全局变量赋值,如果去掉域作用符 : ,程序是否还能正确运行? 答:处是在给局部变量赋值。去掉:后不能正确运行。问题二:处调用的哪个函数,如果去掉域作用符 : ,程序是否还能正确运行? 答:处调用的是a处的函数。去掉:仍然不能正确运行。问题三:该程序的输出结果是什么,试

7、解释该输出结果。 答:原因在于该类没有定义私有成员变量。3试指出以下程序的错误,并改正之。 #include ? class CPoint public : unsigned x, unsigned y; bool IsInCircle(CCircle *Circle) return (x-Circle-Center.x)*(x-Circle-Center.x) +(y-Circle-Center.y)*(y-Circle-Center.y)Radius*Circle-Radius); ; ? class CCircle public : unsigned Radius; CPoint Cen

8、ter ; ; ? void main() ? 答:错误在于bool IsInCircle(CCircle *Circle) ;修改后的程序为:#include ?class CCircle; class CPoint friend class CCircle();public : unsigned x;unsigned y; bool IsInCircle(CCircle *Circle) return (x-Circle-Center.x)*(x-Circle-Center.x) +(y-Circle-Center.y)*(y-Circle-Center.y)Radius*Circle-R

9、adius); ; ? class CCircle public : unsigned Radius; CPoint Center ; ; ? void main() ? 4 理解下面的程序,回答后面的问题,并在 vc6.0 下运行查看结果。 #include ? class CPoint public : void Set( int x, int y); void Print(); private : int x; int y; ; ? void CPoint:Set( int x, int y) x = x; y = y; void CPoint:Print() cout x= x ,y=

10、 yendl; ? void main() CPoint pt; pt.Set(10,20); pt.Print(); 问题一:以上程序编译能通过吗,试解释该程序? 答:能够通过。问题二:以上程序的运行结构是否正确,如果不正确,试分析为什么,应该如何改正? 答:不正确。原因在于改程序中void Set( int x, int y)的形参与函数变量重名,产生二义性。void Set( int x, int y)应改为void Set( int x1, int y1);5 理解下面的程序,回答后面的问题,并在 vc6.0 下运行查看结果。 #include ? class CPerson publ

11、ic : void Print(); private : CPerson(); private : int age; char *name; ; ? CPerson:CPerson() ? void CPerson:Print() cout name= name ,age= ageendl; ? void main() CPerson ps(23, 张三 ); ps.Print(); 问题:以上程序存在若干错误,在不改变主函数内容的前提下,试改正该程序。答:修改后的程序为: #include class CPerson public : void Print(); CPerson(int a,

12、char *b); private : int age; char *name; ; CPerson:CPerson(int a,char *b) age=a; name=b; void CPerson:Print() cout name= name ,age= ageendl; void main() CPerson ps(23, 张三 ); ps.Print(); 2.2.2 程序设计部分 1 试设计一个复数类,该类有实部和虚部两个成员数据,成员数据采用私有访问权限,同时该类有两个共有成员函数,分别用来设置成员数据和输出成员数据,在主函数中分别采用对象方式,指针方式和引用方式来调用该类的公

13、有函数设置和输出成员数据。2 设计实现一个 CPoint 类,满足以下要求: a 该类包含两个整型成员变量 x (横坐标)和 y (纵坐标),以及一个输出函数 Print() 用来输出横坐标和纵坐标,要求不可以在类的外部直接访问成员变量; b 可以采用没有参数的构造函数初始化对象,此时的成员变量采用默认值 0 ; c 可以采用直接输入参数的方式来初始化该类的成员变量; d 可以采用其它的 CPoint 对象来初始化该类的成员变量; e 设计一个主函数来测试以上功能。3 设计一个 CStudent (学生)类,并使 CStudent 类具有以下特点: a 该类具有学生姓名、学号、程序设计、信号处

14、理、数据结构三门课程的成绩; b 学生全部信息由键盘输入,以提高程序的适应性; c 通过成员函数统计学生平均成绩,当课程数量增加时,成员函数无须修改仍可以求取平均成绩; d 输出学生的基本信息、各科成绩与平均成绩; e 学生对象的定义采用对象数组实现; f 统计不及格学生人数。4 设计一个用于人事管理的员工类(employee),包含的成员变量有:编号、性别、出生日期、身份证号码等,成员函数有:构造函数、析构函数、拷贝构造函数、员工基本信息输出函数等。其中,编号用字符数组,身份证号码用字符指针,出生日期为日期类的对象一、 实验结果分析1 试设计一个复数类,该类有实部和虚部两个成员数据,成员数据

15、采用私有访问权限,同时该类有两个共有成员函数,分别用来设置成员数据和输出成员数据,在主函数中分别采用对象方式,指针方式和引用方式来调用该类的公有函数设置和输出成员数据。(一)、程序理解该程序考察构造函数和利用成员函数对私有成员进行修改的问题,此外也考察了应用与指针在数据应用方面的广泛应用!(二)、程序设计见代码。二、 实验体会改程序让我了解熟悉了构造函数与成员函数对私用成员的重要性,以及指针域应用的区别。三、 附录:(源代码)#includeiostream.h#includemath.hclass fushuprivate: float shibu; float xubu;public: f

16、ushu(float a,float b); fushu(float *a,float *b); fushu(float &a,float &b); void show(void); fushu(void);fushu:fushu(float a,float b)/定义公共函数 shibu=a; xubu=b;fushu:fushu(float *a,float *b)/定义参数为指针类型的函数 shibu=*a; xubu=*b;fushu:fushu(float &a,float &b)/定义参数为引用类型的函数 shibu=a; xubu=b;void fushu:show(void)/

17、私用成员的输出 cout实部为:endl; coutshibuendl; cout虚部为:endl; coutxubuendl; fushu:fushu()main() float k=1.2,n=2; float *r=&k,*i=&n; fushu a(2.5,3); cout采用对象方式输出结果为:endl; a.show(); fushu b(r,i); cout采用指针方式输出结果为:endl; b.show(); fushu c(&k,&n); cout采用引用方式输出结果为:endl; c.show();2 设计实现一个 CPoint 类,满足以下要求: a 该类包含两个整型成员

18、变量 x (横坐标)和 y (纵坐标),以及一个输出函数 Print() 用来输出横坐标和纵坐标,要求不可以在类的外部直接访问成员变量; b 可以采用没有参数的构造函数初始化对象,此时的成员变量采用默认值 0 ; c 可以采用直接输入参数的方式来初始化该类的成员变量; d 可以采用其它的 CPoint 对象来初始化该类的成员变量; e 设计一个主函数来测试以上功能。四、 实验结果分析(一)、程序理解 改程序主要考察了构造函数与一般成语函数的作用,以及在定义构造函数在参数个数与参数默认的情况下的构造情况!(二)、程序设计见源代码.五、 实验体会此实验让我对构造函数在参数默认以及参数个数缺省情况下

19、的定义方法有了更深的掌握,以及对成员函数的作用有了更深刻的了解!六、 附录:(源代码)#include iostream.h#include stdio.hclass CPoint private: float x, y;public: CPoint(void); CPoint (float x1,float y1); modify(float x2,float y2); CPoint(); void Print(void);CPoint:CPoint() x=0; y=0;CPoint:CPoint(float x1,float y1)/默认参数函数 x=x1; y=y1;CPoint:mo

20、dify(float x2,float y2)/对私有成员的修改 x=x2; y=y2;CPoint:CPoint()void CPoint:Print(void)/输出坐标功能函数 cout初始化后的坐标为:(x,y)endl;void main(void) CPoint a,b(8,9); a.Print(); b.Print(); a.modify(9,8); a.Print();3 设计一个 CStudent (学生)类,并使 CStudent 类具有以下特点: a 该类具有学生姓名、学号、程序设计、信号处理、数据结构三门课程的成绩; b 学生全部信息由键盘输入,以提高程序的适应性;

21、c 通过成员函数统计学生平均成绩,当课程数量增加时,成员函数无须修改仍可以求取平均成绩; d 输出学生的基本信息、各科成绩与平均成绩; e 学生对象的定义采用对象数组实现; f 统计不及格学生人数。七、 实验结果分析(一)、程序理解该程序主要考察嵌套类定义,以及在定义相关成员函数是的定义方法。此外还考察了程序设计的灵活性!(二)、程序设计见源代码。八、 实验体会该实验让我对嵌套类的定义有了更深刻的了解,对嵌套类的使用有了进一步的掌握。最主要的是让我知道了程序设计的灵活性的重要性!九、 附录:(源代码)#include iostream.h#include string.h#include ma

22、th.h#include stdio.hclass Cstudentclass grade private: int sum; float process; float singal; float construct; float average; public: grade(float a,float b,float c) sum=0; process=a; singal=b; construct=c; average=(process+singal+construct)/3.0; void modify(float a,float b,float c)/子对象值的修改传值 process=

23、a; singal=b; construct=c; void show()/子对象的显示 average=(process+singal+construct)/3.0; cout程序设计成绩为:processendl; cout信号处理成绩为:singalendl; cout数据结构成绩为:constructendl; cout学生平均成绩为:averageendl; if(process60)|(singal60)|(construct60) sum+; cout有不及格科目的学生数为:sumendl; ;private: char *name; char *number; grade al

24、l;public: Cstudent(char *name1,char *number1,float a1,float b1,float c1); Cstudent(void); void set(void); void display();Cstudent:Cstudent(char *name1,char *number1,float a1,float b1,float c1):/函数1(传入数据)all(a1,b1,c1) name=new charstrlen(name1)+1; strcpy(name,name1); number=new charstrlen(number1)+1;

25、 strcpy(number,number1);Cstudent:Cstudent(void)/函数2(释放空间) delete name; delete number;void Cstudent:set(void)/函数3(数据修改) float grade1,float grade2,float grade3; char name120,char number110; cout请输入学生的程序设计成绩:grade1; cout请输入学生的信号处理成绩:grade2; cout请输入数据结构成绩:grade3; delete name; cout请输入学生的姓名:name1; name=ne

26、w charstrlen(name1)+1; strcpy(name,name1); delete number; cout请输入学生的学号:number1; number=new charstrlen(number1)+1; strcpy(number,number1); all.modify(grade1,grade2,grade3);void Cstudent:display()/函数4(数据输出) cout学生姓名为:nameendl; cout学生学号为:numberendl; all.show();void main() char a20,b10; float grade1,grade2,grade3; cout请输入学生的姓名:a; cout请输入学生的学号:b; cout请输入学生的程序设计成绩:grade1; cout请输入学生的信号处理成绩:e

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1