最大矢量值函数问题

时间:2015-06-28 10:09:13

标签: c function vector

我正在制作的函数应该返回到向量中的最大值,我很难过为什么它不起作用,这里是代码:

float max(float vec[], int len) {
    int i;
    float max;
    for (i = 0; i < len; i++) {
        if (vec[i] > max) {
            max = vec[i];
        }
    }
    return max;
}

2 个答案:

答案 0 :(得分:1)

max未初始化,使用未初始化的变量会导致未定义的行为。

float max = vec[0];// Initialize max before using it 

答案 1 :(得分:0)

您没有初始化局部变量

float max;

您可以通过以下方式执行此操作

float max = vec[0];

当第二个参数等于0或为负值时,该函数也有问题。

一般方法是返回最大元素的索引,并在调用者中将返回的索引与第二个参数的值进行比较。如果它们相等则数组为空。否则索引指向最大元素。

所以函数可以用以下方式编写

size_t max_element( const float vec[], size_t len ) 
{
    size_t max = 0;
    size_t i = 1;

    for ( ; i < len; i++ ) 
    {
        if ( vec[max] < vec[i] ) max = i;
    }

    return max;
}

并且在调用者中你可以写

float vec[] = { /* some initializers */ };
size_t max = max_element( vec, sizeof( vec ) / sizeof( *vec ) );

printf( "The maximum value is &f for element with index %zu\n", vec[max], max );