问一下这种问题该怎么做?

在主调函数中从键盘输入 10 个整数,在被调函数中找出最大的和最后一个位置上的交换最小的数与最前面的那个交换。要求数组数据输入、数据输出、和数据处理用指针方法实现不允许使用全局变量。


void func(int *a,int n)
{
    int min=0,max=0,t;
    
    for(i=1;i<n;i++)
    {
        if(a[max]<a[i])max=i;
        if(a[min]>a[i])min=i;
    }
    t=a[0];
    a[0]=a[min];
    a[min]=t;
    t=a[n-1];
    a[n-1]=a[max];
    a[max]=t;
}

int main()
{
    int a[10],i;
    int *p=a;
    for(i=0;i<10;i++)
    {
        scanf("%d",p+i);
    }
    func(p,10);
    for(i=0;i<10;i++)
    {
        printf("%d",*(p+i));
    }
}