我试图从一个函数中获取两个值。我已经用谷歌搜索了这个问题,但我自己似乎把代码搞乱了。
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]
。
对于最小值的计算,同上。