输入n(1<=n<=20)个不超过2位的整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。 输入格式: 测试数据有多组,处理到文件尾。每组测试数据的第一行输入n(1<=n<=20)。 第二行输入n个不超过2位的整数。 输出格式: 每组输出将这n个整数中最小的数与第一个数对换,最大的数与最后一个数对换后的n个整数。给出C++代码
时间: 2023-12-04 10:36:17 浏览: 114
你可以使用下面的C++代码来实现该问题的解决:
```cpp
#include <iostream>
#include <algorithm>
int main() {
int n;
while (std::cin >> n) {
int arr[20];
for (int i = 0; i < n; i++) {
std::cin >> arr[i];
}
// 找到最小值和最大值的索引
int minIndex = std::min_element(arr, arr + n) - arr;
int maxIndex = std::max_element(arr, arr + n) - arr;
// 交换最小值和第一个数
std::swap(arr[minIndex], arr[0]);
// 交换最大值和最后一个数
std::swap(arr[maxIndex], arr[n - 1]);
// 输出结果
for (int i = 0; i < n; i++) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
}
return 0;
}
```
这段代码中,我们首先读取输入的整数个数n,然后读取n个整数保存到数组arr中。接着,我们使用`std::min_element`和`std::max_element`函数找到arr数组中的最小值和最大值的索引。然后,我们使用`std::swap`函数交换最小值和第一个数,以及交换最大值和最后一个数。最后,我们输出交换后的数组。
请注意,这段代码可以处理多组测试数据,直到文件末尾。每组测试数据的结果会单独输出。
阅读全文