标准答案好像有问题

来源:4-10 循环结构之三种循环比较

慕斯卡2483961

2020-09-25 04:20

#include <stdio.h>

int main()
{
    int sum = 0;
    int i = 1;
    int flag = 1;
    while(i<=100)
    {
        i++;
        sum += i * flag;
        flag *= -1;
        printf("%d\n", sum);  // 执行的第一步结果是2,是错误的。虽然最终结果是-50没错,但是第一步是sum += i * flag的时候,i是2
    }
    return 0;
}


写回答 关注

2回答

  • qq_慕雪1432908
    2020-10-04 14:17:59

    可是我觉得i++本来的定义就是先读数,再取值,也就是你把i++放在前面也没关系,因为它会先读取1,再取值为2,所以在第一次循环中实际参加的数就是1

    weixin...

    你试一下3,5,99这些单数就知道答案代码是错的了

    2021-01-19 15:10:56

    共 1 条回复 >

  • 慕斯卡2483961
    2020-09-25 04:23:41
    #include <stdio.h>
    // 正确答案应该是这样
    int main()
    {
        int sum = 0;
        int i = 1;
        int flag = 1;
        
        while(i<=100)
        {
            sum += i * flag;
            flag *= -1;
            i++;
            printf("%d\n", sum);
        }
        return 0;
        
    }


    爱3

    细心!?

    2020-09-29 15:03:29

    共 1 条回复 >

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926209 学习 · 20797 问题

查看课程

相似问题