2

我有一个打印的数字列表:

1:1、2

1、2、3:1、3、

我如何不在每一行包含最后一个逗号?

for ( int i = 1; i <= x; ++i )
  {
    cout << i << ": ";
    for ( int j = 1; j <= i; ++j )
    {
      if ( i % j == 0 )
      {
        cout << j << ", ";
      }
    }
    cout << endl;
  }
4

4 回答 4

2

尝试这个:

for ( int i = 1; i <= x; ++i )
{
cout << i << ": ";
for ( int j = 1; j <= i; ++j )
{
  if (i==j) {
      cout << j;      
   } else if ( i % j == 0 ) {
       cout << j << ", ";
  }
}
cout << endl;
}
于 2013-10-17T03:54:46.777 回答
1

尝试检查 number 是否是最后一个,例如:

for (int i = 1; i <= x; i++)
{
    cout << i << ": ";
    for (int j = 1; j <= i; j++)
        if (!(i % j))
        {
            if (j != i)
                cout << j << ", ";
            else
                cout << j << endl;
        }
}
于 2013-10-17T03:52:16.773 回答
0
for ( int i = 1; i <= x; ++i )
{
    cout << i << ": ";
    for ( int j = 1; j <= i; ++j )
    {
        if ( i % j == 0 )
        {
            cout << j;
            if (i != j) {
                cout << ", ";
            }
        } 
    }
    cout << endl;
}
于 2013-10-17T03:56:58.460 回答
0

由于您总是输出 1,因此从 2 开始检查

for ( int i = 1; i <= x; ++i )
{
   cout << i << ": 1";
   for ( int j = 2; j <= i; ++j )
   {
        if ( i % j == 0 )
        {
             cout << ", " << j;
        }
   }
   cout << endl;
}

或者,您可以使用分隔符

for ( int i = 1; i <= x; ++i )
{
   char sep = ':'
   cout << i;
   for ( int j = 1; j <= i; ++j )
   {
        if ( i % j == 0 )
        {
             cout << sep << " " << j;
             sep = ',';
        }
   }
   cout << endl;
}
于 2013-10-17T04:09:35.263 回答