帮我检查一下这段代码的错误

kearo 2006-12-19 11:28:07
题目是要求用二维数组来存储三年来每月的书的销售数量,并且求出每年的总量,以及三年的全部总量。
我编译得出的结果是一大串负数,不知道问题出在哪,实在是找不出来。


#include <iostream>
#include <string>
const int months = 12;
const int years = 3;

int main()
{
using namespace std;
const string month[months] =
{
"January ",
"Feburary ",
"March ",
"April ",
"May ",
"June ",
"July ",
"August ",
"September",
"October ",
"November ",
"December "
};
int sales[years][months];
int sum1 ,sum2, sum3;
sum1 = 0;
sum2 = 0;
sum3 = 0;
int sum = 0;
cout << "请输入02-04年每月的书销量" << endl;
for (int Month = 0; Month < months; ++Month)
{
cout << month[Month] << ": \t";
for (int year = 0; year < years; ++year)
{
cin >> sales[years][months];
cout << "\t";
};
cout << endl;
};
for (int i = 0; i < months; ++i)
{
sum1 += sales[0][months];
sum2 += sales[1][months];
sum3 += sales[2][months];
};
sum = sum1 + sum2 +sum3;
cout << "02年总销售量: " << sum1 << endl;
cout << "03年总销售量: " << sum2 << endl;
cout << "04年总销售量: " << sum3 << endl;
cout << "02-04年的总销售量: " << sum << endl;

return 0;
}
...全文
161 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyy1089 2006-12-19
  • 打赏
  • 举报
回复
是 啊,怎么清0。我也想知道,楼主得编译方法很正规啊。
sharpoo7 2006-12-19
  • 打赏
  • 举报
回复
for (int year = 0; year < years; ++year)
{
cin >> sales[years][months];
~~~~~~~year?

cout << "\t";
};
DonaldKnuth 2006-12-19
  • 打赏
  • 举报
回复
下面两个地方错了,改了就好了

#include <iostream>
#include <string>
const int months = 12;
const int years = 3;

int main()
{
using namespace std;
const string month[months] =
{
"January ",
"Feburary ",
"March ",
"April ",
"May ",
"June ",
"July ",
"August ",
"September",
"October ",
"November ",
"December "
};
int sales[years][months];
int sum1 ,sum2, sum3, sum;
sum1 = sum2 = sum3 = sum =0;

cout << "请输入02-04年每月的书销量" << endl;
for (int Month = 0; Month < months; ++Month)
{
cout << month[Month] << ": \t";
for (int year = 0; year < years; ++year)
{
//cin >> sales[years][months]; //数组下标错误
cin >> sales[year][Month]; //这里的两个数组下标变量的问题
cout << "\t";
};
cout << endl;
};
for (int i = 0; i < months; ++i)
{
//sum1 += sales[0][months];//数组下标错误
//sum2 += sales[1][months];
//sum3 += sales[2][months];
sum1 += sales[0][i]; //这里的数组下标用i,你用的是最大值months
sum2 += sales[1][i];
sum3 += sales[2][i];
};
sum = sum1 + sum2 +sum3;
cout << "02年总销售量: " << sum1 << endl;
cout << "03年总销售量: " << sum2 << endl;
cout << "04年总销售量: " << sum3 << endl;
cout << "02-04年的总销售量: " << sum << endl;

return 0;
}
kearo 2006-12-19
  • 打赏
  • 举报
回复
怎么清零啊?
healer_kx 2006-12-19
  • 打赏
  • 举报
回复
int sales[years][months];
这个没有清零.
healer_kx 2006-12-19
  • 打赏
  • 举报
回复
应该是某个变量没有初始化,
但是总得来讲,楼主的习惯很好.继续努力.
kearo 2006-12-19
  • 打赏
  • 举报
回复
对对对,是下标错误,粗心了,多谢大家指点!
ReachZh 2006-12-19
  • 打赏
  • 举报
回复
Error:
1:
cin >> sales[years][months];
2:
sum1 += sales[0][i];
sum2 += sales[1][i];
sum3 += sales[2][i];
realrukawa 2006-12-19
  • 打赏
  • 举报
回复
虽然没仔细看,我也觉得
for (int i = 0; i < months; ++i)
{
//sum1 += sales[0][months];//数组下标错误
//sum2 += sales[1][months];
//sum3 += sales[2][months];
sum1 += sales[0][i]; //这里的数组下标用i,你用的是最大值months
sum2 += sales[1][i];
sum3 += sales[2][i];
};
这个循环看起来十分古怪,把12月的sales连续加12次?
realrukawa 2006-12-19
  • 打赏
  • 举报
回复
int sales[years][months]={0};

//sum1 += sales[0][months];//数组下标错误
//sum2 += sales[1][months];
//sum3 += sales[2][months];
这个地方我也略有疑问,同上面解答,“这里的数组下标用i,你用的是最大值months”
kearo 2006-12-19
  • 打赏
  • 举报
回复
不对吧,我这个数组下标应该没问题吧?应该是这样啊。

for (int Month = 0; Month < months; ++Month)
{
cout << month[Month] << ": \t";
for (int year = 0; year < years; ++year)
{
cin >> sales[year][Month]; //新定义的两个变量,让它们在之前定义的常量范围内递增。
cout << "\t";
};

64,643

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧