You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

代码问题:获取B类型球速最大值却输出全部B类数值

问题排查与修复

代码核心问题

你的代码逻辑完全错误,导致每次遇到B类型就输出当前球速,而非最大值:

  • max变量被放在if(pitchType[index] == pitchToFind)代码块内,每次碰到B类型都会重新初始化max为0.00,根本无法累计比较所有B类型的速度。
  • 内部的for(int g = 0; g < index; g++)循环完全无效:你每次都拿当前的pitchSpeed[index]和max对比,不管循环多少次,最终max都会被赋值为当前球速,随后直接打印,等同于把每个B类型的球速挨个输出。

修复后的代码

正确逻辑是先遍历所有数据,找出所有B类型球速的最大值,最后一次性输出:

void getMax(int numOfPitches, char pitchType[], double pitchSpeed[], char pitchToFind) {
    // 初始化max为极小值,确保第一个B类型的速度能覆盖它
    double max = -1.0;
    for(int index = 0; index < numOfPitches; index++){
        if(pitchType[index] == pitchToFind){
            // 第一次遇到B类型直接赋值,后续每次比较更新最大值
            if(max < 0 || pitchSpeed[index] > max){
                max = pitchSpeed[index];
            }
        }   
    }
    // 遍历完成后输出结果
    if(max != -1.0){
        printf("%.1lf\n", max);
    } else {
        printf("未找到指定类型的球速数据\n");
    }
}

针对你的数据的输出结果

用你提供的测试数据,修复后的代码会输出95.1,这是所有B类型球速(89.7、95.1、92.3、94.7、88.9、91.5)中的最大值。

内容的提问来源于stack exchange,提问作者user21600183

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 21:45:01