




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象程序设计实验报告 实验一、开发环境应用入门1. 实验目的 了解Visual C+6.0的特点。 熟悉Visual C+6.0的开发环境。 学习用Visual C+6.0编写标准的C+控制台程序。 2. 实验步骤 1.启动Visual C+6.0开发环境 从“开始”菜单中选择“程序”| Microsoft Visual Studio 6.0 | Microsoft Visual C+6.0”,显示Visual C+6.0开发环境窗口。 2. 创建一个项目 (1) 单击File 菜单中的New选项,显示 New(新建)对话框。 (2) 单击 Project (项目)标签,在 Projects 选项卡中,选择Win32 Console Application (Win 32控制台应用程序 )。在 Location(位置)文本框中指定一个路径,在 Preject Name (项目名称)文本框中为项目输入一个名字 lab1_1,单击 OK按钮。 (3) 在弹出的Win32 Console Application-Step 1 of 1对话框中选择An Empty Project 单选项,然后单击Finish(完成)按钮。 (4) 最后在New Project Information 对话框中单击OK按钮,完成项目建立。3. 建立C+源程序文件 (1) 选择菜单命令Project |Add to Project | New, 弹出New对话框。 (2) 如图1-3所示,在New 对话框的Files选项卡中选择C+ Source File, 并填入文件名称lab 1_1,单击OK按钮,完成新建C+源程序文件。4. 编辑C+源程序文件内容 (1) 在文件编辑窗口中输入代码(如图1-4所示)。 (2) 选择菜单命令File|Save保存这个文件。5. 建立并运行可执行程序 (1) 选择菜单命令Build | Build lab 1_1.exe建立可执行程序。 如果你正确输入了源程序,此时便成功地生成了可执行程序lab 1_1.exe。 如果程序有语法错误,则屏幕下方的状态窗口中会显示错误信息,根据这些错误信息对源程序进行修改后,重新选择菜单命令 Build | Build lab 1_1.exe,建立可执行程序。 (2) 选择菜单命令Build | Build lab 1_1.exe运行程序,观察屏幕的显示内容。 6. 关闭工作空间 选择菜单命令File | Close Workspace关闭工作空间。3. 思考体会 (1)、C+程序运行过程,什么是项目,工作空间? (2)、C+与C程序运行有何不同?4.实验代码 #include void main(void) cout”Hello! n”; cout”Welcome to c+! n”; 实验二、C+简单程序设计1.实验目的 1学会编写简单的 C+程序。 2复习基本数据类型变量和常量的应用。 3复习运算符与表达式的应用。 4复习结构化程序设计基本控制结构的运用。 5复习自定义数据类型的应用。 6练习使用简单的输入输出。 7观察头文件的作用。 8 学会使用VC+6.0开发环境中的debug调试若能:单步执行、设置断点、观 察变量值。2. 实验原理方法1输入并运行教以下例题,即:用do-while语句编程,求自然数1-10之和。程序正确运行之后,去掉源程序中#include语句,重新编译,观察会有什么问题。 用do while 语句编程,求自然数110之和。 #include void main() int k(1),sum(0); do sum+=k; k+; while (k=10); cout”sum=”sumendl; 2将do-while语句用for语句代替,完成相同的功能。 3编程计算图形的面积。程序可计算圆形、长方形、正方形的面积,运行时先提示用户选择图形的类型,然后,对圆形要求用户输入半径值,对长方形要求用户输入长和宽的值,对正方形要求用户输入边长的值,计算出面积的值后将其显示出来。4使用的debug调试功能观察任务3程序运行中变量值的变化情况。 5定义一个表示时间的结构体,可以精确表示年、月、日、小时、分秒;提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来。3. 实验步骤 1. 建立一个控制台应用程序项目lab2_1,向其中添加一个C+源文件 lab2_1.cpp( 方法见实验1),输入例题的代码,检查一下确认没有输入错误,选择菜单命令Build | Build lab 1_1.exe编译源程序,再选择Build | Execute运行程序,观察输出是否与教材中的答案一致。2. 另建一个项目 lab2_2,包含一个C+源程序lab2_2.cpp,将do-while语句用 for语句代替,完成与实验任务1相同的功能。 3. 建立项目lab2_3,计算图形的面积。圆形的面积计算公式为 S=PI*r*r,长方形的面积计算公式 S=a*b,正方形的面积计算公式为 S=a*a。程序中定义一个整形变量iType表示图形的类型,用cout 语句输出提示信息让用户选择图形的类型,用cin读入 iType的值,然后,使用switch语句判断图形的类型,分别提示用户输入需要的参数值,计算出面积的值后用 cout语句显示出来。最后,编译运行程序。5.参考程序: /lab2_3,cpp #include Const float PI=3.1416 void main ( ) int iType; float radius, a,b,area; coutiType; switch (iType) case 1: coutradius; area=PI*radius*radius; cout” 面积为:”areaendl; break; case2: couta; cout” 矩形的宽为:”; areab; area=a*b; cout” 面积为:”areaendl; break; case 3: couta; area=a*a; cout” 面积为:”areaendl; break; default: cout” 不是合法的输入值!”2;fib(1)=fib(2)=1;使用if语句判断函数的出口,在程序中用cout语句输出提示信息。程序名:lab3_5.cpp。4、参考代码/lab3_1.cpp#include using namespace std;float Convert(float);int main() float TempFer; float TempCel; cout TempFer; TempCel = Convert(TempFer); cout nHeres the temperature in Celsius: ; cout TempCel endl; return 0;float Convert(float TempFer) float TempCel; TempCel = (TempFer - 32) * 5) / 9; return TempCel;/lab3_2.cpp#include using namespace std;int max1(int x, int y)return (xy?x:y);int max1(int x, int y, int z)int temp1=max1(x,y);return (yz?y:z);double max1(double x, double y)return (xy?x:y);double max1(double x, double y, double z)double temp1=max1(x,y);return (yz?y:z);void main()int x1, x2;double d1, d2;x1 = max1(5,6);x2 = max1(2,3,4);d1 = max1(2.1, 5.6);d2 = max1(12.3, 3.4, 7.8);cout x1= x1 endl;cout x2= x2 endl;cout d1= d1 endl;cout d2= d2 endl;/lab3_4#include #include using namespace std;void main()int x, y;cout x;cout y;cout x 的 y 次幂为: pow(x,y) endl;实验四、类与对象1、实验目的及要求1、掌握类的概念、类的定义格式、类与结构的关系、类的成员属性和类的封装性;2、理解并掌握类的成员的访问控制的含义,公有、私有和保护成员的区别以及具有不同访问属性的成员的访问方式;3、掌握对象成员的引用方法;4、学习使用VC6.0的Debug调试功能,观察程序流程,跟踪观察对象成员的引用、成员函数的执行顺序2、实验原理1定义一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。其中,rank为枚举类型CPURank,定义为enum CPURankPl=1,P2,P3,P4,P5,P6,P7,frequency为单位是MHz的整型数,voltage为浮点型的电压值。观察构造函数和析构函数的调用顺序。3、实验内容与步骤 (1)首先定义枚举类型CPU_Rank,例如enum CPU_RankP1:1,P2,P3,P4,P5,P6,P7,再定义CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等私有数据成员,定义成员函数run、stop,用来输出提示信息,在构造函数和析构函数中也可以输出提示信息。在主程序中定义一个CPU的对象,调用其成员函数,观察类对象的构造与析构顺序,以及成员函数的调用。程序名:lab4_1cpp.(2)使用debug调试功能观察程序lab4_1cpp的运行流程,跟踪观察对象成员的引用、成员函数的执行顺序。参考程序如下: 4、参考程序/lab4_1cpp #include using namespace std;enum CPU_RankP1=1,P2,P3,P4,P5,P6,P7;/枚举类型class CPU private:CPU_Rank rank;int frequency;double voltage;public:/*CPU(CPU_Rank r,int f,double v)rank=r; frequency=f; voltage=v;cout构造了一个CPU!endl;*/ / CPU() cout析构了一个CPU!endl;CPU_Rank GetRank( )const return rank;int GetFrequency( ) const return frequency;float GetVoltage( )const return voltage; void SetRank(CPU_Rank r) rank=r; void SetFrequency(int f) frequency=f; void SetVoltage(float v) voltage=v; void Run() coutCPU开始运行!endl; void Stop() coutCPU停止运行!endl; ;int main()CPU a;/CPU a(P6,300,2.8);a.SetRank(P6);a.SetFrequency(300);a.SetVoltage(2.8l);coutRank:a.GetRank( )endl;coutFrequency:a.GetFrequency()endl;coutVoltage:a.GetVoltage( )endl;a.Run(); a.Stop(); return 0; 实验五、C+ +程序的结构1、实验目的:1.观察程序中变量的作用域、生存期和可见性2.学习类的静态成员的使用3.学习多文件结构再C+程序中的应用2、实验方法:1观察变量x、y的值2.实现客户机(CLIENT)类。定义字符型静态变量ServerName,保存服务器名称;整形静态数据成员ClientNum,记录已定义的客户数量;定义静态函数ChangServerName()改变服务器名称,在头文件client.h中定义类,在client.cpp中实现,在test.cpp中测试这个类,观察相应的成员变量的变化情况。3、实验步骤:1.运行lab5_1.cpp观察程序输出。全局变量的作用域是文件作用域,在整个程序运行期间有效,但如果在局部定义了同名变量,则在局部模块中,可见的是局部变量,全局变量不可见;而局部变量的生存期只限于相应的程序模块,局部变量x、y就不再存在,此时同名全局变量重新可见。2.新建一个空的项目lab4_2,添加头文件client.h,在其中定义CLIENT类,再添加源程序文件client.cpp,在其中实现client类,再添加test.cpp,在其中添加main() 函数,测试CLIENT类,观察相应成员的变化。4、参考程序:1.#include using namespace std;void fn1(); int x = 1, y = 2; void main()cout Begin. endl; cout x = x endl; cout y = y endl;cout Evaluate x and y in main(). endl;int x = 10, y = 20; cout x = x endl; cout y = y endl;cout Step into fn1(). endl; fn1(); cout Back in main endl; cout x = x endl; cout y = y endl; return 0;void fn1() int y = 200; cout x = x endl; cout y = y endl;2. /client.h#include #include using namespace std;class CLIENTprivate: static char ServerName; static int ClientNum;public: CLIENT(); CLIENT(); static int GetClientNum(); static void ChangServerName(char name); static char GetServerName();/client.cpp#include client.hCLIENT:CLIENT()ClientNum+ ; CLIENT:CLIENT() ClientNum- ; int CLIENT:GetClientNum() return ClientNum; void CLIENT:ChangServerName(char name) ServerName=name; char CLIENT:GetServerName() return ServerName; /test.cpp#include client.hint CLIENT:ClientNum = 0;char CLIENT:ServerName= N;int main()CLIENT a;CLIENT b;cout 服务器名称为: CLIENT:GetServerName() endl;CLIENT:ChangServerName(A);cout 客户机数量为: CLIENT:GetClientNum() endl;cout 服务器名称为: CLIENT:GetServerName() endl; 实验结果:1. Begin. x=1 y=2 Evaluate x and y in main(). x=10 y=20 Step into fn1(). x=1 y=200 Back in main x=10 y=202. 服务器名称为:N 客户机数量为:2 服务器名称为:A实验六、数组、指针与字符串1、实验目的(1) 学习使用数组数据对象;(2) 学习标准C+库的使用。(3) 学习字符串数据的组织和处理;(4) 掌握指针的使用方法;(5) 练习通过Debug观察指针的内容及其所指的对象的内容;(6) 联系通过动态内存分配实现动态数组,并体会指针在其中的作用;2、实验方法1、分别使用字符数组和标准C+库练习处理字符串的方法。编写并测试3X3矩阵转置函数,使用数组保存3X3矩阵; 2、使用动态内存分配生成动态数组来重新完成第(1)题,使用指针视线函数的功能; 3、编程实现两字符串的连接。要求使用字符数组保存字符串,不要使用系统函数; 4、使用string类声明字符串对象,重新实现第(3)题; 5、声明一个Employee类,其中包括姓名、街道地址、城市和邮编等属性,以及change_name()和display()等函数。display()显示姓名、街道地址、城市和邮编等属性,change_name()改变对象的姓名属性,实现并测试这个类。3、实验步骤 1、编写矩阵转置函数,输入参数为3X3的整型数组,使用循环语句实现矩阵元素的行列对调,注意在循环语句中究竟需要对哪些元素进行操作,编写main()函数实现输入、输出。2、改写矩阵转置函数,参数为整型指针,使用指针对数组元素进行操作,在main()函数中使用new操作符分配内存生成动态数组。通过debug观察指针的内容及其所指的对象中的内容。3、编程实现两字符串的连接。生命字符数组保存字符串,在程序中提示用户输入两个字符串,实现两个字符串的连接,最后用cout语句显示输出。4、使用string类声明字符串对象,编程实现两个字符串的连接,在string类中已重载了运算符“+=”实现字符串的连接,可以使用这个功能。5、在employee.h文件中声明Employee类。Employee类具有姓名、街道地址、城市和邮编等私有数据成员,都可以用字符型数组来表示,在成员函数中,构造函数用来初始化所有成员数组,对字符数组的赋值可以使用字符串拷贝函数strcpy(char*, char*name);display()中使用cout显示姓名、街道地址、城市和邮编等属性,change_name()改变类中表示姓名属性的字符数组类型的数据成员。在主程序中声明这个类的对象并对其进行操作。4、参考程序(1)lab6_1.cpp#includeusing namespace std;void move(int a33)int i,j,temp;for(i=0;i3;i+)for(j=0;j3;j+)temp=aij;aij=aji;aji=temp;int main()int i,j;int a33;for(i=0;i3;i+)for(j=0;jaij;cout输入的矩阵为:endl;for(i=0;i3;i+)for(j=0;j3;j+)coutaij;cout ;coutendl;move(a);cout转置后的矩阵:endl;for(i=0;i3;i+)for(j=0;j3;j+)coutaij;cout ;coutendl;return 0;(2)lab6_2.cpp#includeusing namespace std;void move(int *a,int n)int i,j,temp;for(i=0;i3;i+)for(j=0;j3;j+)temp=*(a+i*n+j);*(a+i*n+j)=*(a+j*n+i);*(a+j*n+i)=temp;int main()int i,j,n;int *p;coutn;p=new int(n*n);cout输入矩阵的元素:; for(i=0;in;i+)for(j=0;jpi*n+j;cout输入的矩阵为:endl;for(i=0;in;i+)for(j=0;jn;j+)coutpi*n+j ;coutendl;move(p,n);cout转置后的矩阵:endl;for(i=0;in;i+)for(j=0;jn;j+)coutpi*n+j ;coutendl;return 0; (3)lab6_3.cpp#includeusing namespace std;void main()int i=0,j=0;char s140,s220;couts1;couts2;while(s1i)i+;while(s2j)s1i+=s2j+;s1i=0;cout连接后的字符串为:s1endl;(4)lab6_4.cpp#include#includeusing namespace std;int main()string s1,s2;couts1;couts2;s1+=s2;cout连接后的字符串为:s1endl;return 0;(5)lab6_5.cpp#include#includeusing namespace std;class Employeepublic:Employee(char *n,char *str,char *ct,char *z);void display();void change_name(char *n);private:char name30;char street30;char city18;char zip6;Employee:Employee(char *n,char *str,char *ct,char *z)strcpy(name,n);strcpy(street,str);strcpy(city,ct);strcpy(zip,z);void Employee:change_name(char *n)strcpy(name,n);void Employee:display()coutnametstreett;coutcitytzip;int main()Employee e1(小柳,北-803,重庆,400067);e1.display();coutendl;e1.change_name(蔡梦梦);e1.display();coutendl;e1.change_name(蒋宇聪);e1.display();coutendl;return 0;实验七继承与派生1、实验目的1学习声明和使用类的继承关系,声明派生类。2熟悉不同继承方式下对基类成员的访问控制。3学习利用虚基类解决二义性问题。2、实验方法1声明一个基类Animal,私有整型成员变量age,构造其派生类dog,在其成员函数SetAge(intn)中直接给age赋值2.定义一个基类BaseClass,有整型成员变量Number,构造其派生类DerivedClass,3.定义一个车(vehicle)基类,具有MaxSpeed、Weight等成员变量,Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类。自行车(bicycle)类有高度(Height)等属性,汽车(motorcar)类有座位数(SeatNum)等属性。从bicycle和motorcar派生出摩托车(motorcycle)类,在继承过程中,注意把vehicle设置为虚基类。观察构造函数和析构函数的执行情况。3、实验步骤1.编写程序定义基类Animal,成员变量age定义为私有的。构造派生类dog,在其成员函数SetAge(int n)中直接对age赋值时,会出现类似以下的错误提示:error C2248:age:cannot access private member declared in classAnimalerror C2248:age:cannot access private member declared in classAnimal把age改为公有成员变量后重新编译就可以了。2. 编写程序定义一个基类BaseClass,构造其派生类DerivedClass,在构造函数和析构函数中用cout输出提示信息,观察构造函数和析构函数的执行情况。3. 编写程序定义一个车(vehicle)基类,由此派生出自行车(bicycle)类、汽车(motorcar)类,注意把vehicle派生为虚基类。再从bicycle和motorcar派生出摩托车(motorcycle)类,在main()函数中测试这个类4、参考程序lab7-1.cpp#include class Animal/protected:int age;public: Animal(int a) age=a; cout我是基类构造函数,我创建基类对象age=ageendl;Animal()cout我是基类析构函数,我释放基类对象age=ageendl;int getage() constreturn age;void setage(int a)age=a;class Dog:public Animal int color;public: Dog(int a=10,int c=3):Animal(a),color(c) /setage(a); cout我是子类构造函数,我创建子类对象color=color age=getage()endl;Dog()cout我是子类析构函数,我释放子类对象color=colorendl;void main()Dog a;lab7-2.cpp #includeusing namespace std;class BaseClassprotected:int number;public:BaseClass()number=1;coutnumber 基类构造函数endl;BaseClass()number=4;coutnumber 基类析构函数endl;class DerivedClass:public BaseClasspublic:DerivedClass()number=2;coutnumber 子类构造函数endl;DerivedClass()number=3;coutnumber 子类析构函数endl;void main()cout执行情况:endl;DerivedClass a;lab7-3.cpp #includeusing namespace std;class Vehicleint MaxSpeed,Weight;public:Vehicle()coutThe Weight is 5000kg!endl;inline run()coutThe MaxSpeed is 100km/h!endl;inline stop()coutstoped!endl;class Bicycle:public Vehiclepublic:inline Height()coutThe Height is 2m!endl;class Motorcar:public Vehiclepublic:inline SeatNum()coutThe number of seat is 7!endl;class Motorcycl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 仓储物流信息化管理与运输服务合同
- 跨国公司境内股权转让及税务筹划协议
- 生态柴油购销合同范本与规范
- 成都租赁合同(含租客租后押金退还)
- 民宿民宿风格改造装修合同
- 互联网保险保本投资协议
- 北京二手房交易税费减免咨询与代理合同
- 餐饮店拆伙协议及员工安置合同
- 时尚购物广场门面房租赁与品牌合作合同
- 肿瘤的影像学诊断
- 党群工作笔试题目及答案
- 广东省广州市天河区2023-2024学年八年级下学期期末历史试卷(含答案)
- 2025-2030年中国有机肥料行业市场投资分析及未来发展趋势预测研究报告
- AI技术赋能中小学教学模式创新与实践研究
- 山西焦煤集团招聘笔试题库2025
- 2025汾西矿业井下操作技能人员招聘300人(山西)笔试参考题库附带答案详解析
- 健康吃肉课件
- 《国家粮食和物资储备局垂直管理系统重大生产安全事故隐患判定标准(试行)》解读与培训
- 2025至2030年中国速冻豆角行业投资前景及策略咨询报告
- (2025)交管12123驾驶证学法减分题库含答案大全
- 学校食堂合同范本模板
评论
0/150
提交评论