实践描述:
亲爱的慕友们,指针是 C 语言的灵魂,也是很多初学者感到困惑的核心概念。通过第三周的学习,我们已经了解了指针的基本定义、地址传递以及指针与数组的关系。为了帮助大家真正“掌握指针”,本次实践将通过排序任务强化指针操作能力!动手设计并实现一个简单的排序系统,展示一下自己的编程实力吧!
题目:
请使用指针而非数组下标,实现一个选择排序程序,具体要求如下:
1、从标准输入读取一个整数 m(1≤m≤100);
2、接着读取 m 个整数存入数组;
3、编写函数,全程使用指针操作对该数组进行升序排序;
4、输出排序后的结果,数字间用空格分隔。
输入数据:
5
64 34 25 12 22
预计结果:
12 22 25 34 64
一、开发语言与环境要求
1、语言版本:c语言
2、开发工具:Microsoft Visual Studio
二、程序整体要求
1、排序过程必须全程使用指针,禁止使用 arr[i] 形式;
2、代码结构清晰,注释说明指针操作;
3、提交 PointerSort.zip,含 main.c
三、详细设计
1、主函数逻辑:
• 声明 int arr[100];
• 录入 m 及 m个整数;
• 调用 selectionSort(arr, m);
• 使用指针遍历输出结果;
2、自定义函数要求:
• void selectionSort(int *arr, int size):
• 外层循环:int *i_ptr = arr; i_ptr < arr + size - 1; i_ptr++;
• 内层循环:int *j_ptr = i_ptr + 1; j_ptr < arr + size; j_ptr++;
• 通过 *i_ptr 和 *j_ptr 比较并交换元素;
• 交换使用临时变量,如 int temp = *i_ptr; *i_ptr = *min_ptr; ...。
一、项目规范 【15分】
- 源文件为 main.c,指针变量命名清晰(如 i_ptr, min_ptr);
- 代码结构合理,主函数简洁;
- 注释说明指针操作意图。
二、程序整体运行效果 【15分】
- 能正确读入 m 和 m 个整数;
- 输出排序后数组,格式正确(空格分隔)。
三、定义函数 【30分】
- 自定义 selectionSort 函数;
- 函数参数为指针和长度;
- 排序逻辑通过指针实现,无下标访问。
四、指针使用规范 【25分】
- 排序过程中所有数组访问均使用 *ptr 或 *(arr + i) 形式;
- 无任何 arr[i] 出现;
- 指针运算安全,无越界。
五、功能正确性 【15分】
- 对任意合法输入能输出正确升序序列;
- 支持 m=1、m=100 等边界测试。