C++ Don';t打印最后一个数字后的空格

C++ Don';t打印最后一个数字后的空格,c++,C++,语言:C++ 您好,在下面的函数(代码块)中,我写了一行来打印字符之间的空格,但是我不希望在最后一个字符之后打印空格。我怎样才能解决这个问题 bool perfecto(int n) { int suma, i; suma = 0; for (i = 1; i < n; i++) { if (n % i == 0) { suma += i; cout << i &l

语言:C++ 您好,在下面的函数(代码块)中,我写了一行来打印字符之间的空格,但是我不希望在最后一个字符之后打印空格。我怎样才能解决这个问题

bool perfecto(int n)
{
    int suma, i;
    suma = 0;
    for (i = 1; i < n; i++)
    {
        if (n % i == 0) 
        {
            suma += i;
            cout << i << " ";
        }
    }
    if (suma == n)
        return true;
    else
        return false;
}
boolperfecto(int n)
{
内苏马,我;
suma=0;
对于(i=1;icout最简单的方法是扭转这个问题:如果在打印数字之前(而不是之后)只打印空格,那么就变成了如何不在第一次打印,这要容易得多


我会让你算出:)

你可以检查I是否等于n-1,在这种情况下不打印它,或者类似的东西

std::cout << "1";
for (int i = 2; i < n; ++i)
{
    std::cout << " " << i;
}

std::cout替换此行:
cout
bool perfecto(int n)
{
内苏马,我;
suma=0;
bool first=true;
对于(i=1;icout有多种选择。在这种情况下,最简单的方法可能是在除第一个元素之外的元素之前打印空格,并使用标志跟踪第一个元素:

bool perfecto(int n)
{
    int suma, i;
    suma = 0;
    bool first = true;
    for (i = 1; i < n; i++)
    {
        if (n % i == 0) 
        {
            suma += i;
            if(!first)
            {
                std::cout << " ";
            }
            else first = false;
            cout << i;
        }
    }
    if (suma == n)
        return true;
    else
        return false;
}
boolperfecto(int n)
{
内苏马,我;
suma=0;
bool first=true;
对于(i=1;istd::难道他没有打印所有的数字,只打印因子。反例:n=6,输出是
1 2 3
。您的代码没有消除尾随空格。在这种情况下,我希望在循环之前有一个
char*space=“”
,然后在循环结束时放入
space=“”,而不是使用bool和if语句
。它可能会使性能略有不同,或者根本没有,但我认为它更可读。谢谢,你的答案有效。最好的回复是有效的。最好的regardsWell接受他的回答!虽然Nick确实有道德上的胜利,那就是成为唯一一个没有错的代码,但我相信他也会欣赏绿色的勾选。
bool perfecto(int n)
{
    int suma, i;
    suma = 0;
    bool first = true;
    for (i = 1; i < n; i++)
    {
        if (n % i == 0) 
        {
            suma += i;

            if ( !first )
            {
                cout << " ";
            }

            cout << i;

            first = false;
        }
    }
    if (suma == n)
        return true;
    else
        return false;
}
bool perfecto(int n)
{
    int suma, i;
    suma = 0;
    bool first = true;
    for (i = 1; i < n; i++)
    {
        if (n % i == 0) 
        {
            suma += i;
            if(!first)
            {
                std::cout << " ";
            }
            else first = false;
            cout << i;
        }
    }
    if (suma == n)
        return true;
    else
        return false;
}