C语言-输入N个整数,用冒泡排序算法将它们按升序排序后输出

问题遇到的现象和发生背景

使用函数的方法,输入N个整数,用冒泡排序算法将它们按升序排序后输出

我的代码
#include <stdio.h>
#define N 10

void sort (int *p, int n);
int main(void)
{
    int a[N],*pa ;
    int i;
    for(pa=a;pa<a+N;pa++)
        scanf("%d",pa);
    sort(a,N);
    for(i=0;i<10;i++)
          printf("%d ",a[i]);
    printf("\n");
    return 0;
    }

void sort (int *p, int n)
{
    int i,j,tmp;
        for(j=0;j<n-1;j++)
    {
        for(i=0;i<n-j-1;i++)
        {
            if(*(p+i)>*(p+i+1))
            {
            tmp=*(p+i);
            *(p+i+1)=*(p+i);
            *(p+i)=tmp;

            }
        }
    }
}


运行结果及报错内容

运行无法输出正确的答案

我想要达到的结果

请指正代码哪里错误了,谢谢

scanf("%d",pa);
pa可是地址你怎么输入,还有下面的互换也错了,已改好,望采纳

#include <stdio.h>
#define N 10

void sort(int *p, int n);
int main(void)
{
    int a[N], *pa;
    int i;
    for (pa = a; pa<a + N; pa++)
        scanf("%d",&(*pa));
    sort(a, N);
    for (i = 0; i<N; i++)
        printf("%d ", a[i]);
    printf("\n");
    return 0;
}

void sort(int *p, int n)
{
    int i, j, tmp;
    for (j = 0; j<n - 1; j++)
    {
        for (i = 0; i<n - j - 1; i++)
        {
            if (*(p + i)>*(p + i + 1))
            {
                tmp = *(p + i);
                
                *(p + i) = *(p + i + 1);
                *(p + i + 1) = tmp;

            }
        }
    }
}


你好,28和29行代码修改如下:

            *(p+i)=*(p+i+1);
            *(p+i+1)=tmp;

望采纳!