int largestInt(int array[], int length){
int max = array[0];
int i;
for( i=1; i<length; i++){
if(array[i] > max){
max = array[i];
}
}
return max;
}
上面的代码适用于整数,但如果我将其更改为使用浮点数,如下所示,
float largestFloat(float array[], int length){
float max = array[0];
int i;
for( i=1; i<length; i++){
if(array[i] > max){
max = array[i];
}
}
return max;
}
有时候它会给我正确的答案,有时它只会给我一个巨大的数字,即使在原始数组中也是如此。这让我相信我已经超越了阵列的长度。
float f[15] = {9.5, 45.64, 313.11, 113.89, 81.56, 250.00, 11.9, 469.98, 313.11, 4.68, 34.33, 8013.55, -10.15, 11.5, 88.0} <-- filled with 15 values
largestFloat(f,15);
这就是我要跑的。
答案 0 :(得分:2)
没有看到完整的例子,我不得不说你是对的。数组大小可能是错误的。首先修复返回类型:
float largestFloat(float array[], int length){
接下来,您可能希望为空数组添加一个保护,因为它会自动过度提取数组[0]:
if (length < 1) return 0;
其他的hugeFloat()很好。
然后致电:
float f[15] = {2.3 ... 102} <-- filled with 15 values
size_t length = sizeof f / sizeof f[0];
float f_max = largestFloat(f, length);
printf("max=%g, length=%d\n", f_max, length);
这将计算(在编译时)数组f的实际大小。寻找长度不是您认为应该的长度的情况。如果键入a,就会发生这种情况。而不是a,在没有小数点的值之间。这种错误计算是我所知道的唯一方法,可以从看似15的值中获得14个或更少的值。
答案 1 :(得分:0)
问题是您找到了最大的float
,但随后返回int
值
int largestFloat(float array[], int length){ // return type is int
float max = array[0]; // max is float
int i;
for( i=1; i<length; i++){
if(array[i] > max){
max = array[i];
}
}
return max;
}