从任意n个数中找出最大数和最小数,并将他们交换后输出
时间: 2024-11-12 12:34:55 浏览: 25
在C++中,要从任意数量(n)的整数中找到最大值和最小值并进行交换,你可以使用数组或vector来存储这些数字,然后遍历它们来找到这两个极端值。这里有一个简单的示例代码,使用了迭代的方式来解决问题:
```cpp
#include <iostream>
#include <vector>
void findAndSwap(std::vector<int>& numbers) {
if (numbers.empty()) {
std::cout << "The list is empty." << std::endl;
return;
}
// 初始化两个变量为第一个元素,假设它是最大和最小的
int min_num = numbers[0], max_num = numbers[0];
// 遍历数组查找最大值和最小值
for (int i = 1; i < numbers.size(); i++) {
if (numbers[i] < min_num) {
min_num = numbers[i];
} else if (numbers[i] > max_num) {
max_num = numbers[i];
}
}
// 如果找到不同值,则交换
if (min_num != max_num) {
std::swap(numbers[0], numbers[numbers.size() - 1]);
std::cout << "Original array: ";
for (const auto& num : numbers) {
std::cout << num << " ";
}
std::cout << "\nSwapped array: ";
for (const auto& num : numbers) {
std::cout << num << " ";
}
std::cout << std::endl;
} else {
std::cout << "All elements are the same, no swap needed." << std::endl;
}
}
int main() {
std::vector<int> input_numbers = {5, 3, 9, 1, 7}; // 你可以替换为你自己的数字
findAndSwap(input_numbers);
return 0;
}
```
在这个例子中,我们首先检查数组是否为空。然后遍历整个数组,同时更新`min_num`和`max_num`。如果遍历结束后发现最小值和最大值不相同,我们就调用`std::swap`函数交换这两个值。最后,我们打印原始数组和处理后的数组。
阅读全文