#include <stdio.h>
void main()
{
int a[10],*p,*max,*min,k;
for(p=a;p<a+10;p++)
scanf("%d",p);
max=min=a;
for(p=a+1;p<a+10;p++)
{
if(*max<*p)
max=p;
if(*min>*p)
}
else
{
k=*min;*min=*(p+9);*(p+9)=k;k=*max;*max=*p;*p=k;
}min=p;
}
p=a;
k=*max;*max=*p;*p=k;k=*min;*min=*(p+9);*(p+9)=k;
for(p=a;p<a+10;p++)
printf("%4d",*p);
printf("/n");
}
第一遍写,我随便试了几个数,感觉还不错。但是当我把最大和最小数放在两边时,问题就出来了。。。出现了两次重复的交换!也就是说,这个程序完全没起任何作用。
#include <stdio.h>
void main()
{
int a[10],*p,*max,*min,k;
for(p=a;p<a+10;p++)
scanf("%d",p);
max=min=a;
for(p=a+1;p<a+10;p++)
{
if(*max<*p)
max=p;
if(*min>*p)
min=p;
}
p=a;
if(*max==*(p+9)&&*min==*p)
{
k=*p;*p=*(p+9);*(p+9)=k;
}
else if(*max==*(p+9))
{
k=*max;*max=*p;*p=k;k=*min;*min=*(p+9);*(p+9)=k;
}
else
{
k=*min;*min=*(p+9);*(p+9)=k;k=*max;*max=*p;*p=k;
}
for(p=a;p<a+10;p++)
printf("%4d",*p);
printf("/n");
}