一个关于指针的有关问题(新手求教)

一个关于指针的问题(新手求教)
输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个对换,要求用三个函数来写
要求用指针方法处理。
求指教,
下面的程序有错允许不了。。求解,谢谢
#include<stdio.h>

void input(int a[],int *pmax,int *pmin)
{
printf("请输入10个整数:\n");
int i;
scanf("%d",a[0]);
*pmax=*pmin=a[0];
for(i=1;i<10;i++)
scanf("%d",&a[i]);
}
void chang(int *pmax,int *pmin,int a[])
{
int i,t1,t2;
for(i=0;i<10;i++)
{
if(*pmax<a[i])
{

*pmax=a[i];
t1=i;
}
if(*pmin>a[i])
{

*pmin=a[i];
t2=i;
}
}
                       a[t1]=a[9];
a[9]=*pmax;
                         a[t2]=a[0];
a[0]=*pmin;
}
void output(int a[])
{
int i;
for(i=0;i<10;i++)
printf("%d ",a[i]);
}
int main(void)
{
int max,min;
int a[10];
input(a,&max,&min);
chang(&max,&min,a);
output(a);
return 0;
}


------解决方案--------------------
一时半会还真看不出来,哦,
------解决方案--------------------
修改后没测试:
#include<stdio.h>
 
void input(int a[],int *pmax,int *pmin)
{
    printf("请输入10个整数:\n");
    int i;
    scanf("%d",&a[0]);
    *pmax=*pmin=0;
    for(i=1;i<10;i++)
    {
        scanf("%d",&a[i]);
        if(a[i]>a[*pmax])*pmax=i;
        if(a[i]<a[*pmin])*pmin=i;
    }
}
void chang(int a[]int pmax,int pmin)
{
    int temp;
    temp=a[0];
    a[0]=a[pmin];
    a[pmin]=temp;
temp=a[pmax];
a[pmax]=a[9];
a[9]=temp;
}
void output(int a[])
{
    int i;
    for(i=0;i<10;i++)
        printf("%d ",a[i]);
}
int main(void)
{
    int max;
    int min;
    int a[10];
    input(a,&max,&min);
    chang(a,max,min);
    output(a);
    return 0;
}

------解决方案--------------------
与其修改,不如直接指出原程序中的错误,我在想,他的程序错在哪呢?
------解决方案--------------------
input()函数这句话错了。
scanf("%d",a[0]);
------解决方案--------------------
牛逼

引用:
input()函数这句话错了。
scanf("%d",a[0]);