K12教育赛事综合服务平台
聚乐之家官方网站
下载聚乐之家官方App
专注青少年竞赛题库网站
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; }
漏洞是初始值设为0,当数组所有元素均为负数时返回结果错误,修复方案是将max_val初始值设为INT_MIN,同时增加n<=0的非法输入判断,返回错误码或抛出异常
漏洞是for循环的边界i<n应该写成i<=n,否则会漏掉最后一个元素,修复方案修改循环条件为i<=n
漏洞是没有处理数组元素等于max_val的情况,修复方案是将判断条件改为arr[i] >= max_val
代码没有任何边界与极值问题,可以正常处理所有合法输入