
C++实验四复杂数据类型.pdf
5页实验实验四四 复杂数据类型复杂数据类型 实验目的实验目的 学习数组的定义 初始化 赋值和使用的方法 学习给函数传递数组的方法 学习指针和引用的定义和使用方法 学习字符串的使用方法 学习用指针和引用给函数传递参数 实验内容实验内容 1 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 实现提示 排序可以用最简单的选择排序法 选择排序法 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 有何共同点 2 2 字符排序字符排序 修改上面的程序 将数组的操作改为对字符串操作 即从键盘输入一串字符 将它 们存放在字符数组中 形成一个字符串 然后对字符数组中的各个字符排序 测试数据测试数据 输入内容 kapdobc 输出内容 abcdkop 实现要求实现要求 1 用字符数组代替上一个实验的整数数组 2 不要先输入字符串的长度 在程序中自动计算出字符串的长度 实现提示 1 字符串的输入输出操作可以简化 不用一个字符一个字符的输入输出 2 字符的长度可以借助于预定义的函数 strlen 求出 该函数所在的 库函数名为 string h 思考问题 对字符的比较遵循什么样的约定 为什么字符 a 比字符 b 小 3 3 字符串操作字符串操作 要求和上面类似 但数组中的元素变为字符串 程序对已有的字符串 进行排序 并输出排序后的结果 字符串数组中的元素为 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 if strlen char a strlen char b return strlen char a strlen char b return strcmp char a char b 。












