c語言入門之 4-10 循環(huán)結(jié)構(gòu)之三種循環(huán)比較?怎么做都是錯的
#include <stdio.h>
int main()
{
? ? /* 小伙伴們:
? ? ? ? ? ?選擇你們認(rèn)為最合理的循環(huán)結(jié)構(gòu)完成功能吧 */
? ? int sum = 0; ?//定義計算結(jié)果變量sum
? ? int i = 1; ? ?//定義循環(huán)數(shù)字變量i
? ? int flag = 1; //定義符號狀態(tài)變量flag
? ?
? ? for(i=1;i<=100;i++)
? ? {
? ? ? ? sum*=i*flag;
? ? ? ? flag*=-1;
? ? } ?
? ? printf("sum=%d\n",sum);?
? ??
? ? return 0; ? ?
}
最適合的應(yīng)該是for循環(huán)了。 問題來了,不太理解, ?flag的意義,求解之一,它本身代表什么,為什么要使用=-1呢?
我按以上代碼輸入,顯示錯誤, ?結(jié)果顯示為sum=0,求告知錯處,
2017-05-25
*- 是之前講的自乘 ? flag*=-1 ?等價于 ?flag = -1*flag = - flag
這就是正負(fù)的變換,負(fù)負(fù)得正,正負(fù)得負(fù),這涉及到負(fù)數(shù)的幾次方問題,如果不懂,最好復(fù)習(xí)下數(shù)學(xué)
然后與i相乘,就會得到這樣的數(shù)列,1,-2,3,-4.....其它就是簡單的數(shù)列求和了。
?sum*=i*flag; ?就明顯用錯了,得用+=,即?sum+=i*flag
2017-05-25
flag就是要一次加的一次減的啊