#include <stdio.h>
int main()
{
int n,a[30],k,j,i,max=0,min=1000;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]); //输入数据
for(i=0;i<n;i++)
{
if(a[i]>max)
{
max=a[i];
k=i; //找出最大值,记下位置
}
if(a[i]<min)
{
min=a[i];
j=i; //找出最小值,记下位置
}
}
int x,y;
// 比如9 8 1 3,不能单纯的换位置
//如果最小值和第一个换位变成 1 8 9 3
//再换最大值和最后一位变成 1 8 9 9,因为max=9值不变,但位置变化了,
//所以要用换了最小值后的新位置,新位置是原来最小值的位置,是a[j]
if(max==a[0]||min==a[n-1])
{
x=a[0],a[0]=min,a[j]=x;
y=a[n-1],a[n-1]=max,a[j]=y;
}
else //不是特殊情况,直接换位置
{
x=a[0],a[0]=min,a[j]=x;
y=a[n-1],a[n-1]=max,a[k]=y;
}
for(i=0;i<n;i++)
printf("%d ",a[i]);
return 0;
}
xdoj交换最大值与最小值
最新推荐文章于 2024-09-06 10:38:06 发布