实验5 类与对象
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五类与对象
实验目的
掌握类的定义与使用
掌握类的定义和对象声明
复习具有不同访问属性的成员的访问方式
观察构造函数和析构函数的执行过程
学习类的聚集使用方法
实验内容
1.数组排序
从键盘读入若干整数,将它们按由低到高排序输出。
[测试数据]:
程序先输出: Please input array number:
用户输入: 5
程序再输出: Please input all the integer:
用户输入:300 700 600 450 500
程序输出:300 450 500 600 700
[实现要求]:
1.用一个数组存放各个整数;
2.在主函数main()中实现数据的输入和输出操作,并用一个函数实现对数组元素的排序操
作。
3. 排序函数调用另一个函数swap()实现两个数组元素的交换。可以使用指针、引用两
种方式实现函数参数的传递:
swap(int *pa, int *pb);
swap(int * a; int & b);
排序可以用最简单的选择排序法:
选择排序法:
1.从n个数中选择最小的一个,把它和第一个数组元素交换;
2.从剩下的n-1个数中选择最小的一个,把它和第二个数组元素交换;
3.依此类推,直到从最后两个元素中选出倒数第二小的元素并把它和倒数第二个
元素交换为止。
如要按选择排序法对数组30 50 21 39 20排序,则各趟排序后的结果
如下所示(带下划线的数表示参加交换的数):
开始: 30 50 21 39 20
第一趟排序:20 50 21 39 30
第二趟排序:20 21 50 39 30
第三趟排序:20 21 30 39 50
第四趟排序:20 21 30 39 50
[实验步骤]
1.用数组实现程序要求
说明:用一个长度为10的数组存放待排序的数据,数组的定义为
int iArray[10];
数组排序函数的原型为:
void sort(int num, int iArray[]);
其中num表示数组元素的个数,iArray是数组。
2.用动态申请空间的方式实现程序要求。
说明:使用指针来实现前面数组的功能
int *piArray;
piArray = new int(num);
其中数组的大小num需要由用户预先输入。
1.上面两种实现方式对程序的改动大吗?
2.尝试用不同的方式访问数组中的元素
iArray[i], *(iArray+i), piArray[i], *(piArray+i),
3.iArray和piArray有何共同点?
1.字符排序
修改上面的程序,将数组的操作改为对字符串操作,即从键盘输入一串字符,将它们存放在字符数组中(形成一个字符串),然后对字符数组中的各个字符排序。
[测试数据]:
输入内容:kapdobc
输出内容:abcdkop
[实现要求]:
1.用字符数组代替上一个实验的整数数组;
2.不要先输入字符串的长度,在程序中自动计算出字符串的长度。
[实现提示]:
1.字符串的输入输出操作可以简化,不用一个字符一个字符的输入输出
2.字符的长度可以借助于预定义的函数strlen()求出,该函数所在的库函数名为
string.h
[思考问题]
对字符的比较遵循什么样的约定(为什么字符a比字符b小)?
1.字符串操作
要求和上面类似,但数组中的元素变为字符串。程序对已有的字符串进行排序,并输出
排序后的结果。字符串数组中的元素为:
January, February, March, April, May, June, July, September
[测试数据]:
程序直接输出排序后的结果:
May
July
June
April
March
January
Februrary
September
[实现要求]:
1.排序的规则为:先比较两个字符串的长度,长度短的字符串排在前面,如果长度相等,
则比较字符串的值,按从小到大排序输出。
2.用字符串数组存放各字符串,并在定义数组时对其进行初始化
3.利用库函数qsort实现排序操作
[实现提示]:
1.使用库函数qsort必须包含头文件
2. qsort的函数原型为:
void qsort(void *base, //所要排序的数组第一个元素的地址
size_t nelem, //要排序的元素的个数
size_t width, //要排序的元素的宽度
int (*fcmp)(const void *, const void *));//用于比较元素大小的函数名字
其中,比较数组元素大小的函数原型为:
int (*fcmp)(const void *, const void *);
其两个参数分别指向两个要比较的数,结果用小于零、等于零和大于零分别表示第一个数小于、等于和大于第二个数。你需要定义自己的字符串比较函数,其原型和上面的一样。函数的定义如下:
int sort_function( const void *a, const void *b)
{