免费预览已结束,剩余13页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验1 认识Visual C+6.0开发环境实验目的l 了解和使用Visual C+ 6.0集成开发环境。l 熟悉Visual C+ 6.0集成开发环境的基本编辑命令及功能键,学会常规窗口操作,熟悉常用的菜单命令。l 学习完整的C+程序开发过程(编辑、编译、连接、调试、运行及查看结果)。l 理解简单的C+程序结构。实验学时两个学时。实验要求l 熟悉Windows 2000或XP操作系统的环境和基本操作。l 根据实验内容的相应描述和要求,自行设计并调试代码。l 认真填写实验报告。实验内容1.基础部分 (1)熟悉Visual C+ 6.0的开发环境。 (2)操作工具栏和项目工作区窗口。 (3)用应用程序向导创建一个控制台应用项目Ex_Hello。 (4)输入并执行一个新的C+程序Ex_Simple。2.进阶部分 (1)实现一个多行输出的程序,输出内容为:* * * * * * * * (2)编写一个九九乘法表(注意格式)。实验二 函数实验目的l 掌握函数声明、定义和使用的方法。l 掌握函数递归调用的方法。l 掌握重载函数及函数参数默认的使用方法。实验学时本次实验需要四个学时。实验要求l 在学完教材第5章内容后进行本次实验。l 基础部分实验必选,进阶部分实验(1)必选,其它任选。l 根据实验内容的相应描述和要求,自行设计并调试代码。l 认真填写实验报告。实验内容1.基础部分(1)程序Ex_AreaFunc求三角形的面积。已知三角形的三边a、b、c,则三角形的面积为 其中,s=(a+b+c)/2。需要说明的是,三角形的三边的边长由cin输入,需要判断这三边是否构成一个三角形。若是,则计算其面积并输出,否则输出“错误:不能构成三角形!”。(判断方法是:三角形的任意两边之和大于第三边,任意两边之差小于第三边。)编写一个完整的程序,其中需要两个函数,一个函数判断是否构成三角形,另一个函数计算三角形的面积。 (2)程序Ex_Power编程求下式值,其中n!用函数来实现,且设参数n的默认值为2: 1! + 2! + 3!+n! (3)程序Ex_NumToStr用递归法将一个整数n转换成字符串。如输入1234,应输出字符串“1234”。n的位数不确定,可以是任意位数的整数。2.进阶部分用递归方法求解母牛问题。若一头母牛,从出生起第四个年头开始每年生一头母牛,按此规律,第n年时有多少头母牛?要求:用递归函数求解;先测试递归条件,后递归调用;运行时n由键盘输入。实验三 类和对象1、实验目的(1)掌握声明类的方法,类和类的成员的的概念以及定义对象的方法。(2)初步掌握用类和对象编制基于对象的程序。(3)学习检查和调试基于对象的程序。2、实验内容(1)分别给出如下的3个文件:含类定义的头文件student.h,/student.h (这是头文件,在此文件中进行类的声明)class Student /类声明 public:void display( );/公用成员函数原型声明 private:int num;char name20;char sex; ;包含成员函数定义的源文件student.cpp/student.cpp/在此文件中进行函数的定义#include #include “student.h”/不要漏写此行,否则编译通不过void Student:display( )/在类外定义display类函数 cout“num:”numendl; cout“name:”nameendl; cout“sex:”sexendl;包含主函数的源文件main.cpp。为了组成一个完整的源程序,应当有包括主函数的源文件:/main.cpp主函数模块#include #include “student.h”/将类声明头文件包含进来int main( )Student stud;/定义对象 stud.display();/执行stud对象的display函数return 0;请完善该程序,在类中增加一个对数据成员赋初值的成员函数set_value。上机调试并运行。(2)需要求3个长方柱的体积,请编一个基于对象的程序。数据成员包括length(长)、width(宽)、height(高)。要求用成员函数实现以下功能:由键盘分别输入3个长方柱的长、宽、高;计算长方柱的体积;输出3个长方柱的体积。请编程序,上机调试并运行。学时数:2学时实验四 继承和派生实验目的l 学习根据现有类建立新类的方法。l 理解继承的含义,掌握派生类的定义方法和实现;l 理解公有继承下基类成员对派生类成员和派生类对象的可见性,能正确地访问继承层次中的各种类成员;l 理解保护成员在继承中的作用,能够在适当的时候选择使用保护成员以便派生类成员可以访问基类的部分非公开的成员;l 了解虚基类的用法。实验学时本次实验需要2个学时。实验要求l 基础部分实验必选,进阶部分实验(1)必选,其它任选。l 根据实验内容的相应描述和要求,自行设计并调试代码。l 认真填写实验报告。实验内容1.基础部分编写一个程序Ex_Student,以实现一个班级学生的学期成绩管理。个人信息类Cperson的数据成员有姓名、年龄、性别;课程类CCourse的数据成员有课程名、学分、成绩;学生类CSutudent从CPerson类派生,并增加数据成员学号、CCcourse对象成员数组(大小为8)、总成绩、总学分和平均成绩;班级类CClass类的数据成员有CStudent类对象数组(大小由构造函数决定)、班号、班级人数等。要求:(1)本班级类CClass中添加成员函数Seek,通过学号查找并输出学生的全部信息。(2)构造三个学生的数据,每个学生都有三门课程成绩。输入并显示这些数据。(3)根据类的需要添加适当的其他成员,编写完整的程序并测试。2.进阶部分对程序Ex_Student进行扩展,定义导师类CTutor,继承CPerson类,并增加数据成员职称;定义研究生类CGraduateStudent继承学生类,并且增加数据成员导师类对象,根据需要添加适当的其他成员,编写完整程序并测试。实验五 多态实验目的l 理解虚函数在类的继承层次中的作用,虚函数的引入对程序运行时的影响,能够对使用虚函数的简单程序写出程序结果。l 理解抽象类的作用和使用方法。l 理解重载运算符的作用,学会对典型的运算符进行重载。实验学时本次实验需要2个学时。实验要求l 根据实验内容的相应描述和要求,自行设计并调试代码。l 认真填写实验报告。实验内容1.基础部分(1)编写程序Ex_Shape:定义一个类CShape,包含两个虚函数Area(用来计算面积)和SetData(用来设计形状大小)。然后派生出矩形CRect类、圆CCircle类,分别求其面积。最后定义一个CArea类,计算这几个形状的面积之和,各形状的数据通过CArea类的构造函数或成员函数来设置。(2)编写程序Ex_String:重载字符串运算符=、+、分别用于字符串的赋值、拼接、比较运算,实现字符串直接操作。其中=和运算符重载函数为友元函数,而+运算符重载为成员函数。2.进阶部分(1)仿真农场哺乳动物类如下所示: # include class Mammalpublic: Mammal():itsAge(2), itsWeight(5) coutMammal constructorn; Mammal () coutMammal destructorn; int GetAge () const return itsAge; void SetAge (int age) itsAge = age; int GetWeight () const return itsWeight; void SetWeight (int weight) itsWeight = weight; void Move () const cout Mammal move one stepn; virtual void Speak () const void sleep () const cout shhh, Im sleeping.n;protected: int itsAge; int itsWeight;狗属哺乳动物,且它的属性有品种之分(在哺乳类的基础上增加品种资料成员),叫声区别于其它动物(Speak()实现为虚函数,输出”Woof!”),还会要尾巴(增加成员函数,输出”Tail wagging”),乞讨食物(增加成员函数,输出”begging for food”)。猫、马、猪也属于哺乳动物,其叫声分别为:”Meow!”, “Winnie!”, “Oink”。编程分别使各个动物表现为不一样的行为。要求: 狗的品种:enum BREEDYORKIE, CAIRN, DANDIE, SHETLAND, DORERMAN, LAB;分别用一个操作实现设置狗的品种,另一个操作实现读出狗的品种。 从基类Mammal类分别派生出各种动物,通过虚函数实现Mammal类动物对象指针被赋予不同的动物种类时,表现为不同的行为。 今有狗CAIRN:3岁,30kg;DORERMAN:4岁,28kg;LAB:6岁,40kg;猫:2岁,15kg;马:5岁,60kg;猪:2岁,45kg。 设置一个Mammal数组,设置一个屏幕菜单,选择不同的动物或不同的品种,则实现对应的动作,直到选择结束。 对应的动作中首先显示动物名称,然后年龄,重量,品种,叫声,以及其它特点。思考问题: 继承的资料成员为私有的或保护的有什么不同,继承的成员函数总是公有的或保护的,为什么?私有的不可以在子类之中不可见,而保护的可见。提供接口供使用类者使用。 如果上述程序的实现中,Speak函数不是虚函数,那么各种动物的叫声会怎样,为什么?都不会有叫声, 因为不是虚函数的话会表现出基类的Speak函数的性质 什么时候要用虚析构函数?当实体和本体不同时 面向对象程序设计中,继承机制使程序员可以在现有的类库代码基础上,稍加改造就能开发出准确性和可靠性都很高的应用程序代码来。熟悉现有的类,将现实世界中的事物分解并描述成跟现成类库相近的对象,试思考之。1,#include#includeusing namespace std;/*感觉用接口函数去访问数据成员很麻烦故本人都是用公有去修饰数据成员*/class Cpersonpublic:char name20;int age;char sex10;public:Cperson()Cperson(char *a,int g,char *s):age(g)strcpy(name,a);strcpy(sex,s);class CCoursepublic:char course20;double xuefen;double chengji;public:CCourse(char *a,double x,double c):xuefen(x),chengji(c)strcpy(course,a);CCourse();class CStudent:public Cpersonpublic:int xuehao;CCourse c8;double zxuefen;double zchengji;double avg;public:CStudent()CStudent(int x,const CCourse *L,const Cperson &p):xuehao(x),Cperson(p)for(int j=0;j3;j+)cj=Lj;void print();void tongji();void CStudent:tongji()zxuefen=0,zchengji=0;for(int i=0;i3;i+)zxuefen+=ci.xuefen;zchengji+=ci.chengji;avg=zchengji/3;void CStudent:print()cout姓名: nameendl;cout年龄: ageendl;cout性别: sexendl;cout学号: xuehaoendl;for(int i=0;i3;i+)cout课程: ci.course 学分: ci.xuefen 成绩: ci.chengjiendl;cout总学分: zxuefenendl;cout总成绩: zchengjiendl;cout平均分: avgendl;class CClassCStudent *a;char banhao20;int sumperson;public:static int count;public:CClass(int m,char *n):sumperson(m)a=new CStudentm;strcpy(banhao,n);void seek(int n);void addStudent(CStudent& s);void CClass:addStudent(CStudent& s)acount+=s;int CClass:count=0;void CClass:seek(int n)for(int i=0;isumperson;i+)if(ai.xuehao=n)ai.print();return ;cout没有这个人!endl;int main (void)int sum=0;char name20;int age;char sex10;CCourse course3;char *a=new char20;double xuefen,chengji;int xuehao;char banhao20;int n,num;coutnum;coutbanhao;int t=num;CClass c(num,banhao);while(t-)cout输入第+sum个学生个人信息n;coutname;coutage;coutsex;coutendl;coutxuehao;cout输入课程:n;Cperson p(name,age,sex);for(int i=0;i3;i+)couta;coutxuefen;coutchengji;CCourse c(a,xuefen,chengji);coursei=c;CStudent s(xuehao,course,p);s.tongji();c.addStudent(s);coutendl;cout输入要查找学生的学号: *输入回车退出*n;getchar();while(1)n=getchar();if(n=10)return 0;c.seek(n-48);return 0;2,#includeusing namespace std;class CShapepublic:virtual double Area()return 0;virtual void SetDate();class CRect:public CShapedouble x1,y1;public:double Area();void SetDate(int a,int b);CRect(int a,int b):x1(a),y1(b);double CRect:Area()return x1*y1;void CRect:SetDate(int a,int b)x1=a;y1=b;class CCircle:public CShapestatic double PI;double r;public:double Area();void SetDate(int a);CCircle(int c):r(c);double CCircle:PI=3.14159;double CCircle:Area()return PI*r*r;void CCircle:SetDate(int a)r=a;class CArea:public CRect,public CCirclepublic:double Area()return CRect:Area()+CCircle:Area();CArea(CRect &a,CCircle &c):CRect(a),CCircle(c);int main (void)double a,b,c;cinabc;CArea x(CRect(a,b),CCircle(c);coutx.Area()endl;return 0;#include#include using namespace std;class String public:string s;public:String(string &b)s=b;String operator+(String &a)s+=a.s;return *this;String& operator=(String& a)s=a.s;return *this;friend bool operator(String& a,String& b);bool operator(String& a,String& b)if(a.sb.s)return 1;return 0;int main (void)couts1s2;String s(s1);String str(s2);cout(s+str).sendl;cout(s=str).sendl;return 0;#include#include#includeusing namespace std;enum BREEDYORKIE, CAIRN, DANDIE, SHETLAND, DORERMAN, LAB;class Mammalpublic:Mammal(int x,int y):itsAge(x), itsWeight(y)Mammal()Mammal () int GetAge () const return itsAge;void SetAge (int age) itsAge = age;int GetWeight () const return itsWeight; void SetWeight (int weight) itsWeight = weight;void Move () const cout Mammal move one stepn;virtual void Speak () const void sleep () const cout shhh, Im sleeping.n;virtual void display()protected:int itsAge;int itsWeight;class Dog:public MammalBREED pinzhong;public:Dog(Mammal &a,BREED b):Mammal(a),pinzhong(b)void Speak() const coutWoof!endl;void Action1() const coutTail wagging.endl;void Action2() const coutbegging for food.endl;void display()string s6=YORKIE, CAIRN, DANDIE, SHETLAND, DORERMAN, LAB;cout狗spinzhong:GetAge()岁,GetWeight()kg,;cout叫声:;Speak();cout特性一:;Action1();cout特性二:;Action2();class Cat:public Mammalpublic:Cat(Mammal& a):Mammal(a)void Speak() const coutMeow!endl;void display()cout猫GetAge()岁,GetWeight()kg,;cout叫声:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 金属文物购买合同范本
- 中频炉维修合同范本
- 2025内蒙古包头九原区教育系统中小学教师校园招聘45人笔试考试备考题库及答案解析
- 山东绿色能源公司、山东发展新能源公司公开招聘(13人)考试笔试备考试题及答案解析
- 机油委托采购合同范本
- 车辆运输砂石合同范本
- 二手车协议合同范本
- 野外帐篷经营合同范本
- 水稻种子采购合同范本
- 2025福建泉州市丰泽区城东街道社区卫生服务中心编外人员(康复医生、精神科医生)招聘2人考试笔试参考题库附答案解析
- 2025医学细胞生物学案例解析
- 2025-2030年中国酒吧行业资本规划与股权融资战略制定与实施研究报告
- 2024-2025学年广东省广州市部分学校高一(上)期中数学试卷(含答案)
- 糖尿病与睡眠障碍
- 农村土地使用权转让协议书
- 中班社会活动求救电话
- 部编九年级上册语文第一单元教材知识点考点梳理 (共30张)+学案+验收卷(含答案)
- DB11T 1077-2020 建筑垃圾运输车辆标识、监控和密闭技术要求
- DB34∕T 2727-2016 厂拌沥青混凝土热风式再生工艺规程
- MAXHUB会议平板操作说明书
- 2024年军考英语真题历年军考真题系列
评论
0/150
提交评论