[問題] 看不太懂這個程式(新手問題) for迴圈

看板C_and_CPP作者 (臼魔導士)時間14年前 (2009/10/19 21:55), 編輯推噓7(7024)
留言31則, 3人參與, 最新討論串1/2 (看更多)
新手上路...請鞭小力一點... *試撰寫一程式,利用for迴圈計算1平方-2平方+3平方-4平方+...+49平方-50平方的值 抱歉我打不出平方只好用國字表示orz 這是上課的時候老師要我們練習的課本習題... 可是我一直沒有寫成功 還被打了鳥成績 想自己寫卻老是失敗,看解答又看不懂(下面有附錄) 雖然這不是作業但我不甘心所以...(掩面) 問學校助教,他跟我說叫我用偶數奇數方式來想 我就寫了這樣的東西...↓ 當然答案完全不對...orz #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int i,sum=0; for (i=1;i<=50;i++) { if (i/2==0) sum=i^i^(-1); //如i為偶數為true,設sum為i平方x(-1) if (i/2!=0) sum=i^i; //如i為偶數為false,設sum為i平方 } sum+=i; //這一行我還是不太懂它的意思,是從範例題目上抄下來的 printf("ans=%d",sum); system("pause"); return 0; } 課本附上的答案長這樣↓ #include <stdio.h> #include <stdlib.h> int main(void) { int i,j,sum=0; for(i=1,j=2;i<=49;i+=2,j+=2) //這個地方我非常的看不懂QAQ sum+=i*i-j*j; //這個sum+=的部分我也不太能理解他的涵義 printf("1^2-2^2+3^2-4^2+...+49^2-50^2=%d\n",sum); system("pause"); return 0; } 這兩天我一直在看這題 我一直搞不懂 他的for迴圈為什麼是這樣設定 題目明明就是寫到50不是嗎?? 還是我數學不好所以看不懂...orz 雖然課本的範例題目我都做了 一碰到這種需要思考的題目我就會卡住... 還請各位多多指教orz -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.41.86.118

10/19 21:56, , 1F
^ 在C/C++裡是XOR的意思, 不是幾次方的意思, 你要寫平方
10/19 21:56, 1F

10/19 21:57, , 2F
有教#define的話就用#define寫一個, 沒教就乖乖算i*i.
10/19 21:57, 2F

10/19 21:58, , 3F
另外, ^(-1) 這個應該是連數學邏輯都錯了, 是*(-1)吧??
10/19 21:58, 3F

10/19 21:59, , 4F
a += b 就是 a = a + b 的意思, 你自己的code裡判斷奇偶
10/19 21:59, 4F

10/19 21:59, , 5F
謝謝 我已經把^改成*了!!!雖然答案還是不對...orz
10/19 21:59, 5F

10/19 22:00, , 6F
數後就直接assign給sum也不太對, 應該用 += 把結果'加'
10/19 22:00, 6F

10/19 22:00, , 7F
進sum裡. 看你原來的code其實已經七七八八了, 先搞定自
10/19 22:00, 7F

10/19 22:00, , 8F
冪次沒記錯的話是pow(x,y)吧~ 0.0
10/19 22:00, 8F

10/19 22:00, , 9F
己的版本吧; 課本的code當然有時間也把它看懂最好, 但是
10/19 22:00, 9F

10/19 22:01, , 10F
一碼歸一碼, 你的code快完成了, 有點信心寫好它來:)
10/19 22:01, 10F

10/19 22:01, , 11F
他的case還不必用pow()去算....@_@"
10/19 22:01, 11F

10/19 22:01, , 12F
好的,謝謝!!我再去試驗一下!!
10/19 22:01, 12F

10/19 22:02, , 13F
不過如果不是平方, 是任意(含小數)的a的b次方就要用
10/19 22:02, 13F

10/19 22:02, , 14F
pow()了....XD
10/19 22:02, 14F

10/19 22:02, , 15F
sorry冪次似乎我還沒有學到...=D="""
10/19 22:02, 15F

10/19 22:07, , 16F
我忘了一個一方, i/2這樣可沒辦法判斷是不是奇偶數喔!!
10/19 22:07, 16F

10/19 22:08, , 17F
奇偶數, 就是判斷一個數是不是2的倍數, 它用的operator
10/19 22:08, 17F

10/19 22:08, , 18F
不是 / , 是什麼請想一想或查書, 不然小弟我覺得您似乎
10/19 22:08, 18F

10/19 22:09, , 19F
有些operator沒有搞清楚是在做什麼的喔^^||
10/19 22:09, 19F

10/19 22:16, , 20F
沒仔細看文XD V大真是好人,常看到在服務版友~
10/19 22:16, 20F

10/19 22:20, , 21F
pu~~因為什麼都不會, 所以只好多來看看學習啊....XD
10/19 22:20, 21F

10/19 22:27, , 22F
咦???除二等於零不就是偶數嗎??@@
10/19 22:27, 22F

10/19 22:28, , 23F
呃的確我目前還搞不太清楚狀況...我第一次接觸程式語言orz
10/19 22:28, 23F

10/19 22:33, , 24F
1. 一個(正)整數除以二的"??"為零時才是偶數....??
10/19 22:33, 24F

10/19 22:34, , 25F
2. 順便一題, C/C++裡, 數值運算要考慮其型態, 新手容易
10/19 22:34, 25F

10/19 22:34, , 26F
撞到一個問題是: 整數 除以 整數 結果還是只有 整數
10/19 22:34, 26F

10/19 22:35, , 27F
也就是, int i=3/2; a值為1. float f=3/2; f值為1.0.
10/19 22:35, 27F

10/19 22:36, , 28F
如果浮點數還沒學到就別管2.了, 再想一想第1.點吧:)
10/19 22:36, 28F

10/19 22:42, , 29F
唔唔...原來如此orz似乎有點懂了...真的很感謝指導
10/19 22:42, 29F

10/19 23:27, , 30F
所以用求餘數(%)的方式去算才是對的...@@
10/19 23:27, 30F

10/19 23:35, , 31F
mm~~你得到它了:)
10/19 23:35, 31F
文章代碼(AID): #1At6_800 (C_and_CPP)
文章代碼(AID): #1At6_800 (C_and_CPP)