为了账号安全,请及时绑定邮箱和手机立即绑定

标准答案好像有问题

#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;
}


正在回答

3 回答

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

1 回复 有任何疑惑可以回复我~
#1

weixin_慕圣2505535

你试一下3,5,99这些单数就知道答案代码是错的了
2021-01-19 回复 有任何疑惑可以回复我~
#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;
    
}


2 回复 有任何疑惑可以回复我~
#1

爱3

细心!?
2020-09-29 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926019    人
  • 解答问题       20793    个

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

进入课程

标准答案好像有问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信