#include<stdio.h>
#define N 100
void px(int *p,int n)
{ int max=*p,ma=0,min=*(p+1),mi=1,i,j;
for(i=0;i<n;i++)
{ if(*(p+i)>max) max=*(p+(ma=i));
if(*(p+i)<min) min=*(p+(mi=i));
}
j=*(p+0);*p=*(p+mi);*(p+mi)=j;
j=*(p+ma);*(p+ma)=*(p+n-1);*(p+n-1)=j;
}
void out(int *p,int n)
{ int i=0;while(p+i<p+n) printf("%d ",*(p+i++));printf("\n");
}
void input(int *p,int n)
{int i=0;
for(i=0;i<n;i++)
scanf("%d",p+i);
}
void main()
{ int a[N],*p=a,i,n;
printf("input n:\n");
scanf("%d",&n);
printf("input a[]:\n");input(p,n);
px(p,n);out(p,n);
}
该程序是将一个数组中最大值换到最后一个,最小值换到第一个,错在哪里,为什么输入 3 2 1 0 错