如何添加" +"在每个有符号整数之间

时间:2015-02-21 17:36:40

标签: c formatting integer printf addition

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

1+2+3+4

我得到的是:

1+2+3+4+

我没有使用任何函数添加'+',我只是在创建'num'的循环中执行以下操作:

printf("%d+", num);

如何删除最后一个'+'?有没有其他充分的方法 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++;
    }
}

3 个答案:

答案 0 :(得分:2)

在没有&#34; +&#34;

之前打印一个数字
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++;
    }
}

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

我有一个花哨的技巧:

您可以在所有数字后打印"\b "(不可见的退格符号和空格)。

\b会将不可见光标向后移动一个符号。然后空格会在上面+“上方”打印并删除它。