看板 C_and_CPP 關於我們 聯絡資訊
因為最近開始有轉職的念頭,所以最近有去買一本書在自學【C語言教學手冊-第四版】 目前做到第8章的習題時,發現了我用while與for的答案不一樣...想請教一下各位大大 能幫我解釋一下,為甚麼我找出的答案 用for會比while答案多1?我上網查詢網友的寫法 都是用while還沒查到有人用for的寫法... 題目:在《孫子算經》裡(共三卷,據推測約成書於西元400年左右),下卷的第26題, 就是鼎鼎有名的「孫子問題」: 今有物不知其數,三三數之剩二,五五數之剩三,七七數之剩二,問物幾何? 將它翻譯成白話:這裡有一堆東西,不知道有幾個;三個三個去數它們,剩餘二個;五個 五個去數它們,剩餘三個;七個七個去數它們,剩餘二個;問這堆東西有幾個?精簡一點 來說:有一個數,用 3 除之餘 2;用 5 除之餘 3;用 7 除之餘 2;試求此數。 (a) 試找出滿足孫子問題裡的最小整數. (b) 試撰寫一函數 int find(int n), 可以傳回滿足孫子問題裡的第 n 個整數, 然後利 用此函數找出滿足孫子問題的第 5個與第 7個整數. (c) 試利用 (b) 所定義的函數找出前 12個滿足孫子問題的整數. while寫法:http://codepad.org/UNZVcDko for寫法:http://codepad.org/pKNVesfK -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.75.164.46 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1600161854.A.855.html ※ 編輯: Kashir (211.75.164.46 臺灣), 09/15/2020 17:28:16
kobe8112: 其實初期遇到的問題,例如這個,次數少成這樣,你把每一 09/15 17:29
kobe8112: 輪運算的變數都印出來,就知道是哪邊的問題了 09/15 17:30
derekjj: ++ 09/15 17:32
Kashir: 我有全部列出來,但用for寫的運算出來都比while多1。 09/15 17:38
Kashir: 請問我哪裡寫錯了嗎?我還是看不出來..已想破頭.. 09/15 17:42
kobe8112: 想想看for迴圈的第三個參數在什麼時候會執行 09/15 17:43
Kashir: 在i<n時a++。這方式是不可行的嗎?我預設的值跟while一樣 09/15 17:51
Kashir: 還是您指的是順序問題? 09/15 17:52
Schottky: 在 i<n 時沒錯,問題是哪個位置或說時間點 09/15 18:00
Schottky: 問題就是出在 a++ 的時間點兩邊不一樣啊 09/15 18:01
Schottky: kobe大在推演迴圈流程及老二長度等領域上算是權威 09/15 18:02
Schottky: 你用偵錯工具去看 for 版 20 行和 while 版 18 行的 a值 09/15 18:06
Schottky: 也能看得出兩邊的差異 09/15 18:06
Kashir: 是return的時間點不對嗎?kobe大應該是想讓我自己多想想 09/15 18:45
Kashir: 好的,我去用網路上其他的程式偵錯看看 Dev C++我按都沒 09/15 18:47
kobe8112: 咦..前面這串不是已經揭盅了?XD 09/15 20:53
kobe8112: 你兩個函式回傳的都是a,整個函式中會讓a變化的就只有 09/15 20:56
kobe8112: 「a++;」,所以顯然這兩個函式執行a++的次數是不同的, 09/15 20:56
kobe8112: 為什麼會不同呢? 其實已經告訴你答案了,你只要知道for 09/15 20:57
kobe8112: 函式三個運算式中的第三個,總共會執行幾次,答案就昭然 09/15 21:00
kobe8112: 若揭,你可以撇開這題,單獨想/寫一個簡單for來看看 09/15 21:01
kobe8112: 或是直接隨便google for的流程圖來看一下 09/15 21:02
Kashir: 謝謝KOBE大,我再研究一下,目前有發現到a一邊是0一邊1。 09/16 00:04
F04E: 蠻好奇您想轉到哪個行業 09/16 11:15
Kashir: 先前有看上資策會的課程,智慧應用微軟C#工程師就業養成班 09/16 15:57
Kashir: 但想說先看書自學,畢竟聽說陣亡率也是挺高的。想走應用程 09/16 15:58
Kashir: 式設計。我目前工作的發卡機好像都是用這些工具寫的~ 09/16 15:59
OSDBNetwork: for的i++放在下面 https://i.imgur.com/ldViRBH.jpg 09/17 05:17
nh60211as: 跟while迴圈有九成像 09/17 10:10
Kashir: 謝謝,我終於看懂了。感恩大大 09/17 15:55