实验5 类与对象

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)

{

相关文档
最新文档