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