题目:
把数组中最大数与第一个元素交换 最小数与最后一个元素交换
源代码
#include <stdio.h>
int main()
{
int n,i,j,k,m,max,min;
int a[100];
while(scanf("%d",&n)!=EOF)
{
int max0=0,min0=0;
scanf("%d",&a[0]);
max = min = a[0];
for(i = 1;i < n;i ++)
{
scanf("%d",&a[i]);
if(max < a[i])
{max0 = i;max = a[i];}
if(min > a[i])
{min0 = i;min = a[i];}
}
a[0]^=a[max0]^=a[0]^=a[max0];
if(a[n-1] != min)
{
a[n-1]^=a[min0]^=a[n-1]^=a[min0];
} //为了判断是否已经在结尾了
for(i = 0;i < n-1;i ++)
printf("%d ",a[i]);
printf("%d\n",a[n-1]);
}
return 0;
}
切记:此题需要考虑你最大值和最小值在数组的头和尾的情况,否则会导致数组头和尾两次交换,相当于没有交换!!!