129759946783437500c++实验指导书(2011年修改版)_第1页
129759946783437500c++实验指导书(2011年修改版)_第2页
129759946783437500c++实验指导书(2011年修改版)_第3页
129759946783437500c++实验指导书(2011年修改版)_第4页
129759946783437500c++实验指导书(2011年修改版)_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

面向对象程序设计实验指导书 1 实验一 C+语言环境实验 【实验目的】 1. 熟悉 Visual C+的开发环境。 2. 初步掌握简单程序的上机操作步骤。 3学习编写简单的 C+程序,并掌握 C+程序的基本格式与规范。 【实验内容】 1、简易计算器:从键盘输入两个运算量和一个运算符( 、* 或 / ) ,按普通算式输出运算结果。 如:2+3=5 。程序如下: #include void main() float operand1, operand2, result ; char oper ; cout operand1 oper operand2 ; switch( oper ) case +: result = operand1 + operand2 ; break ; case -: result = operand1 - operand2 ; break ; case *: result = operand1 * operand2 ; break ; case /: result = operand1 / operand2 ; break ; default: cout test; strcpy(p.mName,test); /记录户名 coutp.mSN; coutp.mBalance; /往账户中存款,存款金额为 amount void deposit() /从账户中取款,取款金额为 amount int withdraw() /查询帐户当前余额 void getBalance() /主菜单 void menu(void) system(“cls“); /清屏 coutcho; while(cho5); switch(cho) case 1: getAcc(); ;break; case 2: deposit(); ;break; case 3: int r; r=withdraw(); if(r=0) cout void swap(int t=a; a=b; b=t; int main() int x,y; coutx; couty; swap(x,y); cout 6 /使用按值传递的方法将两变量值对换 void swapbyValue(int a,int b) int t; t=a; a=b; b=t; /使用按地址传递的方法将两变量值对换 void swapbyAddress(int *a,int *b) int t; t=*a; *a=*b; *b=t; /使用按引用传递的方法将两变量值对换 void swapbyQuote(int /这里访问与修改的是实际参数本身,而不是实际参数的一个副本 t=a; a=b; b=t; int main() int x,y; x=66; y=98; swapbyValue(x,y); cout int min(int a,int b,int c) int k; k=(axyz; m=min(x,y,z); coutxy; m=min(x,y); cout template T min(T a, T b) return(axy; coutx1y1; cout class Circle public: Circle(float radius) Radius=radius; coutradius; Circle obj(radius); cout class Circle public: Circle(float radius) Radius=radius; coutradius; Circle obj1(radius); Circle obj2(obj1); cout class ArrayElem int x; public: ArrayElem(int i)x=i; /带参数的构造函数 int getx()return x; ; int main() ArrayElem obs4 =-1,-2,-3,-4; /创建对象数组并初始化 for(int i=0;i class NumClass int num; public: void set_num(int val)num=val; void show_num()coutset_num(20);p-show_num(); /通过指针调用成员函数 return(0); (3)#include class NumClass int num; public: void set_num(int val)num=val; 面向对象程序设计实验指导书 11 void show_num()coutshow_num(); /通过指针显示数组元素 p+; p-show_num(); return(0); (4)#include class NumClass int num; public: void set_num(int val)num=val; void show_num()cout class Base private: int base_priv_dat; protected: int base_prot_dat; public: void base_show(); ; class Derived:public Base private: int derived_priv_dat; public: void derived_show(); ; void Base:base_show() base_priv_dat=1; /基类函数可以操纵私有和保护型基类数据 base_prot_dat=2; cout #include class Person public: Person(const char* s) /带参数的构造函数 name=new charstrlen(s)+1; strcpy(name,s); Person()delete name; /析构函数做清理工作 char *GetName()return name; protected: char *name; ; class Student:public Person char *major; public: Student(const char * s,const char *m):Person(s) /派生类构造函数 major=new charstrlen(m)+1;strcpy(major,m); Student()delete major; /派生类析构函数 char *GetMajor()return major; ; int main() Student stu(“WZQ“,“Electric automatization“); cout class Base protected: int a; public: Base()a=30; ; class B1:public Base public: B1()cout“B1:a:“aendl; ; class B2:public Base public: B2()cout“B2:a:“aendl; ; class Derived:public B2,public B1 14 public: Derived()cout“Derived:a:“aendl; ; int main() Derived d; return(0); 3编写一个基类 Shape,在此基础上派生出类 Triangle 和 Circle,二者都有计算对象面积的函数 GetArea( )和计算对象周长的函数 GetPerim() 。 4开发一个简单的大学人员管理程序,该程序可以管理大学的一些基本人员:学生(student) 、教 师(teacher) 、教授(professor) 。首先设计一个虚基类 person。通过该类保存人员的最基本信息:姓名 (name ) 、年龄(age)和性别( sex) 。然后使用该类派生出学生类 student 和教师类 teacher,在其中添加 各自的特性,如在 student 类中添加如下信息:专业(speciality) ,在 teacher 类中添加院系(department) 等。还有部分教师在工作的同时在职修读学位,因此同时具有教师和学生双重身份,所以由 student 类和 teacher 类再次派生出 stuTeacher 类。为每个类定义一个输出函数 print(),输出该类相关信息。 5简易银行账户系统,银行帐户类派生出储户类和信用卡类。 (选作) 【思考题】 1组合与继承的区别是什么? 2公有继承、保护继承和私有继承分别在什么情况下使用? 3如何理解“按派生顺序调用构造函数,并按相反的顺序调用析构函数”? 4什么是虚基类?有何作用? 面向对象程序设计实验指导书 15 R1=6 R2=8 R1=7 R2=9 R1=4 R2=5 图 3-11 电路图 实验六 综合程序设计实验 【实验目的】 本实验运用面向对象程序设计思想和方法,综合使用 C+语言的类、对象、继承、运算符重载、多 态性等理论知识,编写 C+程序。 【实验内容】 1用运算符重载设计有理分数类,实现+ 、-、*、/ 等操作。 提示: 创建一个有理分数类 Rational,有两个数据成员,一个构造函数,四个运算符重载函数,一个显示函 数和一个约简函数。其中数据成员有分子 numerator 和分母 denominator,构造函数可以避免分母为 0,对 不是约化型的分数进行约化。显示函数显示计算结果。约简函数对分数进行化简。 2某学校对教师每月工资的计算规定如下:固定工资+课时补贴。教授的固定工资为 5000 元,每个 课时补贴 50 元。副教授的固定工资为 3000 元,每个课时补贴 30 元。讲师的固定工资为 2000 元,每个 课时补贴 20 元。定义教师抽象类,派生不同职称的教师类,编写程序求若干个教师的月工资。 3. 编写一个程序,计算由 3 个并联的子电路组成的电路的总电阻。子电路由两个串联或并联的电阻 器组成(如图 3-11 ) 。首先创建一个纯虚类 Resistance,含有 CalcRes()纯虚函数,由 Resistance 派生出串 联类 SeriesRes 和并联类 ParallelRes,两个类都包含同名的 CalcRes()函数计算子电路的电阻值。输入电阻 值,输出总电阻值,所有子电路使用一个循环计算总电阻。 提示: 串联电阻方程为:Rtot=R1+R2 并联电阻的方程为:Rtot1/(1/R1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论