C++题目实验二

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

HZAU-专业C++2实验2(计算机3-4班)
程序设计题
1. (10分)
拆旧链造新链(结构体)
题目描述
为足球队员建立记录,要有姓名、身高、年龄、所属俱乐部。

先按身高降序排列输出、再按年龄升序排列后输出。

注意请在原链表上实现排序后再输出。

结构体如下:struct FootballPlayer
{
char name[20];
int height;
int age;
char club[20];
};
参考函数如下:
void Create(FootballPlayer *&f);
void SortHeightDown(FootballPlayer *&f);
void SortAgeUp(FootballPlayer *&f);
void Show(FootballPlayer *f);
输入描述
足球队员的记录。

输出描述
两次排序后的输出。

输入样例
zhao 182 22 Red
qian 190 24 Green
sun 179 23 Blue
li 188 26 Red
zhou 174 25 Blue
wu 180 22 Green
qian 190 24 Green
li 188 26 Red
zhao 182 22 Red
wu 180 22 Green
sun 179 23 Blue
zhou 174 25 Blue
zhao 182 22 Red
wu 180 22 Green
sun 179 23 Blue
qian 190 24 Green
zhou 174 25 Blue
li 188 26 Red
2. (10分)
Cdateinfo类
题目描述
设计一个类Cdateinfo,其私有数据成员有year(年)、month(月)、day(日),要求其满足下述要求。

(1)要求有一个无参数的构造函数,其初始的年、月、日分别为:2012,3,3。

(2)要求有一个带参数的构造函数,起参数分别对应年、月、日。

(3)要求用一个成员函数实现日期的设置。

(4)要求用一个成员函数实现日期的输出。

(5)将(1)和(2)的函数用//屏蔽注释掉,然后在上述程序的基础上将(1)和(2)的两个构造函数改为一个带默认参数的构造函数,并使年、月、日的默认值分别为:2012,3,3。

输入描述
在主函数里用Cdateinfo类定义2个对象,一个无参数,一个有年月日。

显示输出这2个日期。

然后分别重新设置这2个对象的日期,分别显示输出修改后的日期。

输出描述
4次日期的显示输出。

2012 4 15
2012 5 9
2012 8 8
输出样例
2012 3 3
2012 4 15
2012 5 9
2012 8 8
3. (10分)
椭圆类——1
题目描述
设计并测试一个名为Ellipse的椭圆类:
(1)其私有数据成员为外切矩形的左上角与右下角两个点的坐标(4个int型
x1,y1,x2,y2)
(2)声明4个公有的成员函数分别访问椭圆的外切矩形的顶点坐标
(3)设计1个构造函数Ellipse(int,int,int,int)对椭圆的外切矩形的顶点坐标赋值(4)设计1个公有成员函数Area()计算椭圆的面积。

输入描述
在主函数里输入顶点坐标,并声明一个Ellipse类的对象。

输出描述
在主函数里调用该对象的成员函数输出外切矩形的顶点坐标,计算并输出椭圆的面积。

输入样例
-3 1 3 -1
输出样例
-3 1 3 -1
9.4245
4. (10分)
椭圆类——2
题目描述
(1)拷贝(复制)构造函数的实现。

在第三题的基础上,增加一个拷贝构造函数。

函数原型格式:Ellipse(const Ellipse & e);
(2)增加Show()函数,显示椭圆的外切矩形的顶点坐标。

(3)增加一个成员函数Fun(int y),将椭圆外切矩形的左上角和右下角的纵坐标分别加y和减y。

(4)增加析构函数,在析构函数中输出“xigou”以及待析构对象的外切矩形左上角的横纵坐标。

输入描述
在主函数中输入顶点坐标后创建一个对象,并用该对象作为初始值再创建一个新对象。

输入一个值,用于修改新对象的外切矩形的纵坐标。

输出描述
在主函数里调用这2个对象的Show函数分别输出外切矩形的顶点坐标,调用Area 函数分别计算并输出椭圆的面积。

接收修改值y后,调用Fun函数修改新对象的纵坐标。

重新计算新对象的面积并输出。

输入样例
-3 1 3 -1
1
输出样例
-3 1 3 -1
-3 1 3 -1
9.4245
9.4245
18.849
xigou -3 2
xigou -3 1
5. (10分)
椭圆类——3
题目描述
(1)在第4题的基础上,增加一个Point类(点类),包括私有成员横纵坐标x和y(均为int型),以及参数带默认值的构造函数Point(x=0,y=0);
(2)给Point类增加拷贝(复制)构造函数Point(Point& p);
(3)增加析构函数~Point();输出"Point xigou"以及待析构的点的横纵坐标。

(4)增加取横纵坐标值的函数int GetX(); int GetY();
(5)删除Ellipse类原来的四个数据成员,重新修改为Point a,b;
(6)修改Ellipse原来的构造函数Ellipse(int x1,int y1,int x2,int y2);注意使用冒号语法对组合成员进行构造,并在构造函数里输出“gouzhao 1”和x1,y1,x2,y2的值。

(7)增加一个Ellipse类的构造函数Ellipse(Point &p1,Point &p2); 并在构造函数里输出“gouzhao 2”和x1,y1,x2,y2的值。

(8)修改Ellipse的析构函数的输出内容为“Ellipse xigou”以及待析构对象的外切矩形右下角的横纵坐标。

(9)去掉Ellipse类的拷贝构造函数、Fun函数,并修改剩余函数里的错误。

输入描述
主函数:输入四个坐标点,用其初始化一个Ellipse对象e1。

输入两对坐标点,用其初始化2个Point对象p1和p2。

用p1和p2初始化一个新的Ellipse对象e2。

最后调用e1和e2的Show函数分别显示坐标,调用e1和e2的Area函数计算并输出。

输出描述

输入样例
-3 1 3 -1
-3 2
3 -2
输出样例
gouzhao 1 -3 1 3 -1
gouzhao 2 -3 2 3 -2
-3 1 3 -1
-3 2 3 -2
9.4245
18.849
Ellipse xigou 3 -2
Point xigou 3 -2
Point xigou -3 2
Point xigou 3 -2
Point xigou -3 2
Ellipse xigou 3 -1
Point xigou 3 -1
Point xigou -3 1
6. (10分)
水果超市管理系统——2
题目描述
(1)定义结构体,用来表示水果的名称和售价
struct Fruit
{
string fruitname;
double price;
};
(2)定义数组,用来存放水果超市中所有水果的种类Fruit FruitKind[100];
(3)编写函数录入水果信息
(4)编写函数显示水果信息
void DispFruitKind(Fruit *fk,int num);
(5)编写水果信息的查询函数
void SearchFruitKind(Fruit *fk,int num,string name);
(6)用数组car来表示购物车,购物车记录购买水果的种类、数量以及价钱,其数组元素的类型为定义的结构体类型CartItem,该结构体包括水果的种类、重量和价钱。

struct CartItem//定义购买水果单项信息
{
FruitKind fruit; //水果种类
double weight; //数量
double money; //金额
};
CartItem car[100]; //初始化空的购物车,购物车用数组来表示
(7)向购物车中添加新购水果信息
void Add(CartItem car[],int &rcount);
(8)从购物车中删除某种水果信息
void DeleteItem(CartItem car[],int &rcount);
(9)结账
void CheckOut(CartItem car[],int &rcount);
(10)显示购物车中所购水果的全部信息void DispAllFruit(CartItem car[],int
&rcount);
输入描述
请同学们仔细查看开学之初发下去的word版的项目完整介绍,以熟悉和了解整个系统流程。

输出描述

输入样例

输出样例

7. (10分)
灯的问题——选做题
题目描述
N盏灯排成一排,从1到N按顺序依次编号。

有N个人也是从1到N依次编号。

第一个人(1号)将灯全部关闭。

第二个人(2号)将凡是2和2的倍数的灯打开。

第三个人(3号)将凡是3和3的倍数的灯做相反处理(该灯如为打开的,将它关闭;如为关闭的,将它打开)。

以后的人都和3号一样,将凡是与自己相同的灯和是自己编号倍数的灯做相反处理。

请问,当第N个人操作之后,哪几盏灯是点亮的。

输入描述
灯的盏数。

输出描述
亮着的灯的编号。

输入样例
7
输出样例
2 3 5 6 7
8. (10分)
青蛙过河——选做题
题目描述
一条小溪尺寸不大,青蛙可以从左岸跳到右岸。

在左岸有一石柱L,面积只容得下一只青蛙落脚,同样右岸也有一石柱R,面积也只容得下一只青蛙落脚。

有一队青蛙从尺寸上一个比一个小。

我们将青蛙从小到大,用1,2,…,n编号。

规定初始时这队青蛙只能趴在左岸的石头L上,按编号一个落一个,小的落在大的上面。

不允许大的在小的上面。

在小溪中有S个石柱,有y片荷叶,规定溪中的柱子上允许一只青蛙落脚,如有多只,同样要求按编号一个落一个,大的在下,小的在上,而且必须编号相邻。

对于荷叶只允许一只青蛙落脚,不允许多只在其上。

对于右岸的石柱R,与左岸的石柱L一样允许多个青蛙落脚,但须一个落一个,小的在上,大的在下,且编号相邻。

当青蛙从左岸的L上跳走后就不允许再跳回来;同样,从左岸L上跳至右岸R,或从溪中荷叶或溪中石柱跳至右岸R上的青蛙也不允许再离开。

问在已知溪中有S根石柱和y片荷叶的情况下,最多能跳过多少只青蛙?
输入描述
提示:定义函数Jump ( s ,y ) ——最多可跳过河的青蛙数,其中:S ——河中柱子数;y ——荷叶数。

分析Jump(0,1),Jump(0,2)。

推导出Jump(0,y)。

然后考虑Jump(1,1),推导出Jump(s,y)和Jump(s-1,y)的关系。

输出描述

输入样例
1 1
输出样例
4
9. (10分)
线段覆盖——选做题
题目描述
本题涉及贪心法。

给出x轴上N条线段的坐标,从中选出一些线段来覆盖区间【0,M】,要求所用线段数目最少。

例如:N=3,M=1,各线段坐标为[-1,0],[-5,-3],[2,5]无解。

例如:N=6,M=4,各线段坐标为[-1,0],[-1,1],[0,3],[2,4],[2,5],[4,5]答案为用2条线段[0,3]和[3,5]。

输入描述
N和M的值,以及各线段坐标
输出描述
无解输出No,有解则输出对应线段
输入样例
6 4
-1 0
-1 1
0 3
2 4
2 5
4 5
输出样例
0 3
2 5。

相关文档
最新文档