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

C++新手求助:如何用void函数找出数组最高分并显示对应标题?

问题分析与代码修正:找出数组最高分及对应游戏标题

作为C++新手,你想要实现一个void函数来找出数组中的最高分,并显示该分数对应的游戏标题。当前你的代码存在几个关键问题,下面是修正思路和正确代码:

原代码的问题

  • 错误地用单个string类型存储分数和标题数组,单个string是单条字符串,不是数组结构,无法存储多个元素
  • 循环逻辑错误:每次循环都会输出结果,且没有记录最高分对应的标题,只是修改了第一个位置的分数值
  • 没有考虑数组长度的通用性,固定遍历5个元素,同时参数传递方式会导致数组拷贝,效率低且不符合需求

修正后的代码

#include <iostream>
#include <string>
using namespace std;

void getHighestGraphics(const string GraphicScore[], const string TitlesArray[], int size) 
{
    // 处理空数组的情况
    if (size <= 0) {
        cout << "数组为空,无法查找最高分" << endl;
        return;
    }

    // 初始化最高分的索引为第一个元素的位置
    int highestIndex = 0;
    
    // 从第二个元素开始遍历数组
    for (int count = 1; count < size; count++) {
        // 比较分数,若当前元素分数更高,更新最高分索引
        // 注意:如果分数是数值(如int/double),建议转成对应类型再比较,字符串比较数字可能有bug
        if (GraphicScore[highestIndex] < GraphicScore[count]) {
            highestIndex = count;
        }
    }

    // 输出最终结果
    cout << endl << "画面评分最高的游戏是《" << TitlesArray[highestIndex] << "》,分数为" << GraphicScore[highestIndex] << endl;
}

// 调用示例
int main() {
    string scores[] = {"8.5", "9.2", "7.8", "9.5", "8.8"};
    string titles[] = {"游戏A", "游戏B", "游戏C", "游戏D", "游戏E"};
    getHighestGraphics(scores, titles, 5);
    return 0;
}

关键修改说明

  • 函数参数改为const string[],明确接收数组,同时用const保证不修改原数组,新增size参数让函数适配不同长度的数组
  • 用highestIndex记录最高分的位置,不修改原数组数据,避免破坏输入内容
  • 循环结束后只输出一次最终结果,符合需求中"找出最大值并显示对应标题"的目标
  • 增加了空数组判断,避免非法访问
  • 如果你的分数是数值类型(比如整数或小数),建议把GraphicScore的类型改成int[]或double[],字符串比较数字会出现逻辑错误(例如字符串"10"会被认为小于"9")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 11:55:25