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

C++ 如何实现输出程序中得分最高的球员信息

修改方案

你的原始代码核心问题是混淆了「最高得分值」和「得分最高球员的数组下标」两个概念:你把high变量同时用来存储得分值,又当做数组下标访问p[high],会直接导致访问到错误球员甚至数组越界崩溃。


具体修改步骤

  • 拆分两个独立变量:一个存储最高得分值,一个专门存储得分最高球员在数组中的下标
  • 增加边界判断,当传入的球员数组为空时直接返回,避免非法内存访问
  • 循环中只要发现当前球员得分高于已记录的最高分,就同步更新最高得分和对应下标
  • 修正输出语句的空格问题,避免输出内容粘连

修改后的完整代码

void showHighest(Player p[], int size)
{
    // 边界判断:数组为空直接返回
    if (size <= 0) {
        cout << "无有效球员数据" << endl;
        return;
    }
    // 初始默认第一个球员为得分最高
    int highScore = p[0].points;
    int highIndex = 0;

    for (int counter = 1; counter < size; counter++)
    {
        if (p[counter].points > highScore)
        {
            highScore = p[counter].points;
            highIndex = counter;
        }
    }
    cout << "The player with the most points was: " << p[highIndex].name << " with " << highScore << " amount of points." << endl;
}

逻辑说明

  • 初始默认第一个球员为最高分,遍历从第二个元素开始即可,减少一次无意义比较
  • 若存在多个球员同分最高,当前逻辑会返回第一个出现的最高分球员,如果需要返回所有同分最高球员,可以额外增加列表存储所有符合条件的下标即可
  • 该逻辑兼容得分存在负数的场景,通用性更强

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 10:57:04