C++ Can';我不明白为什么这个输出格式化循环是无限的

C++ Can';我不明白为什么这个输出格式化循环是无限的,c++,C++,我的程序应该从用户输入中获取一个数字,确定它是否为素数,如果不是,则将输入数字的因子5输出到一行。5到线的部分是一切都乱七八糟的地方,我写的循环应该可以很好地工作,但不管我如何改变它,它做两件事之一,1)通过新线或第一个因子无限延伸,或2)输出一条每一个因子都有5的线。代码如下: else { cout << "\nNumber is not prime, it's factors are:\n"; for (int x = 2

我的程序应该从用户输入中获取一个数字,确定它是否为素数,如果不是,则将输入数字的因子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;
                         }
                      }
               }

          }
      }
else
{

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

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

for(;t在for循环中更改

int t

它是

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

或者这个:

    int t = 0;
    //some code
    for(t; t <= 5; t++)
    //more code
int t=0;
//一些代码

对于(t;t,请不要滥用撇号:正确的语法是“它的因素是:”你在重复GWW给出的答案。我没有看到任何额外的内容。是的,答案没有发布,因为我在打字。在构建和编译之后仍然会无限。即使你把“int t=0;”放在循环之外?比如:else{int t=0;//的代码(t;t在构建和编译之后仍然是无限的。@user3525452:正如我在回答的末尾提到的,在这个循环中,您的逻辑有问题,因为它始终是无限的。如果您能详细说明它应该做什么,我可能能提供更多帮助。第一个循环所做的是遍历并测试输入数作为素数或者不是,然后输出因子如果数字是非素数,则无限循环应该在输出5个因子后转到新行。@user3525452:您不需要循环来执行此操作。您应该有某种计数器,并检查它是否为
5
,如果是,则打印新行并重置计数器。
    int t = 0;
    //some code
    for(t; t <= 5; t++)
    //more code