作者Frodera (臼魔導士)
看板C_and_CPP
標題[問題] 看不太懂這個程式(新手問題) for迴圈
時間Mon Oct 19 21:55:15 2009
新手上路...請鞭小力一點...
*試撰寫一程式,利用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
推 VictorTom:^ 在C/C++裡是XOR的意思, 不是幾次方的意思, 你要寫平方 10/19 21:56
→ VictorTom:有教#define的話就用#define寫一個, 沒教就乖乖算i*i. 10/19 21:57
→ VictorTom:另外, ^(-1) 這個應該是連數學邏輯都錯了, 是*(-1)吧?? 10/19 21:58
→ VictorTom:a += b 就是 a = a + b 的意思, 你自己的code裡判斷奇偶 10/19 21:59
→ Frodera:謝謝 我已經把^改成*了!!!雖然答案還是不對...orz 10/19 21:59
→ VictorTom:數後就直接assign給sum也不太對, 應該用 += 把結果'加' 10/19 22:00
→ VictorTom:進sum裡. 看你原來的code其實已經七七八八了, 先搞定自 10/19 22:00
推 conan77420:冪次沒記錯的話是pow(x,y)吧~ 0.0 10/19 22:00
→ VictorTom:己的版本吧; 課本的code當然有時間也把它看懂最好, 但是 10/19 22:00
→ VictorTom:一碼歸一碼, 你的code快完成了, 有點信心寫好它來:) 10/19 22:01
→ VictorTom:他的case還不必用pow()去算....@_@" 10/19 22:01
→ Frodera:好的,謝謝!!我再去試驗一下!! 10/19 22:01
→ VictorTom:不過如果不是平方, 是任意(含小數)的a的b次方就要用 10/19 22:02
→ VictorTom:pow()了....XD 10/19 22:02
→ Frodera:sorry冪次似乎我還沒有學到...=D=""" 10/19 22:02
推 VictorTom:我忘了一個一方, i/2這樣可沒辦法判斷是不是奇偶數喔!! 10/19 22:07
→ VictorTom:奇偶數, 就是判斷一個數是不是2的倍數, 它用的operator 10/19 22:08
→ VictorTom:不是 / , 是什麼請想一想或查書, 不然小弟我覺得您似乎 10/19 22:08
→ VictorTom:有些operator沒有搞清楚是在做什麼的喔^^|| 10/19 22:09
推 conan77420:沒仔細看文XD V大真是好人,常看到在服務版友~ 10/19 22:16
推 VictorTom:pu~~因為什麼都不會, 所以只好多來看看學習啊....XD 10/19 22:20
→ Frodera:咦???除二等於零不就是偶數嗎??@@ 10/19 22:27
→ Frodera:呃的確我目前還搞不太清楚狀況...我第一次接觸程式語言orz 10/19 22:28
推 VictorTom:1. 一個(正)整數除以二的"??"為零時才是偶數....?? 10/19 22:33
→ VictorTom:2. 順便一題, C/C++裡, 數值運算要考慮其型態, 新手容易 10/19 22:34
→ VictorTom: 撞到一個問題是: 整數 除以 整數 結果還是只有 整數 10/19 22:34
→ VictorTom: 也就是, int i=3/2; a值為1. float f=3/2; f值為1.0. 10/19 22:35
→ VictorTom:如果浮點數還沒學到就別管2.了, 再想一想第1.點吧:) 10/19 22:36
→ Frodera:唔唔...原來如此orz似乎有點懂了...真的很感謝指導 10/19 22:42
→ Frodera:所以用求餘數(%)的方式去算才是對的...@@ 10/19 23:27
推 VictorTom:mm~~你得到它了:) 10/19 23:35