Re: [問題] c++ while指令
: 不超過10000的最大次方
: 對於每個小於10000的正整數A 一定有一個正整數N
: 使得A的N次方小於或等於10000 而A的N+1次方則超過10000
: 現在要寫一個程式 輸入一個整數A 印出對應的N以及A的N次方的值
: int a,b=1,n=0;/*宣告3個變數 並且給定初始值*/
: cout<<"請輸入一個數字"<<endl;
: cin>>a;
: while(a*b<=10000)/*當條件a*b<=10000成立時 跳進去loop執行裡面動作*/
: {
: b=a*b;
: n++;
: }
: cout<<n<<" "<<b<<endl;
: system("PASUE");
: return 0;
: }
: 我的疑問:
: 1.第一行的b=1還有n=0是什麼意思?
: 我沒打指令說n代表次方的次數 為什麼程式知道那是次方的次數?
b=1 n=0都只是為了要達到任何數的1次方都等於本身
還有很多種表示法 可以寫出次方
舉例 a=10時則b=10*1 ->b=10
這樣下次進入loop之前就會變成a*b就變成a的二次方 10*10來判斷是否小於10000
依序變成a的三次方 四次方
電腦 不會知道你的變數是什麼意義 只有人才知道
對他而言 他只是做運算而已 管他是什麼
我們所做的只不過是把人類簡化思考的數學計算方式
變成單純的加減乘除
: 2.while條件為什麼是a*b 不是a*a?
如果你直接a*a就會變成a的兩次方為開頭
你a的一次方就會沒有考慮到(第一次要進入loop就是用a*a來看是否小於10000
可是你a的一次方 還是要算
編譯會過 因為沒有語法錯誤 但是 會有邏輯上的錯誤 也就是答案會有錯
也許不是全錯 但是當某些情況下 你的輸出就會是錯的
: 3.while那邊的大括號裡面的n++為什麼不能打n+1?
至於這點 我不知道推文的那位大大 為什麼說有語法錯誤
因為在邏輯上n++的確等於n+1
那n=n+1也是正確的語法使用
我自己實際測試也沒發現輸出不一樣的地方
有待推文的大大詳細說明
: 我是c++的初學者 昨天從剛開始一直看到switch 到還看的懂
: 就今天看到while 我卡住了 感覺差很多 都不知道為什麼要打那些碼
loop是否執行 都取決於附加條件 條件符合才會進入loop
因此 如何訂定loop條件就是看個人功力
沒有為什麼要打 因為這就是loop的使用語法
: 拜託 c++的大大們替我解說一下 謝謝...
另外 你的解答寫的不是很好
因為光輸出就不知道你輸出什麼東西
光看你輸入一個數字
跑出兩個數字 你知道程式是幹麻用的嗎?
說實在 沒題目 還真不知道是再寫什麼
程式不要只求過 要寫的完善 讓看的人也知道 你再寫什麼
思考上 也要全方面的考慮 不要只侷限於某個條件下會拿到題目要的答案
的圈圈裡 因為這種程式 沒意義
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.164.120.194
推
04/09 02:23, , 1F
04/09 02:23, 1F
→
04/09 02:23, , 2F
04/09 02:23, 2F
→
04/09 02:25, , 3F
04/09 02:25, 3F
推
04/09 02:27, , 4F
04/09 02:27, 4F
→
04/09 02:28, , 5F
04/09 02:28, 5F
推
04/09 02:34, , 6F
04/09 02:34, 6F
→
04/09 02:35, , 7F
04/09 02:35, 7F
→
04/09 02:36, , 8F
04/09 02:36, 8F
→
04/09 02:37, , 9F
04/09 02:37, 9F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
問題
3
25