Re: [問題] A的B次方問題

看板C_and_CPP作者 (貓食罐頭)時間16年前 (2009/10/13 21:52), 7年前編輯推噓3(3015)
留言18則, 4人參與, 最新討論串2/2 (看更多)
※ 引述《qwe801031 (嗯哼)》之銘言: : 我是個剛接觸c++的學生 : 老師出了個題目 是2的五次方 : 要我寫個簡單的程式碼 : 我也只會最笨的方式 : int main() : { : int b; : b=2; : printf("%d的五次方=%d",b,b*b*b*b*b); : getch(); : return 0; : } : 就是給他乘個五次 然後印出來 想請教有別的比較方便的方法嗎 : 爬了文實在看不懂 有些都沒教過不太了解 才來問 有請高手 這方法不笨呀 寫程式有很多方式 只要能達成你要的結果 都是好程式 剩下的只是最佳化或更精簡的寫法 你可以引入math.h函式 就是上面多加一行 #include <math.h> 然後把 printf("%d的五次方=%d",b,b*b*b*b*b); 改寫成 printf("%d的五次方=%d",b,(int) pow(b, 5)); pow語法是float pow(float base, float exp); base 為基底 exp 為冪數 輸入為浮點形式 輸出也是浮點 因為輸出是浮點 所以用(int)強制轉為整數 不久後你就會遇到型態轉變方面的問題 不過上課會教 就不特別講解了 補充 unsigned long i = 1; unsigned long a = 2; unsigned int n = 5; while(n) { if(n & 1) { i *= a; } a *= a; n >>= 1; } -- 如果課堂沒教過pow 也沒教過迴圈 那你寫的就算是最佳解之一 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.119.110

10/13 21:56, , 1F
改掉之後出現一個錯誤耶
10/13 21:56, 1F

10/13 21:56, , 2F
error C2668: 'pow' : 模稜兩可的呼叫多載函式
10/13 21:56, 2F

10/13 21:56, , 3F
照著上面的打 請問是什麼意思@@
10/13 21:56, 3F

10/13 21:57, , 4F
把pow裡的b與5之前都多加一個(float)或(double)轉型試試
10/13 21:57, 4F

10/13 21:57, , 5F
另外, 使用pow()之前你可能需要#include <math.h> :)
10/13 21:57, 5F

10/13 21:58, , 6F
#include"math.h" 這個有加了 我試試v大的方法看看@@
10/13 21:58, 6F

10/13 21:59, , 7F
兩個都可以使用 真神奇 謝謝XD
10/13 21:59, 7F
※ 編輯: kikiqqp 來自: 122.116.119.110 (10/13 22:06)

10/13 22:09, , 8F
解釋一下:) pow有float/double/long double三種型態參數
10/13 22:09, 8F

10/13 22:09, , 9F
的overloading, 而你呼叫的時候是傳了兩個int, 所以
10/13 22:09, 9F

10/13 22:10, , 10F
compiler不知道要幫你轉型成上面三種浮點數的哪一種型態
10/13 22:10, 10F

10/13 22:10, , 11F
, 這與函數重載, 強制轉型, 隱式轉型這些東西都有關, 現
10/13 22:10, 11F

10/13 22:10, , 12F
在你可能還沒學到, 如果有興趣有時間你可以先就板上或精
10/13 22:10, 12F

10/13 22:11, , 13F
不過我寫完有試一下 編譯器不同吧 GCC沒報錯
10/13 22:11, 13F

10/13 22:11, , 14F
華區研究一下; 再不然就像k大說的, 以後再慢慢學吧:)
10/13 22:11, 14F

10/13 22:12, , 15F
用g++應該就會報錯了吧?? 我印象中好像是這樣XD
10/13 22:12, 15F

10/13 22:14, , 16F
不知道耶 我用Visual C++ 2008 Express的
10/13 22:14, 16F

10/15 01:52, , 17F
通常初學者,老師都會要學生有邏輯思考的能力
10/15 01:52, 17F

10/15 01:53, , 18F
所以比較不建議用內建的函式吧@@ 我老師跟我說過...
10/15 01:53, 18F
※ 編輯: kikiqqp (49.158.70.171), 04/13/2018 11:40:04
文章代碼(AID): #1Ar8OSF2 (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1Ar8OSF2 (C_and_CPP)