課程
/后端開發
/C
/C語言入門
雖然輸出的結果都是-50 ?但是前兩個代碼表示的是不是2-3+4-5+……-101
2016-08-08
源自:C語言入門 4-10
正在回答
#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",sum);
? ? return 0;
}
/*如果i++ 在?sum+=i*flag; 中i 的值是2,那么循環過程是,2-3+4-5+6-7+8.。。。。。。
問題來了,當 i=100時,while(i<=100)判斷成立,那么?sum+=i*flag;中 i 的值就是101,再
乘以flag.這時slag為負1.因為每逢 i 的值為奇數時flag中都為負1.那么101為負值。-101.
你寫一個程序。計算2-3+4-5+6-7+8-9。。。。。直到100。計算結果。再減去101.
我可以告訴你結果。也是-50.
qq_悲傷可以自行處理_03427709 提問者
我改名字了 回復 qq_悲傷可以自行處理_03427709 提問者
qq_悲傷可以自行處理_03427709 提問者 回復 我改名字了
我改名字了
從最后兩個程序中 i++位置變化 結果也不同。
得出結論。雖然本題中兩種算法得出結果都是-50
但是 結果是偶然的。
老師之所以這么做 ,我想他是故意的,沒有問題就不會有答案 。
謝謝提問者,找出了問題 ?!?。?!
? ? while(i<=10)
? ? ? ? flag*=-2;
? ? printf("i=%d\t",i);
? ? printf("sum=%d\n",sum);
? ? printf("sum=%d",sum);
我想明白了你們看看對不對。
我在vs2013調試了下,結果都是-50,我和你考慮的一樣,我覺得代碼i++;應該放在flag*=-1;后。
湊三個字
這是哪期的?額。。
舉報
C語言入門視頻教程,帶你進入編程世界的必修課-C語言
3 回答參考代碼好像有問題
2 回答參考代碼有不懂
1 回答哪里有問題?。亢蛥⒖即a是一樣的啊
3 回答參考代碼有點不懂
1 回答參考代碼看不懂
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-08-10
#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",sum);
? ? return 0;
}
/*如果i++ 在?sum+=i*flag; 中i 的值是2,那么循環過程是,2-3+4-5+6-7+8.。。。。。。
問題來了,當 i=100時,while(i<=100)判斷成立,那么?sum+=i*flag;中 i 的值就是101,再
乘以flag.這時slag為負1.因為每逢 i 的值為奇數時flag中都為負1.那么101為負值。-101.
你寫一個程序。計算2-3+4-5+6-7+8-9。。。。。直到100。計算結果。再減去101.
我可以告訴你結果。也是-50.
2016-08-10
從最后兩個程序中 i++位置變化 結果也不同。
得出結論。雖然本題中兩種算法得出結果都是-50
但是 結果是偶然的。
老師之所以這么做 ,我想他是故意的,沒有問題就不會有答案 。
謝謝提問者,找出了問題 ?!?。?!
2016-08-10
#include<stdio.h>
int main()
{
? ? int sum=0;
? ? int i=1;
? ? int flag=1;
? ? while(i<=10)
? ? {
? ? ? ? i++;
? ? ? ? sum+=i*flag;
? ? ? ? flag*=-2;
? ? printf("i=%d\t",i);
? ? printf("sum=%d\n",sum);
? ? }
? ? printf("sum=%d",sum);
? ? return 0;
}
2016-08-10
#include<stdio.h>
int main()
{
? ? int sum=0;
? ? int i=1;
? ? int flag=1;
? ? while(i<=10)
? ? {
? ? ? ? sum+=i*flag;
? ? ? ? flag*=-2;
? ? ? ? i++;
? ? printf("i=%d\t",i);
? ? printf("sum=%d\n",sum);
? ? }
? ? printf("sum=%d",sum);
? ? return 0;
}
2016-08-10
#include<stdio.h>
int main()
{
? ? int sum=0;
? ? int i=1;
? ? int flag=1;
? ? while(i<=100)
? ? {
? ? ? ? i++;
? ? ? ? sum+=i*flag;
? ? ? ? flag*=-1;
? ? printf("i=%d\t",i);
? ? printf("sum=%d\n",sum);
? ? }
? ? printf("sum=%d",sum);
? ? return 0;
}
2016-08-10
#include<stdio.h>
int main()
{
? ? int sum=0;
? ? int i=1;
? ? int flag=1;
? ? while(i<=100)
? ? {
? ? ? ? sum+=i*flag;
? ? ? ? flag*=-1;
? ? ? ? i++;
? ? printf("i=%d\t",i);
? ? printf("sum=%d\n",sum);
? ? }
? ? printf("sum=%d",sum);
? ? return 0;
}
2016-08-10
我想明白了你們看看對不對。
2016-08-09
我在vs2013調試了下,結果都是-50,我和你考慮的一樣,我覺得代碼i++;應該放在flag*=-1;后。
2016-08-09
湊三個字
2016-08-08
這是哪期的?額。。