本题要求编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。
注意:题目保证最大和最小值都是唯一的。
输入格式:
输入在第一行中给出一个正整数N(≤10),第二行给出N个整数,数字间以空格分隔。
输出格式:
在一行中顺序输出交换后的序列,每个整数后跟一个空格。
输入样例:
5
8 2 5 1 4
输出样例:
1 2 5 4 8
Author
C课程组
Organization
浙江大学
Code Size Limit
16 KB
Time Limit
400 ms
Memory Limit
64 MB
精简版:
#include <iostream>
using namespace std;
int main(void)
{
int n;
int arr[11];
cin >> n;
for (int i = 0; i < n; ++i)
{
cin >> arr[i];
}
// 将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换
int temp;
int min = 0;
for (int i = 0; i < n; ++i)
{
if (arr[i] < arr[min])
{
min = i;
}
}
temp = arr[0]; arr[0] = arr[min]; arr[min] = temp;
int max = 0;
for (int i = 0; i < n; ++i)
{
if (arr[i] > arr[max])
{
max = i;
}
}
temp = arr[n-1]; arr[n-1] = arr[max]; arr[max] = temp;
for (int i = 0; i < n; ++i)
{
cout << arr[i] << ' ';
}
return 0;
}
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
int main(void)
{
int n;
cin >> n;
vector<int> vec;
while (n--)
{
int x;
cin >> x;
vec.push_back(x);
}
swap(vec[0], *min_element(vec.begin(), vec.end()));
swap(*vec.rbegin(), *max_element(vec.begin(), vec.end()));
for (const auto &i : vec)
{
cout << i << ' ';
}
return 0;
}