COUT<

时间:2015-01-21 15:46:03

标签: c++

为什么变量“calcDayInt”在desDateYear&之间的差异时打印为空白。 todayDateYear是不是超过5?(c ++)

只要变量的差异为5或更小,代码就可以正常运行并给出正确的答案,但只要我在第一个for循环中增加条件的差异并使其变为> 5变量给我一个空的输出。

我尝试更改所有内容并在一张纸上手动完成代码,但我似乎无法使其正常工作。

#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;

int main(int argc, char *argv[])
{
  int i;
  int desDateYear = 21;
  int todayDateYear = 15;
  int calcDayInt = 4;
  int calcDateYear = todayDateYear;  

  if(desDateYear>todayDateYear)
    {
      for (i = 0; i < ((desDateYear-todayDateYear)+1); i++)
      {
          if ((calcDateYear)%4==0)
          {
            for (i=0; i<2; i++)
            {
              calcDayInt++;
              if(calcDayInt==8)
              {
                calcDayInt=1;
              }
            }
          }
          if ((calcDateYear)%4!=0)
          {
              calcDayInt++;
              if(calcDayInt==8)
              {
                calcDayInt=1;
              }
          }
          calcDateYear++;
      }
    }
    cout<<calcDayInt;
    system("PAUSE");
    return EXIT_SUCCESS;
}

1 个答案:

答案 0 :(得分:2)

你陷入无限循环。

内部for循环重用外部循环中的计数器i并覆盖其值。因此永远不会满足外部循环的终止条件,并且循环永远不会完成。

通过将循环标题更改为

,可以为内循环使用不同的变量
for (int i=0; i<2; i++)

如果你能弄清楚为什么它仍适用于某些值以及它开始陷入困境的确切边界,那么你可以获得奖励积分。