希望通过排序输出最大值,最小值和次大值,但是已编程序不知道为什么输出不了

#include <stdio.h>
int main()
{
void sort(int x[],int n);
int i,*p,a[10];
p=a;
printf("enter 10 numbers:\n");
for(i=0; i<10; i++);
scanf("%d",p++);
p=a;
sort(p,10);
for(p=a,i=0; i<10; i++,p++)
{
printf("%d ",*p);
}
printf("the maximum is %d\nthe minimum is %d\nthe second maximum is %d\n",*(p+0),*(p+1),*(p+9));
return 0;
}
void sort(int x[],int n)
{
int i,j,k,t;
for(i=0; i<n-1; i++)
{
k=i;
for(j=i+1; j<n; j++)
if(x[j]>x[k])k=j;
if(k!=i)
{
t=x[i];
x[i]=x[k];
x[k]=t;
}
}
}


#include <stdio.h>
int main()
{
    void sort(int x[], int n);
    int i, * p, a[10];
    p = a;
    printf("enter 10 numbers:\n");
    for (i = 0; i < 10; i++)
        scanf("%d", p++);
    p = a;
    sort(a, 10);
    for (i = 0; i < 10; i++)
    {
        printf("%d ", p[i]);
    }
    printf("the maximum is %d\nthe minimum is %d\nthe second maximum is %d\n", *(p + 0), *(p + 1), *(p + 9));
    return 0;
}
void sort(int x[], int n)
{
    int i, j, k, t;
    for (i = 0; i < n - 1; i++)
    {
        k = i;
        for (j = i + 1; j < n; j++)
            if (x[j] > x[k])k = j;
        if (k != i)
        {
            t = x[i];
            x[i] = x[k];
            x[k] = t;
        }
    }
}