题目来源:http://ac.jobdu.com/problem.php?pid=1053
-
题目描述:
-
输入一个数n,然后输入n个数值各不相同,调换数组中最大和最小的两个数,然后输出。
-
输入:
-
测试数据有多组,输入n(1<=n<=20),接着输入n个数。
-
输出:
-
对于每组输入,输出交换后的结果。
-
样例输入:
-
2 1 3
-
样例输出:
-
3 1
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int MAXN = 25;
const int INF = 0xffffff;
void Swap_Max_Min(int& a, int& b)
{
if(a == b)
return;
a ^= b;
b ^= a;
a ^= b;
}
int main()
{
int arr[MAXN], iMax, iMin, iMaxSubNum, iMinSubNum;
int n, i;
while(scanf("%d", &n) != EOF)
{
iMax = -INF, iMin = INF, iMaxSubNum = iMinSubNum = 0;
memset(arr, 0, sizeof(arr));
for(i = 0; i < n; ++i)
{
scanf("%d", &arr[i]);
if(iMax < arr[i])
iMax = arr[i], iMaxSubNum = i;
if(iMin > arr[i])
iMin = arr[i], iMinSubNum = i;
}
Swap_Max_Min(arr[iMaxSubNum], arr[iMinSubNum]);
for(i = 0; i < n-1; ++i)
printf("%d ", arr[i]);
printf("%d\n", arr[n-1]);
}
return 0;
}