初学者。所以我试图让这段代码打印出每年的总价值。我为每个价值输入10,而第3年它返回126而我预计为120.其他两年返回正确值120.我无法弄清楚为什么这不起作用意图。
#include <iostream>
int main()
{
using namespace std;
const int Years = 3;
const int Months = 12;
int booksales[Years][Months];
int total[3];
for (int year = 0; year < Years; ++year)
{
int yr_total = 0;
for (int month = 0; month < Months; ++month)
{
cout << "Enter book sales for year " << (year + 1)
<< " month " << (month + 1) << ": ";
cin >> booksales[year][month];
total[year] += booksales[year][month];
}
}
cout << "TOTAL for year 1: " << total[0] << endl;
cout << "TOTAL for year 2: " << total[1] << endl;
cout << "TOTAL for year 3: " << total[2] << endl;
cout << "OVERALL TOTAL: " << total[0] + total[1] + total[2] << endl;
return 0;
}
答案 0 :(得分:6)
您没有初始化数组
int total[3];
因此在本声明中
total[year] += booksales[year][month];
行为未定义。
写
int total[3] = {};
外部循环内的这个声明
int yr_total = 0;
是多余的。该变量未被使用。
答案 1 :(得分:1)
C ++不会将变量初始化为已知值。在这种情况下,您将年度总计汇总为一组未初始化的数据(total
)。令人惊讶的是,第1年和第2年没有表现出类似的问题。
您似乎尝试使用变量yr_total
而不是数组总计来清除此数据。尝试使用以下内容替换年份循环的第一行:total[year] = 0;
答案 2 :(得分:1)
您的代码的主要问题是初始化部分。
理想情况下,您应该初始化整个数组,而不是留下垃圾值。
int total[3] = {};
希望它有所帮助。