C语言改错题球球了救救我

改错题

1、题目:通过键盘输入10个整数为一个维数组各个元素赋值;将其中最小的数与第一个数对换,将最大的数与最后一个数对换;输出调整后的数组元素。

#include<stdio.h>

void input(int *arr,int n);

void max_min(int *arr,int n);

void output(int *arr,int n);

int main()

{

  int a[10];

  input(a,10);

  max_min(a,10);

  output(a,10);

  return 0;

}

void input(int *arr,int n)

  int *p,i;

  p=arr;

  printf("please enter 10 integers:\n");

  for(i=0;i<n;i++)

     scanf("%d",&p++);

}

void max_min(int *arr,int n)

  int *min,*max,*p;//分别为最小值、最大值、数组任一项的地址索引

  int t;

  min=max=arr;

  for(p=arr+1;p<arr+n;p++)

    if(*p>*max) 

       *max=*p;

    else if(*p<*min) min=p;

            t=*arr;*arr=*min;*min=t;

  if(max=arr) 

    max=min;

   t=*(arr+n-1);*(arr+n-1)=*max;*max=t;

}

void output(int *arr,int n)

  int *p,i;

  p=arr;

  printf("The changed array is:\n");

  for(i=0;i<n;i++)

    printf("%3d",p++);

  printf("\n");

}

去掉scanf中p++前面的&

min=max=*arr

供参考:

#include<stdio.h>

void input(int *arr,int n);
void max_min(int *arr,int n);
void output(int *arr,int n);

int main()
{
  int a[10];
  input(a,10);
  max_min(a,10);
  output(a,10);
  return 0;
}

void input(int *arr,int n)
{
  int *p,i;
  p=arr;
  printf("please enter 10 integers:\n");
  for(i=0;i<n;i++)
          scanf("%d",p++);
}

void max_min(int *arr,int n)
{
  int *min,*max,*p;//分别为最小值、最大值、数组任一项的地址索引
  int t;
  min=max=arr;
  for(p=arr+1;p<arr+n;p++)
             if(*p>*max)     max=p;
             else if(*p<*min)min=p;
  t=*arr;*arr=*min;*min=t;
  if(max==arr)  max=min;
  t=*(arr+n-1);*(arr+n-1)=*max;*max=t;
}

void output(int *arr,int n)

{
  int *p,i;
  p=arr;
  printf("The changed array is:\n");
  for(i=0;i<n;i++)
    printf("%3d",*p++);
  printf("\n");
}