C语言指针实战:排序与环形报数问题

4星 · 超过85%的资源 需积分: 47 60 下载量 27 浏览量 更新于2024-09-14 1 收藏 43KB DOC 举报
这段代码提供了几个C语言编程的经典问题和解决方案,主要涉及指针的运用。让我们逐一分析每个题目及其对应的代码: 1. 三个数比大小: 这段代码展示了如何使用指针来比较并交换三个整数a、b、c的值。`main()`函数中定义了三个整型指针`p1`, `p2`, 和 `p3`,分别指向变量a、b和c。通过`scanf()`函数读取输入的三个数字,然后调用`exchange()`函数进行排序。`exchange()`函数利用嵌套的`if`语句和`jiaohuan()`函数(用于临时存储和交换两个数)实现了按升序排列这三个数。最后,通过解引用指针输出排序后的结果。 2. 13人报数游戏: 这个程序模拟了一个13人报数的游戏,规则是从第1号开始,每报到3的倍数(即3、6、9...)的人离开圈子。`xuhao()`函数初始化数组,`chulie()`函数负责按规则打印出留下的编号。`main()`函数首先调用`xuhao()`设置初始顺序,然后调用`chulie()`处理报数过程。最后,输出最后一个留下的编号。 3. 求一维数组部分和: 提供的代码片段缺少了结束`}`,但意图是编写一个函数,计算数组`arr`中从第m个元素到第n个元素的和。这个函数没有给出,但从标题推测,它会接收两个参数`m`和`n`,使用指针遍历指定范围内的元素并累加。如果完整实现,可能会像这样: ```c void sumRange(int *arr, int m, int n) { int sum = 0; if (m >= 1 && m <= n && n <= 10) { int *ptr = arr + m - 1; // 计算实际的数组位置 while (m <= n) { sum += *ptr; ptr++; // 移动指针到下一个元素 m++; } } printf("第%d到第%d个数的和是:%d\n", m, n, sum); } ``` 这些例子展示了C语言中指针的基本操作,包括指针的声明与初始化、指针变量的赋值与解引用、以及如何使用指针进行数据交换和数组范围内的计算。对于初学者来说,这些题目有助于理解指针的概念和应用,例如动态内存管理、数组操作和函数参数传递等。