如何在每个有符号整数之间添加一个“+”

How do I add a "+" in between each signed integer

输出必须像这样(示例):

1+2+3+4

我得到的是:

1+2+3+4+

我没有使用任何函数来添加“+”,我只是在创建 'num':

的循环中执行以下操作
printf("%d+", num);

如何删除最后一个“+”? with printf 还有其他足够的方法吗?我搜索了一堆,只得出将数字存储在数组中然后打印它们的结论;使用删除最后一个字符的函数。问题是,我不允许在这种情况下使用数组..

编辑: 我尝试的另一种方法是在“%d”中使用“+”标志:

printf("%+d", num);

虽然这似乎比我正在做的方法更有效,但我仍然需要删除开头的“+”:

+1+2+3+4

任何帮助都会很好!

编辑: 这是我的循环函数:

int perfectNumGen(int num)
{
    int perfNumAlgo = pow(2, num - 1)*(pow(2, num) - 1);
    int factorNum = 1;

    printf("%d=", num);

    while (factorNum < num)
    {
        if (num % factorNum == 0)
            printf("%+d", factorNum); //this is where i need help

        factorNum++;
    }
}

在没有“+”的情况下打印一个数字

printf("%d", num);

然后循环执行

printf("+%d", num);

根据你的代码。这应该有效

int perfectNumGen(int num)
{
    int perfNumAlgo = pow(2, num - 1)*(pow(2, num) - 1);
    int factorNum = 1;

    printf("%d=", num);

    if (num % factorNum == 0)
        printf("%d", factorNum);
    factorNum++;

    while (factorNum < num)
    {
        if (num % factorNum == 0)
            printf("+%d", factorNum); //this is where i need help

        factorNum++;
    }
}

我同意这不是最好的方法..它确实让代码看起来有点脏..但是执行时间不会受到影响..

在您的循环中,根据迭代次数打印该行。即:

int lim = 4;
for (int num = 0; num < lim; num++)
{
    if (num < lim)
    {
       printf("%d+", num);
    }
    else
    {
       printf("%d", num);
    }
}

我有一个妙招给你:

您可以在所有数字后打印 "\b "(不可见的背面 space 符号和一个 space)。

\b 将不可见的光标向后移动一个符号。然后 space 将在最后 + 打印 "above" 并将其擦除。