这个for循环中缺少什么

时间:2012-04-02 16:29:00

标签: c for-loop

我正试图在屏幕上打印,给出任何数字,如12:

0+12
1+11
2+10
3+9
4+8
5+7
6+6 equal!
7+5
8+4
9+3
10+2
11+1
12+0

为此我写了下面的代码:

#include<stdio.h>

int main (void)
{
    int number, increment;
    scanf("%d", &number);

    for (increment = 0; increment <= number; increment++)
    {
        if ((increment >= 0) && (increment != number)) printf("%d+%d\n", increment, number);
        else if (increment == number) printf("%d+%d equal\n", increment, number);
        else if (number < increment) printf("%d+%d\n", increment, number);
        number--;
    }

    return 0;
}

我的代码输出是:

0+12
1+11
2+10
3+9
4+8
5+7
6+6 equal
// missing part!

仅此而已....我需要在循环中修复哪些东西来显示缺失的部分?

感谢。

3 个答案:

答案 0 :(得分:4)

您正在检查increment <= number并不断减少number.您实际上完全失去了12。你可以这样做:

for (increment = number; increment >= 0; increment--)
{
    ...
}

当然,必须相应地更改循环体。

答案 1 :(得分:3)

为什么你必须让一切变得如此复杂?

for(i=0; i <= num; ++i)
{
    printf("%d+%d%s\n", i, num-i, (i == num-i)? " equal" : "");
}

答案 2 :(得分:0)

我认为它是因为你正在减少数字并使用它一个循环控制变量,这意味着在你添加增量并从数字中获取它只会循环6次而不是你认为它将会的12次。