C++程序设计实验指2013导

更新时间:2024-03-25 08:39:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C++

程序设计实验指导

2013

目录

实验0 认识Visual C++6.0开发环境 .......................................................... 错误!未定义书签。 实验1 数据类型与输入输出 ........................................................................ 错误!未定义书签。 实验2 分支语句 ............................................................................................ 错误!未定义书签。 实验3 循环语句 ............................................................................................ 错误!未定义书签。 实验4 函数和程序结构 ................................................................................ 错误!未定义书签。 实验5 数组 .................................................................................................... 错误!未定义书签。 实验6 指针和引用 ........................................................................................ 错误!未定义书签。 实验7 类和对象 ............................................................................................ 错误!未定义书签。 实验8 继承和派生 ........................................................................................ 错误!未定义书签。 实验9 多态 .................................................................................................... 错误!未定义书签。 实验10 输入/输出流..................................................................................... 错误!未定义书签。

实验0 认识Visual C++6.0开发环境

实验目的

? 了解和使用Visual C++ 6.0集成开发环境。

? 熟悉Visual C++ 6.0集成开发环境的基本编辑命令及功能键,学会常规

窗口操作,熟悉常用的菜单命令。

? 学习完整的C++程序开发过程(编辑、编译、连接、调试、运行及查看

结果)。

? 理解简单的C++程序结构。

实验学时

本次实验作为练习之用不单独安排学时。

实验要求

? 在学完教材第1章内容后进行本次实验。

? 熟悉Windows 2000或XP操作系统的环境和基本操作。 ? 基础部分实验必选,进阶部分实验任选。

? 根据实验内容的相应描述和要求,自行设计并调试代码。

实验内容 1.基础部分

(1)熟悉Visual C++ 6.0的开发环境。 (2)操作工具栏和项目工作区窗口。

(3)用应用程序向导创建一个控制台应用项目Ex_Hello。 (4)输入并执行一个新的C++程序Ex_Simple。

2.进阶部分

(1)编写一个C++程序:输入圆的半径,输出其周长。 (2)实现一个多行输出的程序,输出内容为: * *** ***** *******

1

实验1 数据类型与输入输出

实验目的

? 了解基本数据类型的字节宽度和范围表示。 ? 掌握表达式中各种运算符的功能和特点。 ? 理解表达式和语句的概念。 ? 掌握基本的输入输出方法。 ? 学习过程化程序设计的方法。

? 培养编写程序的艺术,明确程序可读性是程序质量的重要标准。 ? 初步学习调试方法。

实验学时

本次实验需要两个学时。

实验要求

? 在学完教材第2章内容后进行本次实验。

? 基础部分实验必选,进阶部分实验(1)必选,其它任选。 ? 根据实验内容的相应描述和要求,自行设计并调试代码。

实验内容 1.基础部分

(1)测试基本数据类型char、int和short之间的相互转换。 (2)测试cin和cout的基本输入和输出用法。

(3)编写程序,求圆的周长、圆面积、圆球体积、圆柱体积。要求用const设定PI常量,定义适当数据类型的变量,并设圆、球半径和圆柱的高的初值分别为2.5、4,依次计算上述结果并输出,输出时要求有相应的文字提示,取小数点后两位数字。

(4)教材2.1;教材2.3;教材2.5

2.进阶部分

(1)用sizeof运算符编写一个测试程序,测试本机中各基本数据类型或字符串所占的字节数,并将其填写到下表中,然后分析其结果。 基本数据类型 所占字节数 基本数据类型或字符串 所占字节数 char float short double int long double long “\\nCh\\t\\v\\0ina” (2)已知a=b=,c=1000,编程求a*b/c,注意不要让中间结果溢出。

实验2 分支语句

实验目的

? 了理解程序的分支结构,能实现简单的条件判断程序。

? 进一步学习编程技巧,条件表达式代替条件语句,逻辑短路表达式。 ? 掌握switch多分支结构。

实验学时

本次实验需要两个学时。

实验要求

? 在学完教材第3章内容后进行本次实验。 ? 基础部分实验必选,进阶部分实验至少选择一个。 ? 根据实验内容的相应描述和要求,自行设计并调试代码。

实验内容 1.基础部分

(1)从键盘输入一个三位数,从左到右用a、b、c表示各位数字,记为abc,现要求依次输出从右到左的各位数字,即输出另一个三位数cba。例如,输入123,输出321。

(2)编写程序计算下列数学函数:

x-1 (x≥10) y = 2x+2 (1

(3)编写程序给,出一个百分制成绩,要求输出成绩等级A、B、C和D。其中,85分以上为A,75~84分为B,65~74分为C,65分以下为D。

(4)实现一个简单的菜单程序,运行时显示“Menu:A(dd) D(delete) S(ort) Q(uit),Select one:”提示用户输入,A表示增加,D表示删除,S表示排序,Q表示退出,输入为A,D,S时分别提示“数据已经增加、删除、排序。”输入Q时程序结束。

2.进阶部分

(1)编程求解一元二次方程ax2+bx+c=0的根。当a=0且b=0时,方程无根。当a=0且b?0时,方程有一个根。当a?0时,根据Δ=b2-4ac确定方程的根,若Δ>0,有两个不同的实根;当Δ=0,有两个相同的实根;当Δ<0,有两个不同的复根。输入参数a、b、c,输出相应的结果。

3

实验5 数组

实验目的

? 掌握数组和字符串的基本操作方法。 ? 掌握常用的几种遍历数组的方法。 ? 掌握常用的排序方法。

实验学时

本次实验需要三个学时。

实验要求

? 在学完教材第7章内容后进行本次实验。

? 基础部分实验必选,进阶部分实验(1)必选,其它任选。 ? 根据实验内容的相应描述和要求,自行设计并调试代码。

实验内容 1.基础实验

(1)一个包含10个元素的数组,已按升序排序,输入一个任意的整数,将该整数插入数组中,使数组元素仍保持升序排列。

要求编写一个通用的插入排序函数InsertSort,它带有三个参数,第一个参数是含有n个元素的数组,这n个元素已按升序排序;第二个参数给出当前数组中元素的个数;第三个参数是要插入的整数。该函数的功能是将一个整数插入到数组中,然后进行排序。另外还需要一个用于输出数组元素的函数Print,要求每一行输出5个元素。

(2)编程求下列两个矩阵的加法(结果矩阵的元素值是这两个矩阵相应元素之和)。要求:定义函数MatAdd用于求矩阵的加法,函数Show用于输出矩阵。

?12?1??578???210???2?24??????103????111?? ? (3)要求设计一个函数void strcpy(char a[],char b[]),将b中的字符串复制到数组a中(要求不使用C++的库函数strcpy())。编写完整的程序并测试。

2.进阶实验

(1)输入10个数到一维数组中,用冒泡排序法将其按从大到小的次序排序

后输出。

要求:分别用三个函数实现数据的输入、排序及输出。

1

(2)输入一个5*5的整数矩阵,求出两条对角线元素值之和。

(3)编写一个函数,统计一条英文句子中字母的个数,在主程序中实现输入、输出。

(4)编写程序实现下述功能:由17人围成一个圈,编号1~17,从第1号开始报数,报到3的倍数的人离开,一直数下去,直到最后只剩下1个人,求此人的编号。

实验6 指针和引用

实验目的

? 学习数组定义、初始化、赋值、使用的方法。 ? 学习给函数传递数组的方法。 ? 声明和操作指针和引用。

? 学习用指针和引用给函数传递参数。 ? 学习调试方法。

实验学时

本次实验需要四个学时。

实验要求

? 在学完教材第8,9章内容后进行本次实验。 ? 基础部分实验必选,进阶部分实验至少选择一个 ? 根据实验内容的相应描述和要求,自行设计并调试代码。

实验内容 1.基础部分

(1)编写程序实现两个字符串比较的自定义版(教材8.5)。

(2)编写程序实现字符串数组的排序。用指针数组作为函数mySort形参,实现字符串数组的排序。函数mySort还有一个形参n,用来指定字符串数组的大小。

(3)教材8.4

(4)编写程序实现数据交换。分别用指针和引用作为函数mySwap的形参,并通过重载分别实现int、double型变量值的交换。

(5)字符串交换

编写程序,交换两个不同长度的字符串,分别打印之。

要求:用函数调用的方式来实现。主函数中定义两个字符串,然后调用交换函数。教材9.3

2.进阶部分

(1)编写程序实现下述功能:由17人围成一个圈,编号1~17,从第1号开

1

始报数,报到3的倍数的人离开,一直数下去,直到最后只剩下1个人,求此人的编号。(要求用new和delete来分配、释放所需内存空间)。

(2)设计一个函数,形参是引用类型,要求输入三个整数,按从小到大排序后输出。编程完整的程序并测试。

实验7 类和对象

实验目的

? 学习定义类的方法。

? 学习构造函数、拷贝构造函数的定义使用方法。 ? 学习对象的使用方法。

? 领会面向对象程序设计的基本方法。

实验学时

本次实验需要两个学时。

实验要求

? 在学完教材第11、12章内容后进行本次实验。 ? 基础部分实验必选,进阶部分实验任选。

? 根据实验内容的相应描述和要求,自行设计并调试代码。

实验内容 1.基础部分

仔细阅读教材第十章最后的综合应用实例 Ex_Stack10(“设计栈类来存取学生成绩数组”),然后进行下列修改:

(1)将学生成绩类CStuScore分成两个类:CPerson和Cscore。其中,CPerson类的数据成员是姓名和学号;而CScore类的数据成员除了三门课成绩外,还有一个CPerson类对象stu。结合栈模型,设计这两个类,并确定对象stu的初始化。

(2)修改栈类CStack,当栈满时,执行full()操作:动态创建一个是原来栈空间两倍的空间,把原来栈中的内容放入新栈,再删除原栈空间。

(3)编写一个可运行的完整的程序Ex_Stack并测试。

2.进阶部分

定义日期类型Date。 要求:

(1)包含年月日数据成员;提供默认构造函数、带年月日参数的构造函数、

1

和拷贝构造函数;定义set成员函数可以设置日期;日期加一天操作;定义intput成员函数,输入日期信息,输入格式为“YYYY-MM-DD”;定义print成员函数输出对象的日期。

(2)编写一个可运行的完整程序,构造3个日期类型的对象,并输出相应的日期信息。

实验8 继承和派生

实验目的

? 学习根据现有类建立新类的方法。

? 理解继承的含义,掌握派生类的定义方法和实现;

? 理解公有继承下基类成员对派生类成员和派生类对象的可见性,能正确地访问继承层次中的各种类成员;

? 理解保护成员在继承中的作用,能够在适当的时候选择使用保护成员以便派生类成员可以访问基类的部分非公开的成员; ? 了解虚基类的用法。

实验学时

本次实验需要三个学时。

实验要求

? 在学完教材第16、17章内容后进行本次实验。

? 基础部分实验必选,进阶部分实验(1)必选,其它任选。 ? 根据实验内容的相应描述和要求,自行设计并调试代码。

实验内容 1.基础部分

编写一个程序Ex_Student,以实现一个班级学生的学期成绩管理。个人信息类Cperson的数据成员有姓名、年龄、性别;课程类CCourse的数据成员有课程名、学分、成绩;学生类CSutudent从CPerson类派生,并增加数据成员学号、CCcourse对象成员数组(大小为8)、总成绩、总学分和平均成绩;班级类CClass类的数据成员有CStudent类对象数组(大小由构造函数决定)、班号、班级人数等。

要求:

(1)本班级类CClass中添加成员函数Seek,通过学号查找并输出学生的全部信息。

(2)构造三个学生的数据,每个学生都有三门课程成绩。输入并显示这些数据。

1

(3)根据类的需要添加适当的其他成员,编写完整的程序并测试。

2.进阶部分

(1)对程序Ex_Student进行扩展,定义导师类CTutor,继承CPerson类,并增加数据成员职称;定义研究生类CGraduateStudent继承学生类,并且增加数据成员导师类对象,根据需要添加适当的其他成员,编写完整程序并测试。

(2)定义时间类型Time 要求:

继承Date类,并增加数据成员时分秒;增加构造函数、拷贝构造函数;增加设置时间的成员函数;编写完整的程序,创建时间对象,并输出时间。

(3)编写一个程序计算出球、圆柱和圆锥的体积。 要求:

①定义一个基类圆,至少含有一个数据成员半径;

②定义基类的派生类球、圆柱、圆锥,都含有求体积的成员函数和输出函数。 ③定义主函数,求球、圆柱、圆锥的体积。

实验9 多态

实验目的

? 理解虚函数在类的继承层次中的作用,虚函数的引入对程序运行时的影响,能够对使用虚函数的简单程序写出程序结果。 ? 理解抽象类的作用和使用方法。

? 理解重载运算符的作用,学会对典型的运算符进行重载。

实验学时

本次实验需要三个学时。

实验要求

? 基础部分实验必选,进阶部分实验任选。

? 根据实验内容的相应描述和要求,自行设计并调试代码。

实验内容 1.基础部分

(1)编写程序Ex_Shape:定义一个类CShape,包含两个虚函数Area(用来计算面积)和SetData(用来设计形状大小)。然后派生出矩形CRect类、圆CCircle类,分别求其面积。最后定义一个CArea类,计算这几个形状的面积之和,各形状的数据通过CArea类的构造函数或成员函数来设置。

(2)编写程序Ex_String:重载字符串运算符=、+、<分别用于字符串的赋值、拼接、比较运算,实现字符串直接操作。其中=和<运算符重载函数为友元函数,而+运算符重载为成员函数。

2.进阶部分

(1)仿真农场 哺乳动物类如下所示:

# include

class Mammal { public:

Mammal():itsAge(2), itsWeight(5)

1

{

cout<<\\\n\ }

~Mammal () {cout<<\\\n\ 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 << \ virtual void Speak () const {}

void sleep () const { cout << \protected: int itsAge; int itsWeight; };

狗属哺乳动物,且它的属性有品种之分(在哺乳类的基础上增加品种资料成员),叫声区别于其它动物(Speak()实现为虚函数,输出”Woof!”),还会要尾巴(增加成员函数,输出”Tail wagging…”),乞讨食物(增加成员函数,输出”begging for food…”)。

猫、马、猪也属于哺乳动物,其叫声分别为:”Meow!”, “Winnie!”, “Oink”。 编程分别使各个动物表现为不一样的行为。 要求: ① 狗的品种:

enum BREED{YORKIE, CAIRN, DANDIE, SHETLAND, DORERMAN,

LAB};分别用一个操作实现设置狗的品种,另一个操作实现读出狗的品种。

② 从基类Mammal类分别派生出各种动物,通过虚函数实现Mammal类动物对象指针被赋予不同的动物种类时,表现为不同的行为。

③ 今有狗CAIRN:3岁,30kg;DORERMAN:4岁,28kg;LAB:6岁,40kg;猫:2岁,15kg;马:5岁,60kg;猪:2岁,45kg。

④ 设置一个Mammal数组,设置一个屏幕菜单,选择不同的动物或不同的品种,则实现对应的动作,直到选择结束。

⑤ 对应的动作中首先显示动物名称,然后年龄,重量,品种,叫声,以及其它特点。

思考问题:

① 继承的资料成员为私有的或保护的有什么不同,继承的成员函数总是公有的或保护的,为什么?

② 如果上述程序的实现中,Speak函数不是虚函数,那么各种动物的叫声会怎样,为什么?

③ 什么时候要用虚析构函数?

④ 面向对象程序设计中,继承机制使程序员可以在现有的类库代码基础上,稍加改造就能开发出准确性和可靠性都很高的应用程序代码来。熟悉现有的类,将现实世界中的事物分解并描述成跟现成类库相近的对象,试思考之

3

实验10 输入/输出流

实验目的

? 学习I/O流类的操作。 ? 学习对I/O流进行格式控制。 ? 学习文件流的使用方法。

实验学时

本次实验需要两个学时。

实验要求

? 在学完教材第19章内容后进行本次实验。 ? 基础部分实验必选,进阶部分实验任选。

? 根据实验内容的相应描述和要求,自行设计并调试代码。

实验内容 1.基础部分

仔细阅读教材第14章最后的综合应用实例Ex_IO14(“通过文件操作来存放学生数据”),然后进行下列修改:

(1)将学生类CStrdent中的数据成员(姓名和学号)改用动态内存存储,修改程序代码。

(2)在学生类CStudent中,添加input成员函数,用于通过键盘输入来建立数据,并对课程数据进行流错误处理及范围检测。

(3)在“<<”和“>>”运算符重载函数中,直接使用提取和插入运算符来代替read和write成员函数。

(4)修改main函数中的代码并测试input成员函数。 (5)程序代码保存在文件Ex_Student.cpp中。

2.进阶部分

(1)将资料存入文件 要求:

将下列格式化的资料输出到文件xyz.txt中。 名字 年龄 编号 工资

1

张明丽 29 111-22-333 425.00 李楷楷 27 333-22-1111 350.00 钟静 41 11-11-0000 650.00

定义一个Employee类,包含名字、年龄、编号、工资数据成员,创建三个对象保存上述员工信息,并员工信息按照上述格式输出到文件xyz.txt中。

本文来源:https://www.bwwdw.com/article/nt38.html

Top