C++查找数组中最小和最大元素的下标
#include <iostream>
#include <cmath>
using namespace std;
void find(int* arr, int len, int* minpos, int* maxpos)
{
int x = 0;
int z = 0;
for (int i = 0; i < len; i++)
{
if (arr[i] >= arr[x])
{
x = i;
}
if (arr[i] <= arr[z])
{
z = i;
}
}
*minpos = z;
*maxpos = x;
}
int main()
{
int len;
cin >> len;
int a = 0;
int b = 0;
int* arr = new int[len]();
for (int j = 0; j < len; j++)
{
cin >> arr[j];
}
find(arr, len, &a, &b);
cout << a << ',' << b << endl;
delete[] arr;
system('pause');
return 0;
}
这段代码定义了一个名为 'find' 的函数,该函数接受一个整数数组、数组长度以及两个指向整数的指针作为参数。该函数找到数组中最小和最大元素的下标,并将这些下标存储在指针指向的变量中。
'main' 函数从用户那里获取数组长度和元素,然后调用 'find' 函数查找最小和最大元素的下标。最后,它打印这些下标。
这段代码解决了以下问题:
- 循环索引的起始值: 循环的起始索引已从 1 改为 0,以确保遍历整个数组。
- 处理多个相同极值元素: 添加了 'if (arr[i] >= arr[x])' 和 'if (arr[i] <= arr[z])' 条件,以便在存在多个相同极值元素时更新下标。
- 将结果存储在指针指向的变量中: 不再在 'find' 函数内部打印结果,而是将结果存储在 'minpos' 和 'maxpos' 指针指向的变量中。
原文地址: http://www.cveoy.top/t/topic/M3k 著作权归作者所有。请勿转载和采集!