C++程序设计实验指导.docx
- 文档编号:17606302
- 上传时间:2023-07-27
- 格式:DOCX
- 页数:19
- 大小:38.83KB
C++程序设计实验指导.docx
《C++程序设计实验指导.docx》由会员分享,可在线阅读,更多相关《C++程序设计实验指导.docx(19页珍藏版)》请在冰点文库上搜索。
C++程序设计实验指导
C++
程序设计实验指导
2013
目录
实验0认识VisualC++6.0开发环境1
实验1数据类型与输入输出2
实验2分支语句3
实验3循环语句1
实验4函数和程序结构1
实验5数组1
实验6指针和引用1
实验7类和对象1
实验8继承和派生1
实验9多态1
实验10输入/输出流1
实验0认识VisualC++6.0开发环境
实验目的
●了解和使用VisualC++6.0集成开发环境。
●熟悉VisualC++6.0集成开发环境的基本编辑命令及功能键,学会常规窗口操作,熟悉常用的菜单命令。
●学习完整的C++程序开发过程(编辑、编译、连接、调试、运行及查看结果)。
●理解简单的C++程序结构。
实验学时
本次实验作为练习之用不单独安排学时。
实验要求
●在学完教材第1章内容后进行本次实验。
●熟悉Windows2000或XP操作系统的环境和基本操作。
●基础部分实验必选,进阶部分实验任选。
●根据实验内容的相应描述和要求,自行设计并调试代码。
实验内容
1.基础部分
(1)熟悉VisualC++6.0的开发环境。
(2)操作工具栏和项目工作区窗口。
(3)用应用程序向导创建一个控制台应用项目Ex_Hello。
(4)输入并执行一个新的C++程序Ex_Simple。
2.进阶部分
(1)编写一个C++程序:
输入圆的半径,输出其周长。
(2)实现一个多行输出的程序,输出内容为:
*
***
*****
*******
实验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
longdouble
long
“\nCh\t\v\0ina”
(2)已知a=b=100000,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 3x2+3x-1(x≤1) 当输入x后,输出y的值。 (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),Selectone: ”提示用户输入,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,输出相应的结果。 (2)编程实现输入一个整数,判断其能否被3,5,7整除,并输出以下信息之一: 能同时被3,5,7整除; 能被其中两数(要指出哪两个)整除; 能被其中一个数(要指出哪一个)整除; 不能被3,5,7任一个整除。 实验3循环语句 实验目的 ●掌握表达式中逻辑运算符、关系运算符的功能和特点。 ●掌握while和do-while循环的区别。 ●掌握for循环的语法结构并用其解决问题。 实验学时 本次实验需要四个学时。 实验要求 ●在学完教材第4章内容后进行本次实验。 ●基础部分实验必选,进阶部分实验(3)必选,其它任选。 ●根据实验内容的相应描述和要求,自行设计并调试代码。 实验内容 1.基础部分 (1)Fibonacci数列的前两个数是1和1,从第三个数开始,每个数等于前两个数之和。 编程计算并输出此数列的前30个数,且每行输出5个数。 (2)编写程序用泰勒级数求e的近似值,直到最后一项小于10-6为止。 (3)教材4.4,求出1000之内的所有完数。 (4)程序Ex_Graph打印下列菱形图案: * *** ***** ******* ***** *** * 2.进阶部分 (1)对运行中输入的x,计算级数: 1+x–x2/2! +x3/3! -…(-1)n+1*xn/n! 。 要求输出精度为10-8。 (2)编程求所有的3位素数,且该素数是对称的,所谓“对称”是指一个数倒过来还是该数。 例如,375不是对称数,因为倒过来变成了573。 (3)编程打印九九乘法表: 分别打印上三角(如下图所示),下三角,和全体。 *123456789 1123456789 24681012141618 39121518212427 4162024283236 52530354045 636424854 7495663 86472 981 实验4函数和程序结构 实验目的 ●掌握函数声明、定义和使用的方法。 ●掌握函数递归调用的方法。 ●掌握重载函数及函数参数默认的使用方法。 ●掌握自定义头文件的方法。 ●掌握建立和调试多文件结构程序的方法。 实验学时 本次实验需要五个学时。 实验要求 ●在学完教材第5,6章内容后进行本次实验。 ●基础部分实验必选,进阶部分实验 (1)必选,其它三个至少选一个。 ●根据实验内容的相应描述和要求,自行设计并调试代码。 实验内容 1.基础部分 (1)编写程序求三角形的面积。 已知三角形的三边a、b、c,则三角形的面积为 其中,s=(a+b+c)/2。 需要说明的是,三角形的三边的边长由cin输入,需要判断这三边是否构成一个三角形。 若是,则计算其面积并输出,否则输出“错误: 不能构成三角形! ”。 编写一个完整的程序,其中需要两个函数,一个函数判断是否构成三角形,另一个函数计算三角形的面积。 (2)设计一个函数,要求能将一个正整数n按反序输出,n的位数不定。 例 如,123输出321。 要求: 用非递归函数来实现,编写完整的程序并测试。 (3)用递归方法求解母牛问题。 若一头母牛,从出生起第四个年头开始每年 生一头母牛,按此规律,第n年时有多少头母牛? 要求: 用递归函数求解;先测试递归条件,后递归调用;运行时n由键盘输入。 (4)教材习题5.8 (5)教材习题6.3 2.进阶部分 (1)设计一个程序,通过重载求两个数中最大数的函数max(),分别实现求两个实数和两个整数及两个字符的最大者。 (2)编程程序求下式值,其中ni用函数来实现,且设参数n的默认值为2: (3)编写程序用递归法将一个整数n转换成字符串。 如输入1234,应输出字符串“1234”。 n的位数不确定,可以是任意位数的整数。 (4)教材习题5.3 实验5数组 实验目的 ●掌握数组和字符串的基本操作方法。 ●掌握常用的几种遍历数组的方法。 ●掌握常用的排序方法。 实验学时 本次实验需要三个学时。 实验要求 ●在学完教材第7章内容后进行本次实验。 ●基础部分实验必选,进阶部分实验 (1)必选,其它任选。 ●根据实验内容的相应描述和要求,自行设计并调试代码。 实验内容 1.基础实验 (1)一个包含10个元素的数组,已按升序排序,输入一个任意的整数,将该整数插入数组中,使数组元素仍保持升序排列。 要求编写一个通用的插入排序函数InsertSort,它带有三个参数,第一个参数是含有n个元素的数组,这n个元素已按升序排序;第二个参数给出当前数组中元素的个数;第三个参数是要插入的整数。 该函数的功能是将一个整数插入到数组中,然后进行排序。 另外还需要一个用于输出数组元素的函数Print,要求每一行输出5个元素。 (2)编程求下列两个矩阵的加法(结果矩阵的元素值是这两个矩阵相应元素之和)。 要求: 定义函数MatAdd用于求矩阵的加法,函数Show用于输出矩阵。 (3)要求设计一个函数voidstrcpy(chara[],charb[]),将b中的字符串复制到数组a中(要求不使用C++的库函数strcpy())。 编写完整的程序并测试。 2.进阶实验 (1)输入10个数到一维数组中,用冒泡排序法将其按从大到小的次序排序后输出。 要求: 分别用三个函数实现数据的输入、排序及输出。 (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号开始报数,报到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)包含年月日数据成员;提供默认构造函数、带年月日参数的构造函数、和拷贝构造函数;定义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)构造三个学生的数据,每个学生都有三门课程成绩。 输入并显示这些数据。 (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 classMammal { public: Mammal(): itsAge (2),itsWeight(5) { cout<<"Mammalconstructor…\n"; } ~Mammal(){cout<<"Mammaldestructor…\n";} intGetAge()const{returnitsAge;} voidSetAge(intage){itsAge=age;} intGetWeight()const{returnitsWeight;} voidSetWeight(intweight){itsWeight=weight;} voidMove()const{cout<<"Mammalmoveonestep\n";} virtualvoidSpeak()const{} voidsleep()const{cout<<"shhh,I'msleeping.\n";} protected: intitsAge; intitsWeight; }; 狗属哺乳动物,且它的属性有品种之分(在哺乳类的基础上增加品种资料成员),叫声区别于其它动物(Speak()实现为虚函数,输出”Woof! ”),还会要尾巴(增加成员函数,输出”Tailwagging…”),乞讨食物(增加成员函数,输出”beggingforfood…”)。 猫、马、猪也属于哺乳动物,其叫声分别为: ”Meow! ”,“Winnie! ”,“Oink”。 编程分别使各个动物表现为不一样的行为。 要求: ①狗的品种: enumBREED{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函数不是虚函数,那么各种动物的叫声会怎样,为什么? ③什么时候要用虚析构函数? ④面向对象程序设计中,继承机制使程序员可以在现有的类库代码基础上,稍加改造就能开发出准确性和可靠性都很高的应用程序代码来。 熟悉现有的类,将现实世界中的事物分解并描述成跟现成类库相近的对象,试思考之 实验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中。 名字年龄编号工资 张明丽29111-22-333425.00 李楷楷27333-22-1111350.00 钟静4111-11-0000650.00 定义一个Employee类,包含名字、年龄、编号、工资数据成员,创建三个对象保存上述员工信息,并员工信息按照上述格式输出到文件xyz.txt中。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 程序设计 实验 指导