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

use*_*452 2 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;
                         }
                      }
               }

          }
      }
Run Code Online (Sandbox Code Playgroud)

GWW*_*GWW 7

t因为你t在循环之前声明了,所以替换循环中的声明:

for(; t <= 5; t++)
Run Code Online (Sandbox Code Playgroud)

随着int t在循环声明要覆盖t为未初始化的变量,将有一个垃圾值.

除了这个问题之外,你的循环是无限的,因为只要它等于你就会重置t为. 05