注册 登录
编程论坛 C++教室

大家帮我看看是怎么回事,急!!!

flysky102 发布于 2008-03-06 11:31, 1188 次点击
我写了个记录一本书3年来每个月的销售情况,并且显示3年中每年的销售量和3年总的销售量,可是当程序运行到第2年的八月的时候程序就说出现了错误需要关闭,这是怎么回事呢?我用的是dev-c++编译器,下面是我的程序:
#include <iostream>
const int Years=3;
const int Months=12;
int main()
{ using namespace std;
  int years,months;
  int xs[years][months];
  long int book1=0;
  long int book2=0;
  long int book3=0;
  long int books;
  for(years=1;years<=Years;years++)
   { for(months=1;months<=Months;months++)
      {cout<<"请输入第"<<years<<"年第"<<months<<"月的销售量";
       cin>>xs[years][months];
        book1=book1+xs[1][months];
        book2=book2+xs[2][months];
        book3=book3+xs[3][months];
        books=book1+book2+book3;
        }
    }
   cout<<"第一年的销售量是:"<< book1;
   cout<<"第二年的销售量是:"<< book2;
   cout<<"第三年的销售量是:"<< book3;
   cout<<"三年总的销售量是:"<<books;
   system("pause");
   return 0;
}
16 回复
#2
flysky1022008-03-06 11:46
55555,怎么还没人来帮帮我呢?
#3
hylhp2008-03-06 11:50
int xs[years][months];
  long int book1=0;
  long int book2=0;
  long int book3=0;
  long int books;
改为:
int xs[Years][Months];
  long int book1=0;
  long int book2=0;
  long int book3=0;
  long int books=0;试试看.
#4
flysky1022008-03-06 11:54
按你说的改了,虽然解决了刚才的问题,但是新问题又出来了,输入到第3年的第2月的销售量时就不停的要求我输入第3年第2月的销售量
#5
flysky1022008-03-06 11:59
还有个问题,我输入的检测数据都是一位数的,如果在要求输入第3年第2月的销售量时输入了2位以上的数那程序就一下子执行完毕了
#6
hylhp2008-03-06 12:14
应该是数组定义错了.
int xs[Years+1][Months+1];
#7
Waiting1592008-03-06 12:18
程序代码:
#include <iostream>
const int Years=3;
const int Months=12;
int main()
{ using namespace std;
  int years,months;
  int xs[Years][Months];
  long int book1=0;
  long int book2=0;
  long int book3=0;
  long int books;
  for(years=0;years<Years;years++)
  { for(months=0;months<Months;months++)
      {cout<<"请输入第"<<years + 1<<"年第"<<months + 1<<"月的销售量: ";
       cin>>xs[years][months];
       switch(years){
        case 0: book1=book1+xs[0][months];break;
        case 1: book2=book2+xs[1][months];break;
        case 2: book3=book3+xs[2][months];break;
        }
       }
  }
  books=book1+book2+book3;
   cout<<"第一年的销售量是:"<< book1 << endl;
   cout<<"第二年的销售量是:"<< book2 << endl;
   cout<<"第三年的销售量是:"<< book3<< endl;
   cout<<"三年总的销售量是:"<<books << endl;
   system("pause");
   return 0;
}
#8
flysky1022008-03-06 12:22
我把程序该成下面这样了,发现可以运行了,但是不知道为什么
int xs[Years][months];//把Months该成了months了
  double  book1=0;  //把int 改成double了
  double  book2=0;
  double  book3=0;
  double books=0;
为什么改成months就可以了呢?
#9
hylhp2008-03-06 12:28
楼主还是把课本上数组的定义和使用看看.自然就明白了
#10
flysky1022008-03-06 12:29
好的,我会看看的
#11
tszhao2008-03-06 12:58
回复8楼:C++中 大写的字母和小写字母是不一样的,算是2个不同的变量
#12
sunkaidong2008-03-06 13:53
#include <iostream>
using namespace std;
const int Years=3;
const int Months=12;
int main()
{
  int years,months;
  int xs[Years][Months]={0};
  long int book1=0;
  long int book2=0;
  long int book3=0;
  long int books=0;
  for(years=0;years<Years;years++)
   {
      for(months=0;months<Months;months++)
      {
          cout<<"请输入第"<<years+1<<"年第"<<months+1<<"月的销售量";
          cin>>xs[years][months];
          fflush(stdin);
          switch(years)
          {
          case 0:
          book1=book1+xs[0][months];
          break;
          case 1:
          book2=book2+xs[1][months];
          break;
          case 2:
          book3=book3+xs[2][months];
          break;
          }
          books=book1+book2+book3;
        }
    }
   cout<<"第一年的销售量是:"<< book1;
   cout<<"第二年的销售量是:"<< book2;
   cout<<"第三年的销售量是:"<< book3;
   cout<<"三年总的销售量是:"<<books;
   system("pause");
   return 0;
}
#13
flysky1022008-03-06 21:39
int xs[Years][Months]={0};  //为什么样这样呢?
#14
sunkaidong2008-03-06 21:52
为了不访问随机值
#15
flysky1022008-03-06 22:18
还不是很懂,能说的更详细点吗?我初学,不要见笑
#16
sunkaidong2008-03-06 22:21
没有也没关系...我只是习惯而已....
#17
flysky1022008-03-06 22:22
哦,谢谢
1