C++实现二维数组第一行求和运行出现异常结果问题求助
问题排查与修复方案
核心问题列表
- 变量未初始化:
sum作为局部变量没有赋予初始值,默认携带内存中的随机垃圾值,累加后结果必然异常。 - 数组下标错误:C++中数组下标从0开始计数,你要取第一行数据应该用
data[0],现有代码的data[1]取的是第二行数据。 - 遍历范围错误:要计算整行总和,列遍历应该从下标0开始,现有代码从下标2开始只累加了每行的后3个元素,漏掉了前2个值。
- 缺少文件读取校验:没有判断文件是否成功打开,若文件路径错误/不存在,数组会被填入随机值,也会导致结果异常。
- 类型冗余:所有数据都是整数,用
int类型存储sum即可,不需要用float。
修复后的完整代码
#include <iostream> #include <fstream> using namespace std; void sumRow(){ int data [10][5]; int sum = 0; // 初始化sum为0 ifstream f("datafile.txt"); // 校验文件打开状态 if (!f.is_open()) { cout << "文件打开失败,请检查文件路径是否正确" << endl; return; } for(int row = 0; row < 10; row++){ for(int column = 0; column < 5; column++){ f >> data[row][column]; } } f.close(); // 遍历第一行所有列求和 for (int column = 0; column < 5;column++){ sum += data[0][column]; } cout << "第一行总和为:" << sum << endl; } int main() { sumRow(); return 0; }
结果验证
你提供的第一行数据为1 19 93 92 87,累加结果为292,运行修复后代码会输出该正确值。
内容的提问来源于stack exchange,提问作者Irsyad Mat Yaakob
相关产品推荐
相关产品推荐

