我试图从一个函数中获取两个值。我已经用谷歌搜索了这个问题,但我自己似乎把代码搞乱了。

double* suurim(double arv[], int x, double *array)
{
    int i;
    double temp;
    temp = arv[0];
    for(i = 1; i < x; i++) // biggest
    {
        if (arv[i] > temp)
        {
            array[0] = arv[i];
        }
    }
    for(i = 1; i < x; i++) // smallest
    {
        if (arv[i] < temp)
        {
            array[1] = arv[i];
        }
    }
    return array;
}

suurim(arv, mituArvu, array);
printf("%0.1lf\n", array[0]);

它不返回它应该返回的。这是怎么回事?
有一个阵列Arv。函数应该从Arv数组中获取最大和最小的数字,并将它们分别放到array[0]和array[1]中。
编辑这个我可能是一个副本,但其他问题的答案包含结构,我不想。

最佳答案

您的方法是从函数返回多个值的有效方法。但是:
对于最大值,只返回数组中的元素,其最大索引大于第一个元素。(temp设置后不会更改)。这是一个算法失败:例如,你的最大值(1,3,2,0)将返回2。
您实际上不需要temp:您可以比较arv[i] > array[0],将array[0]初始化为arv[0]
对于最小值的计算,同上。

10-07 14:48