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

不太懂,求解答

 for(i=1;i<=100;i++)

    {

       sum += i*flag;

       flag *= -1;

    }  

    printf("sum=%d\n",sum); 

    

    return 0;    

为什么i要乘flag?(flag *= -1;这行的意义又是什么?)为什么要用*这个符号呢?

正在回答

2 回答

flag*=-1;的意思是,flag=flag*(-1);就是说先算出flag*(-1)的值,然后把得出的值再赋给flag。*就是乘号

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

1100001

这段代码是算1-2+3-4+5……-100的和,所以需要在每一次把i的值加给sum之前用flag将i值取负,所以flag需要不断地乘-1,以保证每一次加进sum的值符号都不一样。
2015-12-29 回复 有任何疑惑可以回复我~
#2

86338730 提问者 回复 1100001

为什么flag要乘1呢,直接flag=—1不行吗,因为我算了下,flag*—1这个值始终是不变的啊,
2015-12-30 回复 有任何疑惑可以回复我~
#3

1100001 回复 86338730 提问者

flag=-1的话,flag就永远等于-1了,flag*=(-1)才能每次都改变符号
2015-12-30 回复 有任何疑惑可以回复我~
#4

1100001 回复 86338730 提问者

假设flag的初值为1, 第一次执行 flag*=-1; flag的值变成了-1; 第二次执行 flag*=(-1);相当于将(-1)*(-1)的值赋给flag flag的值又变回1;
2015-12-30 回复 有任何疑惑可以回复我~
#5

86338730 提问者

非常感谢!
2015-12-30 回复 有任何疑惑可以回复我~
#6

86338730 提问者 回复 1100001

终于懂了谢谢
2015-12-30 回复 有任何疑惑可以回复我~
#7

1100001 回复 86338730 提问者

共同提升
2015-12-30 回复 有任何疑惑可以回复我~
#8

虚空神涵

为什么我的没有sum += i*flag; flag *= -1; 这个? 或者说 你们的这个算式是怎么得到的
2016-01-20 回复 有任何疑惑可以回复我~
查看5条回复

sum表示“求和”;那么flag是表示什么??

0 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

不太懂,求解答

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