编写程序利用指针从10个无序不重复的整数中找到最大值和最小值,并返回对应的位置
时间: 2024-02-01 12:15:37 浏览: 74
下面是一个示例程序,用于从给定的整数数组中找到最大值和最小值,并返回它们的位置:
```c++
#include <iostream>
using namespace std;
void findMinMax(int arr[], int n, int* minPtr, int* maxPtr) {
if (n <= 0) return;
*minPtr = *maxPtr = arr[0]; // 初始化最小值和最大值
for (int i = 1; i < n; i++) {
if (arr[i] < *minPtr) {
*minPtr = arr[i];
}
if (arr[i] > *maxPtr) {
*maxPtr = arr[i];
}
}
}
int main() {
int arr[10] = {4, 8, 1, 9, 3, 6, 7, 2, 5, 10};
int minVal, maxVal;
int* minPtr = &minVal;
int* maxPtr = &maxVal;
findMinMax(arr, 10, minPtr, maxPtr);
cout << "Min value: " << *minPtr << " at position " << minPtr - arr << endl;
cout << "Max value: " << *maxPtr << " at position " << maxPtr - arr << endl;
return 0;
}
```
程序中的 `findMinMax` 函数接受一个整数数组、数组长度以及两个指针作为参数。指针 `minPtr` 和 `maxPtr` 分别指向最小值和最大值的位置。函数遍历整个数组,如果找到比当前最小值更小的数字,则更新 `minPtr` 所指向的位置;如果找到比当前最大值更大的数字,则更新 `maxPtr` 所指向的位置。
在 `main` 函数中,我们声明了一个长度为 10 的整数数组 `arr`,并通过指针 `minPtr` 和 `maxPtr` 传递给 `findMinMax` 函数。最后,我们输出最小值和最大值以及它们所在的位置。
阅读全文