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,输出相应的结果。
2.进阶部分
(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.基础部分
(1)程序Ex_Fib用于解Fibonacci数列问题。
Fibonacci数列的前两个数是1和1,从第三个数开始,每个数等于前两个数之和。
编程计算并输出此数列的前30个数,且每行输出5个数。
(2)程序Ex_Taylor用泰勒级数求e的近似值,直到最后一项小于10-6为止。
(3)程序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
实验5函数
实验目的
●掌握函数声明、定义和使用的方法。
●掌握函数递归调用的方法。
●掌握重载函数及函数参数默认的使用方法。
实验学时
本次实验需要四个学时。
实验要求
●在学完教材第5章内容后进行本次实验。
●基础部分实验必选,进阶部分实验
(1)必选,其它任选。
●根据实验内容的相应描述和要求,自行设计并调试代码。
●认真填写实验报告。
实验内容
1.基础部分
(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的位数不确定,可以是任意位数的整数。
2.进阶部分
(1)设计一个程序,通过重载求两个数中最大数的函数max(),分别实现求两个实数和两个整数及两个字符的最大者。
(2)设计一个函数,要求能将一个正整数n按反序输出,n的位数不定。
例
如,123输出321。
要求:
用非递归函数来实现,编写完整的程序并测试。
(3)用递归方法求解母牛问题。
若一头母牛,从出生起第四个年头开始每年
生一头母牛,按此规律,第n年时有多少头母牛?
要求:
用递归函数求解;先测试递归条件,后递归调用;运行时n由键盘输入。
实验6数组
实验目的
●掌握数组和字符串的基本操作方法。
●掌握常用的几种遍历数组的方法。
●掌握常用的排序方法。
实验学时
本次实验需要三个学时。
实验要求
●在学完教材第6章内容后进行本次实验。
●基础部分实验必选,进阶部分实验
(1)必选,其它任选。
●根据实验内容的相应描述和要求,自行设计并调试代码。
●认真填写实验报告。
实验内容
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.基础部分
(1)程序Ex_Swap实现数据交换。
分别用指针和引用作为函数mySwap的形参,并通过重载int、double型变量值的交换。
(2)程序Ex_Sort实现字符排序。
用指针数组作为函数mySwap形参,实现字符串数组的排序。
函数mySort还有一个形参n,用来指定字符串数组的大小。
(3)程序Ex-Number实现下述功能:
由17人围成一个圈,编号1~17,从第1号开始报数,报到3的倍数的人离开,一直数下去,直到最后只剩下1个人,求此人的编号(要求用new和delete来分配、释放所需内存空间)。
2.进阶部分
(1)字符串交换
编写程序,交换两个不同长度的字符串指针,分别打印之。
要求:
用函数调用的方式来实现。
主函数中定义两个字符串,然后调用交换函数。
(2)设计一个函数,形参是引用类型,要求输入三个整数,按从小到大排序后输出。
编程完整的程序并测试。
实验8结构、程序结构和编译预处理
实验目的
●学习结构类型的定义和使用方法。
●学习条件编译预处理的使用。
●掌握自定义头文件的方法。
●掌握建立和调试多文件结构程序的方法。
实验学时
本次实验需要两个学时。
实验要求
●在学完教材第8、9章内容后进行本次实验。
●基础部分实验必选,进阶部分实验任选。
●根据实验内容的相应描述和要求,自行设计并调试代码。
●认真填写实验报告。
实验内容
1.基础部分
程序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++进行调试。
2.进阶部分
(1)修改程序Ex_ParC,增加函数Search,遍历整个数组找出总分最高的学生,输出其全部信息,并在命令指令列表中增加响应的查找指令。
(2)修改程序Ex_ParC,增加函数Sort,按照平均分由高到低排序并按输出排序后每位学生的全部信息,并在命令指令列表中增加响应的查找指令。
实验9类和对象
实验目的
●学习定义类的方法。
●学习构造函数、拷贝构造函数的定义使用方法。
●学习对象的使用方法。
●领会面向对象程序设计的基本方法。
实验学时
本次实验需要两个学时。
实验要求
●在学完教材第10章内容后进行本次实验。
●基础部分实验必选,进阶部分实验任选。
●根据实验内容的相应描述和要求,自行设计并调试代码。
●认真填写实验报告。
实验内容
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个日期类型的对象,并输出相应的日期信息。
实验10继承和派生
实验目的
●学习根据现有类建立新类的方法。
●理解继承的含义,掌握派生类的定义方法和实现;
●理解公有继承下基类成员对派生类成员和派生类对象的可见性,能正确地访问继承层次中的各种类成员;
●理解保护成员在继承中的作用,能够在适当的时候选择使用保护成员以便派生类成员可以访问基类的部分非公开的成员;
●了解虚基类的用法。
实验学时
本次实验需要三个学时。
实验要求
●在学完教材第11、12章内容后进行本次实验。
●基础部分实验必选,进阶部分实验
(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)编写一个程序计算出球、圆柱和圆锥的体积。
要求:
①定义一个基类圆,至少含有一个数据成员半径;
②定义基类的派生类球、圆柱、圆锥,都含有求体积的成员函数和输出函数。
③定义主函数,求球、圆柱、圆锥的体积。
实验11多态
实验目的
●理解虚函数在类的继承层次中的作用,虚函数的引入对程序运行时的影响,能够对使用虚函数的简单程序写出程序结果。
●理解抽象类的作用和使用方法。
●理解重载运算符的作用,学会对典型的运算符进行重载。
实验学时
本次实验需要三个学时。
实验要求
●在学完教材第13章内容后进行本次实验。
●基础部分实验必选,进阶部分实验任选。
●根据实验内容的相应描述和要求,自行设计并调试代码。
●认真填写实验报告。
实验内容
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函数不是虚函数,那么各种动物的叫声会怎样,为什么?
③什么时候要用虚析构函数?
④面向对象程序设计中,继承机制使程序员可以在现有的类库代码基础上,稍加改造就能开发出准确性和可靠性都很高的应用程序代码来。
熟悉现有的类,将现实世界中的事物分解并描述成跟现成类库相近的对象,试思考之。
实验12输入/输出流
实验目的
●学习I/O流类的操作。
●学习对I/O流进行格式控制。
●学习文件流的使用方法。
实验学时
本次实验需要两个学时。
实验要求
●在学完教材第14章内容后进行本次实验。
●基础部分实验必选,进阶部分实验任选。
●根据实验内容的相应描述和要求,自行设计并调试代码。
●认真填写实验报告。
实验内容
1.基础部分
仔细阅读教材第14章最后的综合应用实例Ex_IO14(“通过文件操作来存放学生数据”),然后进行下列修改:
(1)将