3 回答

TA貢獻7條經(jīng)驗 獲得超3個贊
代碼是按照你寫的順序從上往下執(zhí)行的,sum += i*flag;? ? (sum+=1*1,sum=1),?肯定第一次打印出來的不是-1,調(diào)換后,flag變成了-1,sum+=1*(-1)

TA貢獻6條經(jīng)驗 獲得超0個贊
兄dei,你應(yīng)該順著你寫的代碼一行一行的往下走,你的初始化數(shù)據(jù)是這樣的:
?int sum = 0; ?//定義計算結(jié)果變量sum
? ? int i = 1; ? ?//定義循環(huán)數(shù)字變量i
? ? int flag = 1; //定義符號狀態(tài)變量flag
例如第一個問題,第一次循環(huán)結(jié)果為什么不是-1 ??
?for(i=1;i<=100;i++)
? ? {
? ? ? ?sum += i*flag;????????//0+=1*1
? ? ? ?flag *= -1;????????????? //1*=-1
? ? }
? ? printf("sum=%d\n",sum);????????//輸出的是sum的值為1
這樣想,第二個問題是不是簡單多了?
?{
? ? flag *= -1;????????????????????//1*=-1
? ? sum += i*flag;?????????????//0+=1*(-1)
?} ?
? printf("sum=%d\n",sum);????????//輸出的是sum的值為-1

TA貢獻33條經(jīng)驗 獲得超21個贊
定義sum為結(jié)果?初始化為0; 而表達式為sum=sum+num; ????????<?==?>?sum=1-2;????//則此時sum已經(jīng)為1; ????????所以第一步應(yīng)該是?sum=0+1;????//此時符號變量flag應(yīng)為正數(shù)[初始化為正] ????????第二步?sum=1-2;??????????????//此時flag為負(fù)?<?==?>sum=1+(-1*2)=1+(-2) 如果你想flag初始化為正,可以最開始賦值:sum=1; 嗯~~~大概是這么個意思
- 3 回答
- 0 關(guān)注
- 2737 瀏覽
添加回答
舉報