C++程序设计实验指导文档格式.docx
- 文档编号:21408597
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:17
- 大小:39.66KB
C++程序设计实验指导文档格式.docx
《C++程序设计实验指导文档格式.docx》由会员分享,可在线阅读,更多相关《C++程序设计实验指导文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
2.进阶部分
(1)编写一个C++程序:
输入圆的半径,输出其周长。
(2)实现一个多行输出的程序,输出内容为:
*
***
*****
*******
实验2数据类型、运算符和表达式
●了解基本数据类型的字节宽度和范围表示。
●掌握表达式中各种运算符的功能和特点。
●理解表达式和语句的概念。
●掌握基本的输入输出方法。
●学习过程化程序设计的方法。
●培养编写程序的艺术,明确程序可读性是程序质量的重要标准。
●初步学习调试方法。
●在学完教材第2章和第3章内容后进行本次实验。
●基础部分实验必选,进阶部分实验
(1)必选,其它任选。
(1)测试基本数据类型char、int和short之间的相互转换。
(2)测试前缀和后缀自增、自减运算符。
(3)测试cin和cout的基本输入和输出用法。
(4)编写程序Ex_CircleAndBall,求圆的周长、圆面积、圆球体积、圆柱体积。
要求用const设定PI常量,定义适当数据类型的变量,并设圆、球半径和圆柱的高的初值分别为2.5、4,依次计算上述结果并输出,输出时要求有相应的文字提示。
(5)从键盘输入一个三位数,从左到右用a、b、c表示各位数字,记为abc,现要求依次输出从右到左的各位数字,即输出另一个三位数cba。
例如,输入123,输出321。
试设计程序Ex_Abc。
(1)用sizeof运算符编写一个测试程序,测试本机中各基本数据类型或字符串所占的字节数,并将其填写到下表中,然后分析其结果。
基本数据类型
所占字节数
基本数据类型或字符串
char
float
short
double
int
longdouble
long
“\nCh\t\v\0ina”
(2)已知a=b=100000,c=1000,编程求a*b/c,注意不要让中间结果溢出。
实验3分支语句
●了理解程序的分支结构,能实现简单的条件判断程序。
●进一步学习编程技巧,条件表达式代替条件语句,逻辑短路表达式。
●掌握switch多分支结构。
本次实验需要三个学时。
●在学完教材第4章“分支语句”内容后进行本次实验。
●基础部分实验必选,进阶部分实验至少选择一个。
(1)程序Ex_If用于计算下列数学函数:
x-1(x≥10)
y=2x+2(1<
x<
10)
3x2+3x-1(x≤1)
当输入x后,输出y的值。
(2)程序Ex_Switch给出一个百分制成绩,要求输出成绩等级A、B、C和D。
其中,85分以上为A,75~84分为B,65~74分为C,65分以下为D。
(3)程序Ex_Root求解一元二次方程ax2+bx+c=0的根。
当a=0且b=0时,方程无根。
当a=0且b
0时,方程有一个根。
当a
0时,根据Δ=b2-4ac确定方程的根,若Δ>
0,有两个不同的实根;
当Δ=0,有两个相同的实根;
当Δ<
0,有两个不同的复根。
输入参数a、b、c,输出相应的结果。
(1)实现一个简单的菜单程序,运行时显示“Menu:
A(dd)D(delete)S(ort)Q(uit),Selectone:
”提示用户输入,A表示增加,D表示删除,S表示排序,Q表示退出,输入为A,D,S时分别提示“数据已经增加、删除、排序。
”输入Q时程序结束。
要求:
使用if---else语句进行判断。
(2)编程实现输入一个整数,判断其能否被3,5,7整除,并输出以下信息之一:
能同时被3,5,7整除;
能被其中两数(要指出哪两个)整除;
能被其中一个数(要指出哪一个)整除;
不能被3,5,7任一个整除。
使用switch语句。
实验4循环语句
●掌握表达式中逻辑运算符、关系运算符的功能和特点。
●掌握while和do-while循环的区别。
●掌握for循环的语法结构并用其解决问题。
●在学完教材第4章内容后进行本次实验。
●基础部分实验必选,进阶部分实验(3)必选,其它任选。
(1)程序Ex_Fib用于解Fibonacci数列问题。
Fibonacci数列的前两个数是1和1,从第三个数开始,每个数等于前两个数之和。
编程计算并输出此数列的前30个数,且每行输出5个数。
(2)程序Ex_Taylor用泰勒级数求e的近似值,直到最后一项小于10-6为止。
(3)程序Ex_Graph打印下列菱形图案:
*
***
*****
*******
(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
实验5函数
●掌握函数声明、定义和使用的方法。
●掌握函数递归调用的方法。
●掌握重载函数及函数参数默认的使用方法。
本次实验需要四个学时。
●在学完教材第5章内容后进行本次实验。
(1)程序Ex_AreaFunc求三角形的面积。
已知三角形的三边a、b、c,则三角形的面积为
其中,s=(a+b+c)/2。
需要说明的是,三角形的三边的边长由cin输入,需要判断这三边是否构成一个三角形。
若是,则计算其面积并输出,否则输出“错误:
不能构成三角形!
”。
编写一个完整的程序,其中需要两个函数,一个函数判断是否构成三角形,另一个函数计算三角形的面积。
(2)程序Ex_Power编程求下式值,其中ni用函数来实现,且设参数n的默认值为2:
(3)程序Ex_NumToStr用递归法将一个整数n转换成字符串。
如输入1234,应输出字符串“1234”。
n的位数不确定,可以是任意位数的整数。
(1)设计一个程序,通过重载求两个数中最大数的函数max(),分别实现求两个实数和两个整数及两个字符的最大者。
(2)设计一个函数,要求能将一个正整数n按反序输出,n的位数不定。
例
如,123输出321。
用非递归函数来实现,编写完整的程序并测试。
(3)用递归方法求解母牛问题。
若一头母牛,从出生起第四个年头开始每年
生一头母牛,按此规律,第n年时有多少头母牛?
用递归函数求解;
先测试递归条件,后递归调用;
运行时n由键盘输入。
实验6数组
●掌握数组和字符串的基本操作方法。
●掌握常用的几种遍历数组的方法。
●掌握常用的排序方法。
●在学完教材第6章内容后进行本次实验。
1.基础实验
(1)程序Ex_Sort插入排序法,输入10个整数并按升序排序后输出。
要求编写一个通用的插入排序函数InsertSort,它带有三个参数,第一个参数是含有n个元素的数组,这n个元素已按升序排序;
第二个参数给出当前数组中元素的个数;
第三个参数是要插入的整数。
该函数的功能是将一个整数插入到数组中,然后进行排序。
另外还需要一个用于输出数组元素的函数Print,要求每一行输出5个元素。
(2)程序Ex_MatAdd编程求下列两个矩阵的加法(结果矩阵的元素值是这两个矩阵相应元素之和)。
函数MatAdd用于求矩阵的加法,函数Show用于输出矩阵。
(3)程序Ex_Strcpy要求设计一个函数voidstrcpy(chara[],charb[]),将b中的字符串复制到数组a中(要求不使用C++的库函数strcpy())。
编写完整的程序并测试。
2.进阶实验
(1)输入10个数到一维数组中,用冒泡排序法将其按从大到小的次序排序后输出。
分别用三个函数实现数据的输入、排序及输出。
(2)输入一个5*5的整数矩阵,求出两条对角线元素值之和。
(3)编写一个函数,统计一条英文句子中字母的个数,在主程序中实现输入、输出。
实验7指针和引用
●学习数组定义、初始化、赋值、使用的方法。
●学习给函数传递数组的方法。
●声明和操作指针和引用。
●学习用指针和引用给函数传递参数。
●学习调试方法。
●在学完教材第7章内容后进行本次实验。
●基础部分实验必选,进阶部分实验至少选择一个
(1)程序Ex_Swap实现数据交换。
分别用指针和引用作为函数mySwap的形参,并通过重载int、double型变量值的交换。
(2)程序Ex_Sort实现字符排序。
用指针数组作为函数mySwap形参,实现字符串数组的排序。
函数mySort还有一个形参n,用来指定字符串数组的大小。
(3)程序Ex-Number实现下述功能:
由17人围成一个圈,编号1~17,从第1号开始报数,报到3的倍数的人离开,一直数下去,直到最后只剩下1个人,求此人的编号(要求用new和delete来分配、释放所需内存空间)。
(1)字符串交换
编写程序,交换两个不同长度的字符串指针,分别打印之。
用函数调用的方式来实现。
主函数中定义两个字符串,然后调用交换函数。
(2)设计一个函数,形参是引用类型,要求输入三个整数,按从小到大排序后输出。
编程完整的程序并测试。
实验8结构、程序结构和编译预处理
●学习结构类型的定义和使用方法。
●学习条件编译预处理的使用。
●掌握自定义头文件的方法。
●掌握建立和调试多文件结构程序的方法。
●在学完教材第8、9章内容后进行本次实验。
程序Ex_ParC:
建立一个动态数组,用来存取学生成绩结构STUDENT的数据,该结构描述的信息有学号、姓名、三门课成绩、总分、平均分。
编写5个函数Output、Add、List、Find和RemoveAll。
Output函数用来输出某个学生成绩结构的全部信息;
Add函数用来输入学生信息,计算总分和平均分并添加到结构数组中;
List函数用来遍历整个数组,调用函数Output输出所以学生成绩结构的全部信息;
Find函数用来按姓名在结构数组中查找并输出找到的学生成绩结构的全部信息或输出“没有找到!
”信息的结果;
RemoveAll函数来删除和释放整个结构数组。
要求如下:
(1)学生成绩结构类型STUDENT定义的代码保存在文件stustruct.h中;
结构数组及其操作代码保存在stuarray.h文件中。
(2)在main函数中,用循环语句构造命令指令列表。
并能显示结构数组中的记录个数,其运行结果如图T8.1所示。
(3)编写一个完整的应用程序并学会运用VisualC++进行调试。
(1)修改程序Ex_ParC,增加函数Search,遍历整个数组找出总分最高的学生,输出其全部信息,并在命令指令列表中增加响应的查找指令。
(2)修改程序Ex_ParC,增加函数Sort,按照平均分由高到低排序并按输出排序后每位学生的全部信息,并在命令指令列表中增加响应的查找指令。
实验9类和对象
●学习定义类的方法。
●学习构造函数、拷贝构造函数的定义使用方法。
●学习对象的使用方法。
●领会面向对象程序设计的基本方法。
●在学完教材第10章内容后进行本次实验。
仔细阅读教材第十章最后的综合应用实例Ex_Stack10(“设计栈类来存取学生成绩数组”),然后进行下列修改:
(1)将学生成绩类CStuScore分成两个类:
CPerson和Cscore。
其中,CPerson类的数据成员是姓名和学号;
而CScore类的数据成员除了三门课成绩外,还有一个CPerson类对象stu。
结合栈模型,设计这两个类,并确定对象stu的初始化。
(2)修改栈类CStack,当栈满时,执行full()操作:
动态创建一个是原来栈空间两倍的空间,把原来栈中的内容放入新栈,再删除原栈空间。
(3)编写一个可运行的完整的程序Ex_Stack并测试。
定义日期类型Date。
(1)包含年月日数据成员;
提供默认构造函数、带年月日参数的构造函数、和拷贝构造函数;
定义set成员函数可以设置日期;
日期加一天操作;
定义intput成员函数,输入日期信息,输入格式为“YYYY-MM-DD”;
定义print成员函数输出对象的日期。
(2)编写一个可运行的完整程序,构造3个日期类型的对象,并输出相应的日期信息。
实验10继承和派生
●学习根据现有类建立新类的方法。
●理解继承的含义,掌握派生类的定义方法和实现;
●理解公有继承下基类成员对派生类成员和派生类对象的可见性,能正确地访问继承层次中的各种类成员;
●理解保护成员在继承中的作用,能够在适当的时候选择使用保护成员以便派生类成员可以访问基类的部分非公开的成员;
●了解虚基类的用法。
●在学完教材第11、12章内容后进行本次实验。
编写一个程序Ex_Student,以实现一个班级学生的学期成绩管理。
个人信息类Cperson的数据成员有姓名、年龄、性别;
课程类CCourse的数据成员有课程名、学分、成绩;
学生类CSutudent从CPerson类派生,并增加数据成员学号、CCcourse对象成员数组(大小为8)、总成绩、总学分和平均成绩;
班级类CClass类的数据成员有CStudent类对象数组(大小由构造函数决定)、班号、班级人数等。
(1)本班级类CClass中添加成员函数Seek,通过学号查找并输出学生的全部信息。
(2)构造三个学生的数据,每个学生都有三门课程成绩。
输入并显示这些数据。
(3)根据类的需要添加适当的其他成员,编写完整的程序并测试。
(1)对程序Ex_Student进行扩展,定义导师类CTutor,继承CPerson类,并增加数据成员职称;
定义研究生类CGraduateStudent继承学生类,并且增加数据成员导师类对象,根据需要添加适当的其他成员,编写完整程序并测试。
(2)定义时间类型Time
继承Date类,并增加数据成员时分秒;
增加构造函数、拷贝构造函数;
增加设置时间的成员函数;
编写完整的程序,创建时间对象,并输出时间。
(3)编写一个程序计算出球、圆柱和圆锥的体积。
①定义一个基类圆,至少含有一个数据成员半径;
②定义基类的派生类球、圆柱、圆锥,都含有求体积的成员函数和输出函数。
③定义主函数,求球、圆柱、圆锥的体积。
实验11多态
●理解虚函数在类的继承层次中的作用,虚函数的引入对程序运行时的影响,能够对使用虚函数的简单程序写出程序结果。
●理解抽象类的作用和使用方法。
●理解重载运算符的作用,学会对典型的运算符进行重载。
●在学完教材第13章内容后进行本次实验。
(1)编写程序Ex_Shape:
定义一个类CShape,包含两个虚函数Area(用来计算面积)和SetData(用来设计形状大小)。
然后派生出矩形CRect类、圆CCircle类,分别求其面积。
最后定义一个CArea类,计算这几个形状的面积之和,各形状的数据通过CArea类的构造函数或成员函数来设置。
(2)编写程序Ex_String:
重载字符串运算符=、+、<
分别用于字符串的赋值、拼接、比较运算,实现字符串直接操作。
其中=和<
运算符重载函数为友元函数,而+运算符重载为成员函数。
(1)仿真农场
哺乳动物类如下所示:
#include<
iostream.h>
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函数不是虚函数,那么各种动物的叫声会怎样,为什么?
③什么时候要用虚析构函数?
④面向对象程序设计中,继承机制使程序员可以在现有的类库代码基础上,稍加改造就能开发出准确性和可靠性都很高的应用程序代码来。
熟悉现有的类,将现实世界中的事物分解并描述成跟现成类库相近的对象,试思考之。
实验12输入/输出流
●学习I/O流类的操作。
●学习对I/O流进行格式控制。
●学习文件流的使用方法。
●在学完教材第14章内容后进行本次实验。
仔细阅读教材第14章最后的综合应用实例Ex_IO14(“通过文件操作来存放学生数据”),然后进行下列修改:
(1)将
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 程序设计 实验 指导
![提示](https://static.bdocx.com/images/bang_tan.gif)