1、面向对象程序C+设计实验报告面向对象程序C+设计实验报告计算机与信息工程系 C+面向对象程序设计实验报告 专业:计算机 班级: 学号: 姓名: 指导老师:刘文涛 实验1:Visual C+6.0开发环境应用入门 一、实验目的 1、 了解Visual C+6.0的特点。 2、 熟悉Visual C+6.0的开发环境。 3、 学习用Visual C+6.0编写标准的C+控制台程序。 二、实验任务 使用Visual C+来建立一个非图形化的标准C+程序,编译、运行 三、实验步骤 #include struct time int year; int month; int day; int hour;
2、int minue; int second; ; void main() time a; couta.year; couta.month; couta.day; couta.hour; couta.minue; couta.second; couta.year年a.month月a.day日a.hour时a.minue分a.second秒; 四:个人小结 这是第一次开始学习C+,以前也没有接触过类似的东西。所以刚开始的时候心里还是有一点兴奋的。但是,听说这一门学科是天津大学的四大天书之一。也还是挺畏惧的。刚开始的时候,对自己的要求也不算太高。过了就好了。说实在的,在第一次编这些题目的时候也遇到了
3、一些困难,这都是什么呀,一堆乱码。心里特别的苦恼,这门学科应该怎么学习啊。但是在老师的细心帮助与教诲下,还是最终把这些题做完了。现在再回首看这些题,其实还是挺简单的。 实验2 函 数(2学时) 一、实验目的 1(掌握函数的声明、调用、实参与形参的值传递关系、返回值; 2(理解函数重载,掌握函数重载的方法; 3(理解递归的概念,掌握递归函数的定义与使用; 二、实验内容及步骤 1. 定义一个函数,判断三个整形边长能否构成三角形,如果是三角形,则判断它是否是直角三角形。 1) 声明函数judge; 2) 实现函数judge,根据输入的三个边长判断是否可以构成一个三角形; 3) 在main中调用jud
4、ge; 4) 在main中根据judge的返回值判断是否是三角形,如果构成三角形则判断是否为直角三角形,并给出结论。 程序如下: #include using namespace std; int judge(int a,int b,int c) int d; d=ab?a:b; d=dc?d:c; if(d=a) return (b+c)d; if(d=b) return (a+c)d; if(d=c) return (a+b)d; void main() coutabc; if(judge(a,b,c) cout这三条边能组成一个三角形n; if(a*a+b*b=c*c|a*a+c*c=b
5、*b|b*b+c*c=a*a) cout这个三角形是直角三角形n; else cout这个三角形不是直角三角形n; else cout这三条边不能组成一个三角形n; 运行结果: 2. 用重载函数实现两个整数和三个整数的排序,按照从小到大的顺序将排序结果输出。 1) 声明函数sort为重载函数,并根据参数个数的不同分别进行定义; 2) 在main中用cin分别输入两个整数和三个整数; 3) 根据参数个数的不同,调用不同的函数,从而实现重载。 程序如下: #include using namespace std; void sort(int a,int b) int i; cout这两个数的大小顺
6、序为:n; i=ab?a:b; coutib?a:b; coutiendl; void sort(int a,int b,int c) coutb?a:b; d=dc?d:c; if(d=a) i=bc?b:c; coutic?b:c; couti dendl; if(d=b) i=ac?a:c; coutic?a:c; couti dendl; if(d=c) i=ba?b:a; coutia?b:a; couti dendl; void main() coutab; sort(a,b); coutabc; sort(a,b,c); 运行结果: 3. 在主函数中输入一个十进制数,调用转换函数
7、把这个十进制数转换成二、八、十六进制数。 程序如下: #include using namespace std; void zhuanhuan(int n) int a100,i=0,j=n,k=n; while(n!=0) ai=n%2; n=n/2; i+; / j=i-1; cout0;i-) coutai-1; coutendl; / int a100,i=0,j; i=0; while(j!=0) ai=j%8; j=j/8; i+; / j=i-1; cout0;i-) coutai-1; coutendl; / int a100,i=0,j; while(k!=0) ai=k%1
8、6; k=k/16; i+; / j=i-1; cout0;i-) if(ai-1=0&ai-1=9) coutai-1; else switch(ai-1) case 10: coutA;break; case 11: coutB;break; case 12:coutC;break; case 13:coutD;break; case 14:coutE;break; case 15:coutF;break; coutendl; void main() coutn; zhuanhuan(n); 运行结果: 4. 在主函数中定义两个变量,调用交换函数实现两个数的交换。分别用指针和引用作参数来编
9、写交换函数。(体会引用的作用) 程序如下: #include using namespace std; void jiaohuan(int *p,int*q) int n; n=*p; *p=*q; *q=n; cout交换后为:a=*p b=*qendl; void jiaohuan1(int &a,int &b) int n; n=b; b=a; a=n; cout交换后为:a=a b=bendl; void main() int a,b,*p,*q; coutab; p=&a; q=&b; jiaohuan(p,q); jiaohuan1(a,b); 运行结果: 实验3 类与对象(4学时
10、) 一、实验目的 1(掌握C+类的概念和基本组成,学会设计类,掌握类对象的声明和使用方法; 2(熟悉各种成员函数包括构造函数、析构函数、内嵌函数的定义与使用; 3(掌握静态数据成员的使用。 二、实验内容及步骤 1. 声明一个Circle类,有 数据成员Radius(半径) 1)2) 成员函数GetArea()计算圆的面积 3) 构造函数Circle(float radius)进行初始化 析构函数 4)在主函数中创建一个Circle类的对象进行测试(输入一个数值,作为Circle类对象的半径,调用该对象的GetArea()求以该数值为半径的圆的面积)。 程序如下: #include using
11、namespace std; class circle public: circle() radius=0; circle(float r) if(r0) radius=r; else radius=0; float getarea() return 3.14*3.14*radius; circle() private: float radius; ; void main() coutr; circle c(r); cout圆的面积为:nc.getarea()endl; 运行结果: 2. 声明一个tree类,有 1) 数据成员ages(树龄) 2) 成员函数grow(int years)对ag
12、es加上years 3) 成员函数age()显示对象的数据成员ages的值 4) 构造函数tree(int n=0)进行初始化 5) 析构函数 在主函数中创建一个tree类的对象进行测试(创建一个树龄为18的对象,调用age()显示树龄,之后调用grow(4),生长4年,再显示树龄)。 程序如下: #include using namespace std; class tree public: tree(int n=0) ages=n; int age() return ages; void grow(int n) ages+=n; tree() private: int ages; ; in
13、t main() tree a(18); cout此时树的年龄为:na.age()endl; coutn1; a.grow(n1); cout生长n1年后树的年龄为:na.age()endl; return 0; 运行结果: 3. 人员信息管理系统: 以一个小型公司的人员管理为例,说明类及成员函数的设计。提示: 1) 类的设计: 某小型公司,需要存储雇员的编号、级别、月薪,并显示全部信息。根据这些需求,设计一个类employee,在该类中,包括的数据成员有: 编号(int individualEmpNo) 级别(int grade) 月薪(float accumPay) 成员函数有: 设置编号
14、(void setEmpNo(int steps):编号顺序加1(利用静态变量实现) 提取编号(void getEmpNo) 晋升级别(void promote(int increment):提升的级别由参数指定 提取级别(int getGrade) 设置月薪(void SetAccumPay(float pa): 提取月薪(float GetAccumPay) 构造函数(用于设置数据成员编号、级别和月薪初值) 析构函数2) 整个程序分为两个独立的文档:employee.h(包含类的定义和类的实现)和employee.cpp(主函数文件) 3) 在主函数main()中创建employee类的两
15、个对象,对它们设计编号、级别和月薪,并输出每个雇员的基本信息。 程序如下: #include using namespace std; class employee public: employee() individualEmpNo+; grade=0; accumPay=0; employee(int a,int b,float c) individualEmpNo=a; grade=b; accumPay=c; static int getEmpNo() return individualEmpNo; static void setEmpNo(int steps) individualE
16、mpNo=steps; void promote(int increment) grade+=increment; int getgrade() return grade; void SetAccumPay(float pa) accumPay=pa; float GetAccumPay() return accumPay; employee() private: static int individualEmpNo; int grade; float accumPay; ; int employee:individualEmpNo=0; void main() int a,b; float
17、c; cout请输入第一个雇员的编号,级别,月薪abc; employee e1(a,b,c); /* e1.setEmpNo(a); e1.promote(b); e1.SetAccumPay(c);*/ cout请输入第二个雇员的级别,月薪bc; employee e2; e2.promote(b); e2.SetAccumPay(c); cout第一个雇员的信息为:n编号:e1.getEmpNo()endl级别:e1. getgrade()endl月薪:e1.GetAccumPay()endl; cout第二个雇员的信息为:n编号:e2.getEmpNo()endl级别:e2. getg
18、rade()endl月薪:e2.GetAccumPay()endl; 运行结果: 4.设计一个类,用来表示直角坐标系中的任意一条线段,成员函数包括输出线段两个端点的坐标和求该线段的长度,并在main函数中使用这个类。 程序如下: #include #include using namespace std; class line public: line() x1=0; y1=0; x2=0; y2=0; line(int a,int b,int c,int d) x1=a; y1=b; x2=c; y2=d; int getx1() return x1; int gety1() return y1; int getx2() return x2; int gety2() return y2; float lenth() return pow(x2-x1)*(x2-x1)+(y2-y1)*(y2-y1),1/2); private: int x1,x2,y1,y2; ; void main() int a,b,c,d; coutabcd; line l(a,b,c,d); coutl.lenth(); 运行结果:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1