为什么偶数整数的输出不能正常工作

时间:2014-10-16 10:26:55

标签: c

示例输入:

4

输出:

0 2 4 6

为什么这不能正常工作?

int main()
{
    int i, n, sum = 0;
    scanf("%d", &n);
    for(i = 1; i <= n; i++)
    {
        if ( i % 2 == 0)
            sum += i;
        printf("%d ", sum);
    }
    return 0;
}

3 个答案:

答案 0 :(得分:0)

        int i,j, count = 0, n, sum = 0;
        scanf("%d", &n);           

        for (j = 0;; j++) {
            if (j % 2 == 0) {
                printf("%d", j);
                count++;
                if (count == n) {
                    break;
                }
            }

        }

答案 1 :(得分:0)

执行引用代码时得到的答案不会是0,2,4,6,因为当i的值是2的倍数时,您已将i的值添加到每个实例的前一个sum值。  所以根据您的代码流程

  • 当i = 1时,你打印0,因为这会打印和的值而不添加i
  • 当i = 2时,你有2个打印,因为这会在添加i之后打印sum的值,即2
  • 当i = 3时你有2个打印,因为这会打印当前的总和值而不添加i是2
  • 当i = 4时你有6个打印,因为这会在添加i之后打印当前的sum值,因此2 + 4 = 6

要获得您想要的输出,您应该将2添加到之前的sum值而不是添加i。 即

int main()
{
    int i, n, sum = 0;
    scanf("%d", &n);
    for(i = 0; i <= n; i++)
    {
        if ( i % 2 == 0){
           printf("%d ", sum);
           sum += 2;
        }
    }
    return 0;
}

答案 2 :(得分:0)

您似乎希望打印出最大为用户提供值的偶数值。这样做:

#include <stdio.h>

int main(void)
{
    int n;
    scanf("%d", &n);
    for(int i = 2; i <= n; i++)
    {
        if (i % 2 == 0)
        {
            printf("%d ", i);
        }
    }
    return 0;
}