第32325题 单选题
以下C++代码用于求int类型数组的最大值,存在边界与极值处理漏洞,关于漏洞原因和修复方案描述正确的是?
int findMax(int arr[], int n) {
    int max_val = 0;
    for(int i = 0; i < n; i++) {
        if(arr[i] > max_val) {
            max_val = arr[i];
        }
    }
    return max_val;
}
A

漏洞是初始值设为0,当数组所有元素均为负数时返回结果错误,修复方案是将max_val初始值设为INT_MIN,同时增加n<=0的非法输入判断,返回错误码或抛出异常

B

漏洞是for循环的边界i<n应该写成i<=n,否则会漏掉最后一个元素,修复方案修改循环条件为i<=n

C

漏洞是没有处理数组元素等于max_val的情况,修复方案是将判断条件改为arr[i] >= max_val

D

代码没有任何边界与极值问题,可以正常处理所有合法输入

程序运行统计
暂无判题统计
提交0次 正确率0.00%
答案解析