- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C实验四复杂数据类型.
实验 复杂数据类型
学习数组的定义、初始化、赋值和使用的方法
学习给函数传递数组的方法
学习指针和引用的定义和使用方法
学习字符串的使用方法
学习用指针和引用给函数传递参数
实验内容
1.数组排序
从键盘读入若干整数,将它们按由低到高排序输出。
[测试数据]:
程序先输出: Please input array number:
用户输入: 5
程序再输出: Please input all the integer:
用户输入: 300 700 600 450 500
程序输出: 300 450 500 600 700
[实现要求]:
用一个数组存放各个整数;
在主函数main()中实现数据的输入和输出操作,并用一个函数实现对数组元素的排序操作。
排序函数调用另一个函数swap()实现两个数组元素的交换。可以使用指针、引用两种方式实现函数参数的传递:
swap(int *pa, int *pb);
swap(int * a; int b);
[实现提示]:
排序可以用最简单的选择排序法:
选择排序法:
从n个数中选择最小的一个,把它和第一个数组元素交换;
从剩下的n-1个数中选择最小的一个,把它和第二个数组元素交换;
依此类推,直到从最后两个元素中选出倒数第二小的元素并把它和倒数第二个元素交换为止。
如要按选择排序法对数组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
[实验步骤]
用数组实现程序要求
说明:用一个长度为10的数组存放待排序的数据,数组的定义为
int iArray[10];
数组排序函数的原型为:
void sort(int num, int iArray[]);
其中num表示数组元素的个数,iArray是数组。
用动态申请空间的方式实现程序要求。
说明:使用指针来实现前面数组的功能
int *piArray;
piArray = new int(num);
其中数组的大小num需要由用户预先输入。
[思考问题]
上面两种实现方式对程序的改动大吗?
尝试用不同的方式访问数组中的元素
iArray[i], *(iArray+i), piArray[i], *(piArray+i),
iArray和piArray有何共同点?
2.字符排序
修改上面的程序,将数组的操作改为对字符串操作,即从键盘输入一串字符,将它们存放在字符数组中(形成一个字符串),然后对字符数组中的各个字符排序。
[测试数据]:
输入内容:kapdobc
输出内容:abcdkop
[实现要求]:
用字符数组代替上一个实验的整数数组;
不要先输入字符串的长度,在程序中自动计算出字符串的长度。
[实现提示]:
字符串的输入输出操作可以简化,不用一个字符一个字符的输入输出
字符的长度可以借助于预定义的函数strlen()求出,该函数所在的库函数名为
string.h
[思考问题]
对字符的比较遵循什么样的约定(为什么字符a比字符b小)?
3.字符串操作
要求和上面类似,但数组中的元素变为字符串。程序对已有的字符串进行排序,并输出排序后的结果。字符串数组中的元素为:
January, February, March, April, May, June, July, September
[测试数据]:
程序直接输出排序后的结果:
May
July
June
April
March
January
Februrary
September
[实现要求]:
排序的规则为:先比较两个字符串的长度,长度短的字符串排在前面,如果长度相等,则比较字符串的值,按从小到大排序输出。
用字符串数组存放各字符串,并在定义数组时对其进行初始化
利用库函数qsort实现排序操作
[实现提示]:
使用库函数qsort必须包含头文件stdlib.h;
2. qsort的函数原型为:
void qsort(void *base, //所要排序的数组第一个元素的地址
size_t nelem, //要排序的元素的个数
size_t width, //要排序的元素的宽度
int (*fcmp)(const void *, const void *));//用于比较元素大小的函数名字
其中,比较数组元素大小的函数原型为:
int (*fcmp)(const void *, const void *);
其两个参数分别指向两个要比
文档评论(0)