我的程序应该找到数字的因子并用它们之间用逗号打印出来。除了最后一个。那里没有逗号。
#include <iostream>
using namespace std;
int main()
{
int number;
cin >> number;
if (number < 1)
{
cout << 0;
}
else if (number == 1)
{
cout << number;
}
for (int i=2; i <= number; i++)
{
while (number % i == 0)
{
number /= i;
cout << i << ", ";
}
}
cout << endl;
return 0;
}
答案 0 :(得分:2)
你想要这样的东西:
for (int i=2; i <= number; i++)
{
while (number % i == 0)
{
number /= i;
cout << i << (number != 1 ? ", " : "");
}
}
答案 1 :(得分:0)
更简单的解决方案:
std::string sep;
for( int i = 2; i <= number; ++i )
{
while( number % i == 0 )
{
std::cout << sep << i;
sep = ", ";
number = i;
}
}
循环中不需要if
但在第一次迭代中sep
是一个空字符串
使用bool最简单的方法是:
bool first = true;
for( int i = 2; i <= number; ++i )
{
while( number % i == 0 )
{
if( !first )
std::cout << ", ";
else
first = false;
std::cout << i;
number /= i;
}
}
接受你的选择。第一个有一些不错的东西,除了它在循环的每次迭代中都将sep重置为相同的值。你可以把if( sep.empty() )
放在它前面。