(8)编写函数,功能是交换数组中的最大数和最小数的位置,并计算所有数之和。例如数组a有5个元素3、4、1、5、2,将最大数5和最小数1的位置交换后得到3、4、5、1、2,总和为15。用 c++
时间: 2024-11-22 10:48:26 浏览: 11
在 C++ 中,你可以通过遍历数组找到最大值和最小值,然后用这两个数分别替换它们在数组中的位置。同时,你可以维护一个变量来跟踪数组元素的总和。以下是一个简单的示例:
```cpp
#include <iostream>
using namespace std;
void swapMaxMin(int arr[], int n) {
// 初始化最大值和最小值
int max_num = arr[0], min_num = arr[0];
// 初始化总和
int sum = 0;
for (int i = 1; i < n; i++) {
// 更新最大值和最小值
if (arr[i] > max_num)
max_num = arr[i];
if (arr[i] < min_num)
min_num = arr[i];
// 累加数组元素
sum += arr[i];
}
// 找到最大值和最小值的索引
int max_index = -1, min_index = -1;
for (int i = 0; i < n; i++) {
if (arr[i] == max_num)
max_index = i;
if (arr[i] == min_num)
min_index = i;
}
// 交换最大值和最小值的位置
if (max_index != -1 && min_index != -1)
swap(arr[max_index], arr[min_index]);
// 输出结果
cout << "交换后的数组: ";
for (int i = 0; i < n; i++)
cout << arr[i] << " ";
cout << "\n数组元素总和: " << sum << endl;
}
int main() {
int a[] = {3, 4, 1, 5, 2};
int n = sizeof(a) / sizeof(a[0]);
swapMaxMin(a, n);
return 0;
}
```
当你运行这个程序,它会首先找出数组中的最大值和最小值,然后交换它们的位置,最后输出交换后的数组以及元素总和。注意,这个示例假设输入数组不为空。
阅读全文