设计两数sortArrayByPointer,两数的功能是:使用指针实现对数组 21101=(12,5,13,25,21,46,34,37,19,21进行降序排序,將结果存到数组b中并输出。要求:除 了定义数组a,b时,任何地方不可以使用下标法(即口),必须使用指针;不可以改变数 组a。
时间: 2024-03-26 21:41:23 浏览: 68
好的,这是一个比较典型的使用指针进行排序的问题。代码如下所示:
```c
#include <stdio.h>
void sortArrayByPointer(int *a, int *b, int n);
int main() {
int a[] = {12, 5, 13, 25, 21, 46, 34, 37, 19, 21};
int b[10];
int n = sizeof(a) / sizeof(int);
sortArrayByPointer(a, b, n);
printf("Sorted array: ");
for (int i = 0; i < n; i++) {
printf("%d ", b[i]);
}
printf("\n");
return 0;
}
void sortArrayByPointer(int *a, int *b, int n) {
int *p = a;
int *q = b;
while (p < a + n) {
int *max = p;
int *r = p + 1;
while (r < a + n) {
if (*r > *max) {
max = r;
}
r++;
}
*q = *max;
q++;
p = max + 1;
}
}
```
在这个示例中,`sortArrayByPointer` 函数使用了两个指针 `p` 和 `q`,分别指向数组 `a` 和 `b` 的首元素。在每次循环中,先找到未排序部分的最大元素 `max`,然后将其存入 `b` 数组中,最后将 `p` 指向 `max` 的下一个位置,继续循环,直到 `p` 指向数组 `a` 的末尾为止。
需要注意的是,这个函数并没有改变数组 `a` 的内容,而是将排序后的结果存储在了数组 `b` 中。
阅读全文