C语言指针练习程序求纠错

用指针实现,输入6个整数,把最小数与第1个数交换,最大数与最后1个数交换,其它数据不动。输入保证最大值和最小值唯一。请编写3个函数:(1)输入6个数;(2)进行处理函数;(2)输出6个数,每个数占3个宽度,左对齐。

运行无结果
求程序纠错

#include <stdio.h>
void inputdata(int *p);
void swapdata(int *p);
void printdata(int *p);
int main(){
    int a[6];  
    inputdata(a);
    swapdata(a);
    printdata(a);
    return 0;
}

void inputdata(int *p)
{  int i=0;
   for(i=0;i<6;i++)
       scanf("%d ",*p++);
}
void swapdata(int *p)
{  int i,x,d,min=*p,max=*(p+5),k;
   for(i=0;i<6;i++)
   {
   if(min>*(p+i))
      {min=*(p+i);x=i;}
   if(max<*(p+i))
      { max=*(p+i);d=i;}
   }
   k=*p;*p=min;*(p+x)=k;
   k=*(p+5);*(p+5)=max;*(p+d)=k;
}
void printdata(int *p)
{  int i;
  for(i=0;i<6;i++)
      printf("%3d",*p++);
}

改动处见注释,供参考:

#include <stdio.h>
void inputdata(int *p);
void swapdata(int  *p);
void printdata(int *p);
int main(){
    int a[6];
    inputdata(a);
    swapdata(a);
    printdata(a);
    return 0;
}
void inputdata(int *p)
{
   int i=0;
   for(i=0;i<6;i++)
       scanf("%d", p++);
       //scanf("%d ",*p++);
}
void swapdata(int *p)
{
   int i,x=0,d=0,min=*p,max=*p,k;//修改
   //int i,x,d,min=*p,max=*(p+5),k;
   for(i=0;i<6;i++)
   {
       if(min>*(p+i))
          {min=*(p+i);x=i;}
       if(max<*(p+i))
          {max=*(p+i);d=i;}
   }
   k=*p;*p=min;*(p+x)=k;
   if(d == 0) d = x;          //修改
   k=*(p+5);*(p+5)=max;*(p+d)=k;
}
void printdata(int *p)
{
   int i;
   for(i=0;i<6;i++)
      printf("%3d",*p++);
}

scanf里面的参数是指针,不需要加*号符