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
相关产品推荐
相关产品推荐

