无法弄清楚为什么这个输出格式化循环无限

时间:2014-04-11 22:03:39

标签: c++

我的程序应该从用户输入中获取一个数字,确定它是否为素数,然后如果不是,则输入输入数字5的因子到一行。 5到线部分是一切都变得混乱的地方,我写的循环应该可以正常工作,但无论我多么改变它,它会做两件事之一,1)无论是新的还是新的行或第一个因子,或2)输出每个因子5的一行。这是代码:

 else
      {
          cout << "\nNumber is not prime, it's factors are:\n";
           for (int x = 2; x < num; x++)
          {

              factor=num%x;
              if (factor==0)
               {
                  int t=0;
                   cout << x << "\t";
                   t++;

                  for (int t; t <= 5; t++) // THE TROUBLE LOOP
                      {
                          if(t>=5)
                         {
                        t=0;
                        cout << endl;
                         }
                      }
               }

          }
      }

3 个答案:

答案 0 :(得分:7)

替换循环中t的声明,因为您在循环之前声明了t

for(; t <= 5; t++)

在循环声明中使用int t,您将t覆盖为具有垃圾值的未初始​​化变量。

除了此问题之外,您的循环是无限的,因为只要t等于0,您就会将5重置为{{1}}。

答案 1 :(得分:1)

在for循环中更改

int t

t=0

for(int t,t<=5,t++)

导致问题的int t部分。

答案 2 :(得分:0)

@GGW

或者这个:

    int t = 0;
    //some code
    for(t; t <= 5; t++)
    //more code