C语言 尝试查找带有指针的数组的最小值和最大值

qoefvg9y  于 8个月前  发布在  其他
关注(0)|答案(1)|浏览(89)

我试图找到一个给定数组的最小值和最大值,该数组的大小作为参数,并指示最小值和最大值。我做错了什么?

void FindMinMax(const int array[], int size, int* min, int* max)
{
    int minVal = array[0];
    int maxVal = array[0];
    int i;
    
    for (i = 1; i < size; i++) {
        if (array[i] > maxVal) {
            *max = array[i];
        }
        if (array[i] < minVal) {
            *min = array[i];
        }
    }

    return;
}

字符串
我尝试在新声明中将大小输入到数组中,但这不起作用,并说它无法定义。

qvtsj1bj

qvtsj1bj1#

minValmaxVal在循环期间不会更新,因此只对数组的第一个元素进行比较。这意味着*min*max将只是数组中大于/小于第一个元素的 * 最后 * 个值,而不一定是整个数组中的 * 最大 * 值或 * 最小 * 值。
局部变量是冗余的。

void FindMinMax(const int array[], int size, int *min, int *max)  
{             
    if (size > 0)            
        *min = *max = array[0];
                          
    for (int i = 1; i < size; i++) {   
        if (array[i] > *max)           
            *max = array[i];
        else if (array[i] < *min)           
            *min = array[i];            
    }                                   
}

字符串

相关问题