删除此输出中的尾随 '+' 符号,该符号由 C 中的双 for 循环产生

Remove trailing '+' sign in this output resulting from double for loops in C

在附加的代码中,如何修改它以删除尾随的“+”符号。

int i,j,sum;
sum=1;

for(i=2; i<=10; i++) {
    for(j=1; j<(i+1); j++) {
        sum = sum + 1;
        printf("%d + ",j);
    }
    printf(" = %d", sum);
    printf("\n");
}

return EXIT_SUCCESS;

}

这是输出:

1 + 2 +  = 3
1 + 2 + 3 +  = 6
1 + 2 + 3 + 4 +  = 10
1 + 2 + 3 + 4 + 5 +  = 15
1 + 2 + 3 + 4 + 5 + 6 +  = 21
1 + 2 + 3 + 4 + 5 + 6 + 7 +  = 28
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 +  = 36
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 +  = 45
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 +  = 55
  

例如你可以按以下方式进行

for(j=1; j<(i+1); j++) {
    sum = sum + 1;
    if ( j != 1 ) printf( " + " );
    printf("%d",j);
}

你不能'remove'输出;你必须避免生成它。

一种方法是使用:

for (int i = 2; i <= 10; i++)
{
    int sum = 0;
    const char *pad = "";
    for (int j = 1; j <= i; j++)
    {
        sum += j;
        printf("%s%d", pad, j);
        pad = " + ";
    }
    printf(" = %d\n", sum);
}

请注意,这会更直接地重新计算 sum,在内循环之前将其设置为零。它还最小化了变量的范围。

您可以在外循环中设置和打印初始值。在我看来,也使它更具可读性。 此外,您可以使用 j 而不是 sum+1 作为加数

for (int i = 2; i <= 10; i++) {
    int sum = 1;
    printf("%d", sum);
    for (int j = 2; j<(i + 1); j++) {
        sum += j;
        printf(" + %d", j);
    }
    printf(" = %d", sum);
    printf("\n");
}