实验报告.doc_第1页
实验报告.doc_第2页
实验报告.doc_第3页
实验报告.doc_第4页
实验报告.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

目目 录录 实验实验 1 实验名称实验名称 1 1 1 实验目的和要求 1 1 2 所占学时数 1 1 3 实验任务 实验指导书中涂红色的部分 1 1 3 1 任务一 1 1 3 1 任务二 1 实验实验 2 实验名称实验名称 3 2 1 实验目的和要求 3 2 2 所占学时数 3 2 3 实验任务 实验指导书中涂红色的部分 3 2 3 1 任务一 3 2 3 1 任务二 3 实验实验 3 实验名称实验名称 5 3 1 实验目的和要求 5 3 2 所占学时数 5 3 3 实验任务 实验指导书中涂红色的部分 5 3 3 1 任务一 5 3 3 1 任务二 5 实验实验 4 实验名称实验名称 7 4 1 实验目的和要求 7 4 2 所占学时数 7 4 3 实验任务 实验指导书中涂红色的部分 7 4 3 1 任务一 7 4 3 1 任务二 7 实验实验 5 实验名称实验名称 9 5 1 实验目的和要求 9 5 2 所占学时数 9 5 3 实验任务 实验指导书中涂红色的部分 9 5 3 1 任务一 9 5 3 1 任务二 9 实验实验 6 实验名称实验名称 11 6 1 实验目的和要求 11 6 2 所占学时数 11 6 3 实验任务 实验指导书中涂红色的部分 11 6 3 1 任务一 11 6 3 1 任务二 11 实验 1 实验名称 编程环境的熟悉及简单 C 程序的编制 1 1 实验目的和要求 1 熟悉 VC 2010 编程环境 编制简单 C 程序并运行 熟悉 C 的编辑 编译 连接 运行 断点调试等过程 2 掌握 C 数据类型 熟悉如何定义和使用常量和变量 以及对它们赋值的方法 3 学会使用 C 的有关算术运算符及表达式 特别是自加 和自减 运算符 的使用 4 分支和循环结构的使用 1 2 所占学时数 2 个实验课时 1 3 实验任务 注 实验任务中涂红色的部分注 实验任务中涂红色的部分 1 3 1 任务一任务一 1 题目名称 功能需求 运行时显示 Menu A dd D elete S ort Q uit Select one 提 示 用户输入 A 表示增加 D 表示删除 S 表示排序 Q 表示退出 输入为 A D S 时分 别提示 数据已经增加 删除 排序 输入为 Q 时程序结束 按照上述功能需求写两个程序 分别使用 if 分支语句和 switch 分支语句实现 程序 1 要求 使用 if else 语句进行判断 用 break continue 控制程序流程 程序 2 要求 使用 Switch 语句实现 2 构思过程 可用文字 流程图 UML 图等方式表达 提示用户输入相应的文字 用 if else 或 switch 语句进行判断并输出结果 3 程序源码 include using namespace std int main char a cout Menu A dd D elete S ort Q uit Select one cout a if a A cout 数据已经增加 endl if a D cout 数据已经删除 endl if a S cout 数据已经排序 endl if a Q return 0 return 0 include using namespace std int main char a cout Menu A dd D elete S ort Q uit Select one cout a switch a case A cout 数据已经增加 endl case D cout 数据已经删除 endl case S cout 数据已经排序 endl case Q return 0 return 0 4 运行结果 截图 5 心得体会 用不同的方式可能会实现相同的结果 要选取适合的方式去实现 1 3 1 任务二任务二 1 题目名称 找出 2 10000 之内的所有完全数 所谓完全数 即其各因子之和正好 等于本身的数 如 6 1 2 3 28 1 2 4 7 14 所以 6 28 都是完全数 2 构思过程 可用文字 流程图 UML 图等方式表达 可用两个嵌套的 for 语句来实现 3 程序源码 include using namespace std int main for int i 1 i 10000 i int sum 0 for int j 1 j i j if i j 0 sum j if sum i cout i i endl return 0 4 运行结果 截图 5 心得体会 灵活运用 for 语句会使问题简单 实验 2 实验名称 函数的应用 2 1 实验目的和要求 1 掌握函数声明 定义和调用的方法 2 掌握函数递归调用的方法 3 掌握重载函数的声明 定义和使用方法 4 理解函数参数传递中传值与引用的区别 2 2 所占学时数 2 个实验课时 2 3 实验任务 实验指导书中涂红色的部分 2 3 1 任务一任务一 1 题目名称 用递归方法编写函数 Fibonnacci 斐波那契 级数 Fn Fn 1 Fn 2 F1 F2 1 并求出第 26 项的值 2 构思过程 可用文字 流程图 UML 图等方式表达 用递归函数编写程序 在主程序中调用递归函数 让用户输入所求的级数 3 程序源码 include using namespace std int Fib int n int main int n cout n cout 第 n 项斐波那契的值为 Fib n endl return 0 int Fib int n int F if n 1 n 2 F 1 else F Fib n 1 Fib n 2 return F 4 运行结果 截图 5 心得体会 恰当的使用递归函数会让程序简单易懂易写 2 3 1 任务二任务二 1 题目名称 设计一函数 判断一整数是否为素数 并完成下列程序设计 编写求素数的函数 并用这个函数求 3 200 之间的所有素数 在 4 200 之间 验证歌德巴赫猜想 任何 一个充分大的偶数都可以表示为两个素数之 和 输出 4 2 2 6 3 3 200 3 197 注 素数又称质数 指在一个大于 1 的自然数中 除了 1 和此整数自身外 不能被其 他自然数 不包括 0 整除的数 2 构思过程 可用文字 流程图 UML 图等方式表达 编写两个函数 一个判断整数是否是素数 另一个调用上述函数验证歌德巴赫猜 想 3 程序源码 include using namespace std bool prime int a int func int n int main cout 3到200之间所有的素数为 for int i 3 i 200 i if prime i cout i cout endl cout 4到200之间的歌德巴赫猜想为 endl for int n 4 n 200 n n 2 func n return 0 bool prime int a bool prime true for int i 2 i a i if a i 0 prime false break return prime int func int n for int i 2 i n 2 i if prime i if prime n i cout n i n i return 0 4 运行结果 截图 5 心得体会 要恰当地使用函数 比如此程序用了 bool 类型的函数 让程序比较简单 遇到错 误时要耐心改正 实验 3 实验名称 类与对象 构造与析构函数 3 1 实验目的和要求 1 掌握类的定义和使用 2 掌握类的定义和对象的声明 3 掌握具有不同访问属性的成员的访问方式 4 深入体会构造函数 复制构造函数 析构函数的执行机制 5 使用的 VC 的 debug 调试功能观察程序流程 跟踪观察类的构造函数 析构函数 成员 函数的执行顺序 3 2 所占学时数 4 个实验课时 3 3 实验任务 实验指导书中涂红色的部分 3 3 1 任务一 1 题目名称 设计一个用于人事管理的 People 人员 类 考虑到通用性 这里只抽象出所有 类型 人员都具有的属性 number 编号 sex 性别 birthday 出生日期 id 身份 证号 等 其中 出生日期 定义为一个 日期 类内嵌子对象 用成员函数实现对人员信息 的录入和显示 要求包括 构造函数和析构函数 拷贝构造函数 内联成员函数 带缺省形参值的 成员 函数 聚集 2 构思过程 可用文字 流程图 UML 图等方式表达 定义一个 date 类和一个 people 类 根据要求编写相应的各种函数 3 程序源码 include using namespace std include class date private int year int month int day public date int Year int Month int Day year Year month Month day Day void show cout 出生年月为 year 年 month 月 day 日 class people private int number id string sex date birthday public people int Number string Sex int Id date Birthday number Number sex Sex id Id birthday Birthday void show void people show cout 编括号为a number endl cout 性别为 sex endl cout 身份证号为 id endl birthday show void main int n cout n cout endl for int i 1 i n i int nnum iid yyear mmonth dday string ssex cout 请输入人员信息 endl cout endl cout nnum cout endl cout ssex cout endl cout iid cout endl cout yyear mmonth dday cout endl cout 人员信息为 cout endl date d yyear mmonth dday people p nnum ssex iid d p show cout endl cout endl 4 运行结果 截图 5 心得体会 编写时要注意类的数据成员的访问方法和接口 代码重用可以提高工作效率 3 3 1 任务二 1 题目名称 使用 VS2010 或 StarUML 工具的画出书中例 4 9 中 SavingsAccount 的 UML 图 2 构思过程 可用文字 流程图 UML 图等方式表达 3 程序源码 4 运行结果 截图 实验 4 实验名称 数据共享与保护 4 1 实验目的和要求 1 观察程序运行中变量的作用域 生存期 2 学习类的静态成员的使用 3 理解类的友元函数 友元类 4 学习多文件结构在 C 程序中的使用 4 2 所占学时数 2 个实验课时 4 3 实验任务 实验指导书中涂红色的部分 4 3 1 任务一 1 题目名称 定义一个 Girl 类和一个 Boy 类 这两个类中都有表示姓名 年龄的私有成员变量 都要定义构造函数 析构函数 输出成员变量信息的公有成员函数 1 根据要求定义相应的类 2 将 Girl 类作为 Boy 类的友元类 在 Girl 类的成员函数 visitboy boy class Boy class Girl public Girl string Na int Ag set Na Ag 构造函数 Girl 析构函数 friend void visitboygirl Boy friend class Boy void visitboy Boy 第二个 void set string Name int Age name Name age Age void show private string name int age void Girl show cout 女生的姓名为 name endl cout 女生的年龄为 age endl class Boy public Boy string Na int Ag set Na Ag Boy friend void visitboygirl Boy friend class Girl void visitgirl Girl 第三个与第五个 void set string Name int Age name Name age Age void show private string name int age void Boy show cout 男生的姓名为 name endl cout 男生的年龄为a age endl void visitboygirl Boy cout girl s name g name girl s age g age endl int main Girl g 小兰 17 Boy b 柯南 17 g show b show g visitboy b 第二个 b visitgirl g 第三个与第五个 cout endl visitboygirl b g return 0 4 运行结果 截图 5 心得体会 这个实验不太复杂 明示了友元类是不可逆的 若 A 是 B 的友元类 那 B 不一定是 A 的友元类 还有 要注意前向引用声明 实验 5 实验名称 数组 指针与字符串 5 1 实验目的和要求 1 学习使用数 2 指的使用方法 体会运符 class Matrix public Matrix Matrix int Lines int Rows Matrix const Matrix void setMatrix void setLaR void showMatrix Matrix friend void plusMatrix const Matrix friend void subMatrix const Matrix private int lines int rows int p void Matrix setMatrix cout 请输入这个矩阵的元素 endl for int i 0 i lines i for int j 0 j rows j cout 请输入第 i 1 行 第 j 1 p i j void Matrix setLaR cout 请输入矩阵的行数和列 数 L R lines L rows R Matrix Matrix int Lines int Rows lines Lines rows Rows lines Lines rows Rows p new int lines for int i 0 i lines i p i new int rows setMatrix Matrix Matrix const Matrix rows m rows p new int lines for int i 0 i lines i p i new int rows for int i 0 i lines i for int j 0 j rows j p i j m p i j Matrix Matrix for int i 0 i lines i delete p i delete p void Matrix showMatrix for int i 0 i lines i for int j 0 j rows j cout p i j cout endl void plusMatrix const Matrix i a lines i for int j 0 j a rows j m p i j a p i j b p i j else cout 矩阵不相容 endl void subMatrix const Matrix i a lines i for int j 0 j a rows j m p i j a p i j b p i j else cout 矩阵不相容 showMatrix pA2 showMatrix pA3 showMatrix plusMatrix pA1 pA2 pA3 cout showMatrix delete pA1 delete pA2 delete pA3 return 0 4 运行结果 截图 5 心得体会 这个实验用了很长时间 比较复杂 让我更加了解了指针和数组的用法以及动态创 建对象的一些情况 虽然过程中出现了很多错误 但还是一一克服了 实验 6 实验名称 类的继承与派生 6 1 实验目的和要求 1 从深层次上理解继承与派生的关系 2 掌握不同继承方式下 从派生类 对象内部和外部对基类成员的访问控制权限 3 掌握单 继承和多继承的使用方法 尤其是派生类构造函数的声明方式 4 掌握继承与派生下构造函数与析构函数的调用顺序 5 理解 类型兼容 原则 6 学习利用虚基类解决二义性问题 6 2 所占学时数 4 个实验课时 6 3 实验任务 实验指导书中涂红色的部分 6 3 1 任务一 1 题目名称 编写 C 程序 以完成以下功能 具体的数据成员 函数成员 请自主定义 1 声明一个基类 Shape 形状 其中包含一个方法来计算面积 2 从 Shape 派生两个类 矩形类 Rectangle 和圆形类 Circle 3 从 Rectangle 类派生正方形类 Square 4 分别实现派生类构造函数 析构函数及其它功能的成员函数 5 创建各派生类的对象 观察构造函数 析构函数的调用次序 6 计算不同对象的面积 将 任务一 中 Shape 基类计算面积的方法定义为虚函数 比较与 形状 一 程 序的 差异 体验其优点 2 构思过程 可用文字 流程图 UML 图等方式表达 声明 shape 基类 包含成员函数 area 从 shape 派生 rectangle 类和 circle 类 再从 rectangle 类派生 square 类 每个类都有构造函数与析构函数 在构造函数与析构函 数中编写输出语句以观察它们的调用次序 3 程序源码 include using namespace std const double PI 3 14 class shape public shape cout shape构造函数 endl shape cout shape析构函数 endl virtual void area cout 0 endl rectangle子类 class rectangle public shape public rectangle rectangle int Len int Wid length Len width Wid cout rectangle构造函数 endl rectangle cout rectangle析构函数 endl void area cout length width endl private int length int width square子类 继承rectangle class square public rectangle public square int A a A cout square构造函数 endl square cout square析构函数 endl void area cout a a endl private int a circle子类 class circle public shape public circle int R r R cout circle构造函数 endl circle cout circle析构函数 endl void area cout r r PI area square s 3 p p area circle cir 2 p p area 4 运行结果 截图 5 心得体会 更加明白基类与子类的构造函数与析构函数的调用顺序 先调用基类的构造函数 再调用子类的构造函数 析构时顺序则相反 在没有将 shape 基类计算面积的方法 定义为虚函数时 各类面积均为 0 代码 void area cout 0 endl 这里没有现 实结果截图 将之定义为虚函数后 结果即为上面与代码相匹配的截图 所以要正 确使用虚函数 实验 7 实验名称 多态性 7 1 实验目的和要求 1 掌握将运算符重载为成员函数与非成员函数的区别 2 掌握静态编联与动态联编的概念 区别及实现方式 3 掌握利用虚函数实现动态多态的方法 4 掌握利用纯虚函数与抽象类实现动态多态的方法 7 2 所占学时数 两个学时 7 3 实验任务 实验指导书中涂红色的部分 7 3 1 任务一 1 题目名称 定义一个基类为哺乳动物类 mammal 其中有数据成员年龄 重量 品种 有成员 函数 move speak eat 等 以此表示动物的行为 由这个基类派生出狗 猫 马 猪等 哺乳动物 它们都有各自的行为 编程分别使各个动物表现出不同的行为 2 构思过程 可用文字 流程图 UML 图等方式表达 1 为实现动态联编 首先建立 Mammal 抽象类 以此抽象类作为基类 派生 dog cat horse pig 类 其中 Mammal 类数据员有 姓名 name 年龄 age 重 量 weight 成员函数 move eat speak 定义为纯虚函数 另一个成员函数 display 声明为虚函数 2 建立各个派生类 dog cat horse pig 然后建立构造函数为其初始化 再定义 函数 move speak eat 等 3 main 函数中建立指向 Mammal 的指针数组 并为各派生类初始化 把指针数 组分别指向各个 派生类 设计一个循环来显示派生类对象的信息 3 程序源码 include include using namespace std class mammal public virtual void eat 0 virtual void speak 0 virtual void move 0 virtual void display private string name int age double weight class dog public mammal public dog string Name int Age double Weight name Name age Age weight Weight void move cout Dog can run endl void eat cout Dog eat meat endl void speak cout Dog speak endl void display cout It s name name age age weight weight kg endl dog private string name int age double weight class cat public mammal public cat string Name int Age double Weight name Name age Age weight Weig

温馨提示

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

评论

0/150

提交评论