题目内容: 有一个长度为10的整数序列,其中最大值和最小值是唯一的,且不会出现在序列的第一和最后位置。编写程序,把序列中的最大值与第一个数交换,最小值与最后一个数交换,然后输出转换好的序列。输入样例(数据间以空格分隔): 2 4 5 6 1 2 8 9 45 10 输出样例(数据间以逗号分隔,末尾没有多余的空格): 45,4,5,6,10,2,8,9,2,1c++
时间: 2024-03-23 18:41:30 浏览: 15
好的,这是一道关于序列操作的问题。以下是一个简单的C++实现:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> nums(10);
for (int i = 0; i < 10; i++) {
cin >> nums[i];
}
int max_index = max_element(nums.begin() + 1, nums.end() - 1) - nums.begin();
int min_index = min_element(nums.begin() + 1, nums.end() - 1) - nums.begin();
swap(nums[0], nums[max_index]);
swap(nums[9], nums[min_index]);
for (int i = 0; i < 10; i++) {
if (i == 9) {
cout << nums[i] << endl;
} else {
cout << nums[i] << ",";
}
}
return 0;
}
```
首先,我们定义一个长度为10的向量 `nums` 来存储输入的整数序列。然后,我们使用 `max_element` 函数和 `min_element` 函数来查找序列中除了第一个和最后一个数以外的最大值和最小值的下标。接下来,我们使用 `swap` 函数来交换最大值和第一个数以及最小值和最后一个数。最后,我们使用循环来输出转换后的序列,逗号分隔数字,最后一个数字后没有逗号。
你可以参考这份代码来实现你自己的程序。