#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. 循环索引的起始值: 循环的起始索引已从 1 改为 0,以确保遍历整个数组。
  2. 处理多个相同极值元素: 添加了 'if (arr[i] >= arr[x])' 和 'if (arr[i] <= arr[z])' 条件,以便在存在多个相同极值元素时更新下标。
  3. 将结果存储在指针指向的变量中: 不再在 'find' 函数内部打印结果,而是将结果存储在 'minpos' 和 'maxpos' 指针指向的变量中。
C++查找数组中最小和最大元素的下标

原文地址: http://www.cveoy.top/t/topic/M3k 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录