利用指针对数组进行排序不知道哪里出现了问题

输出的结果没有变化

#include<stdio.h>
void sort(int *p, int n);
int main()
{
    int a[5];
    int *p = a;
    for (int i = 0; i < 5; i++)
    {
        scanf("%d", &a[i]);
    }
    sort(a, 5);
    for (int i = 0; i < 5; i++)
    {
        printf("%d ", a[i]);
    }
}

/* 请在这里填写答案 */
void sort(int *p, int n) {
    int i, j, t;
    for (j = 1; j < 5; j++) {
        for (i = 0; i < 5 - i; i++) {
            if (p[i] > p[i + 1]);
            t = p[i];
            p[i] = p[i + 1];
            p[i + 1] = t;

        }
    }
}


#include<stdio.h>
void sort(int *p, int n);
int main()
{
    int a[5];
    int *p = a;
    for (int i = 0; i < 5; i++)
    {
        scanf("%d", &a[i]);
    }
    sort(a, 5);
    for (int i = 0; i < 5; i++)
    {
        printf("%d ", a[i]);
    }
}

void sort(int *p, int n) {
    int i, j, t;
    for (j = 0; j < 4; j++) {
        for (i = j+1; i < 5; i++) {
            if (p[i] > p[j]){
                t = p[i];
                p[i] = p[j];
                p[j] = t;
            }

        }
    }
}

首先你sort里if后面的分号 和{}我不知道是复制错了还是什么原因
if判断为真后如果要做不止一个语句的操作要用{}包起来
给你改了一下 for循环里也有点问题

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^