C++编写程序使用指针变量设计函数,查找数组中的最大值和次大值,并在主函数中调用,实现输出
时间: 2024-09-16 08:04:31 浏览: 47
实验2 C++中函数、数组及指针的综合运用.pdf
在C++中,你可以使用指针和函数设计一个算法来寻找数组中的最大值和次大值。下面是一个简单的示例:
首先,我们创建一个函数`findMaxAndSecondMax(int* arr, int size)`,它接受一个整数数组`arr`和它的大小`size`作为输入。这里使用两个指针`maxPointer`和`secondMaxPointer`,分别指向当前的最大值和次大值。
```cpp
#include <iostream>
using namespace std;
// 函数声明,返回void类型,找到并设置数组中的最大值和次大值
void findMaxAndSecondMax(int* arr, int size);
int main() {
// 例子数组
int numbers[] = {5, 10, 15, 20, 8, 22};
int arraySize = sizeof(numbers) / sizeof(numbers[0]); // 获取数组长度
// 调用函数
findMaxAndSecondMax(numbers, arraySize);
// 输出结果
cout << "最大值: " << *maxPointer << endl;
cout << "次大值: " << *(secondMaxPointer) << endl;
return 0;
}
// 实现函数 findMaxAndSecondMax
void findMaxAndSecondMax(int* arr, int size) {
if (size <= 1) {
// 如果数组只有一个元素或为空,直接返回
return;
}
int maxVal = arr[0], secondMax = INT_MIN; // 初始化最大值和次大值
int* maxPointer = &arr[0]; // 指向最大值
int* secondMaxPointer = &arr[0]; // 同理,指向次大值
for (int i = 1; i < size; i++) {
if (arr[i] > maxVal) {
secondMax = maxVal;
maxVal = arr[i];
secondMaxPointer = &arr[i];
} else if (arr[i] > secondMax && arr[i] != maxVal) {
secondMax = arr[i];
secondMaxPointer = &arr[i];
}
}
// 确保实际存储在指针中的值是最新的
*maxPointer = maxVal;
*(secondMaxPointer) = secondMax;
}
```
在这个示例中,主函数调用了`findMaxAndSecondMax`函数,然后输出找到的最大值和次大值。注意这个实现假设数组中有两个不同的非负数值,如果数组有重复的最大值,则无法准确区分第二大值。运行此程序会输出数组中的最大值和次大值。
阅读全文