C语言编写一个用指向指针的指针的方法对n 个整数排序并输出。要求将排序单独写成一个函数。n 和各整数在主函数中输入。最后在主函数中输出。
时间: 2024-03-17 08:46:29 浏览: 59
好的,这是一个经典的排序算法,下面是代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
void sort(int **arr, int n) {
int i, j, *tmp;
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (**(arr + i) > **(arr + j)) {
tmp = *(arr + i);
*(arr + i) = *(arr + j);
*(arr + j) = tmp;
}
}
}
}
int main() {
int n, i, **arr;
printf("请输入n的值:");
scanf("%d", &n);
arr = (int **)malloc(sizeof(int *) * n);
printf("请输入%d个整数:\n", n);
for (i = 0; i < n; i++) {
*(arr + i) = (int *)malloc(sizeof(int));
scanf("%d", *(arr + i));
}
sort(arr, n);
printf("排序后的结果为:\n");
for (i = 0; i < n; i++) {
printf("%d ", **(arr + i));
free(*(arr + i));
}
free(arr);
return 0;
}
```
在这个程序中,我们首先用指向指针的指针 `int **arr` 来表示要排序的整数数组,然后在 `sort` 函数中使用简单的选择排序算法对数组进行排序。最后在主函数中输出排序后的结果,并释放动态分配的内存空间。
注意,在输入整数时,我们使用 `*(arr + i)` 来表示第 `i` 个指针,然后再使用 `*(*(arr + i))` 来表示指针所指向的整数,这是因为 `arr` 是一个指向指针的指针,而 `*(arr + i)` 表示的是一个指针,所以要再加一个 `*` 才能得到整数。
阅读全文