如何用指向指针的指针的方法对n个整数排序并输出?

题目要求:编写一个程序,用指向指针的指针的方法对n个整数排序并输出。要
求写一个自定义函数sort(),其原型为:void sort(int **p,int n);n和整数在
主函数中输入,排序后结果最后在主函数中输出
编写的代码不对,哪里有问题呢:

#include 
void sort(int **p, int n) {
    int i, temp, j;

    for (i = 0; i < n - 1; i++) {
        for (j = 0; j < n - 1; j++) {
            if (**p > **(p + 1)) {
                temp = **p;
                **p = **(p + 1);
                **(p + 1) = temp;
            }
        }
    }

}
int main() {
    int **p ;
    int i, n;
    while (scanf("%d", &n) && n != 0) {

        for (i = 0; i < n; i++, p++) {
            scanf("%d", & **p);
        }
        sort(p, n);
        for (i = 0, p = 0; i < n; i++, p++) {
            printf("%d", **p);
        }
    }
    return 0;
}

#include <stdio.h>
void sort(int **p, int n) {
    int i, temp, j;
 
    for (i = 0; i < n - 1; i++) {
        for (j = 0; j < n - i-1; j++) {
            if (*(*p+j) > *(*p + j+1)) {
                temp = *(*p+j);
                *(*p+j)= *(*p + j+1);
                *(*p +j+ 1) = temp;
            }
        }
    }
 
}
int main() {
    int *a = NULL;
    int **p = NULL;
    int i, n;
    while (scanf("%d", &n) && n != 0) {
        a = (int*)malloc(sizeof(int)*n);
        p = &a;
        for (i = 0; i < n; i++) {
            scanf("%d", (*p)+i);
        }
        sort(p, n);
        for (i = 0; i < n; i++) {
            printf("%d ", *(*p+i));
        }
        free(a);
    }
    return 0;
}
 

该回答引用ChatGPT

下面是一个使用指向指针的指针对n个整数排序并输出的C语言程序,包括自定义函数sort()的实现。



#include <stdio.h>
#include <stdlib.h>

// 定义自定义函数sort()
void sort(int **p, int n) {
    int i, j, temp;
    for (i = 0; i < n - 1; i++) {
        for (j = i + 1; j < n; j++) {
            if (**(p + i) > **(p + j)) {
                // 交换两个指针指向的值
                temp = **(p + i);
                **(p + i) = **(p + j);
                **(p + j) = temp;
            }
        }
    }
}

int main() {
    int n, i;
    int *a, **p;

    printf("请输入整数的个数n:");
    scanf("%d", &n);

    // 动态分配内存
    a = (int*)malloc(n * sizeof(int));
    p = (int**)malloc(n * sizeof(int*));

    printf("请输入%d个整数:\n", n);
    for (i = 0; i < n; i++) {
        // 为每个指针分配内存
        *(p + i) = (a + i);
        scanf("%d", *(p + i));
    }

    // 调用自定义函数sort()
    sort(p, n);

    printf("排序后的结果为:\n");
    for (i = 0; i < n; i++) {
        printf("%d ", *(a + i));
    }

    // 释放内存
    free(a);
    free(p);

    return 0;
}