[問題]請教一下for與while為甚麼答案不一樣?

看板C_and_CPP作者 (Kashir)時間3年前 (2020/09/15 17:24), 3年前編輯推噓2(2028)
留言30則, 7人參與, 3年前最新討論串1/2 (看更多)
因為最近開始有轉職的念頭,所以最近有去買一本書在自學【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

09/15 17:29, 3年前 , 1F
其實初期遇到的問題,例如這個,次數少成這樣,你把每一
09/15 17:29, 1F

09/15 17:30, 3年前 , 2F
輪運算的變數都印出來,就知道是哪邊的問題了
09/15 17:30, 2F

09/15 17:32, 3年前 , 3F
++
09/15 17:32, 3F

09/15 17:38, 3年前 , 4F
我有全部列出來,但用for寫的運算出來都比while多1。
09/15 17:38, 4F

09/15 17:42, 3年前 , 5F
請問我哪裡寫錯了嗎?我還是看不出來..已想破頭..
09/15 17:42, 5F

09/15 17:43, 3年前 , 6F
想想看for迴圈的第三個參數在什麼時候會執行
09/15 17:43, 6F

09/15 17:51, 3年前 , 7F
在i<n時a++。這方式是不可行的嗎?我預設的值跟while一樣
09/15 17:51, 7F

09/15 17:52, 3年前 , 8F
還是您指的是順序問題?
09/15 17:52, 8F

09/15 18:00, 3年前 , 9F
在 i<n 時沒錯,問題是哪個位置或說時間點
09/15 18:00, 9F

09/15 18:01, 3年前 , 10F
問題就是出在 a++ 的時間點兩邊不一樣啊
09/15 18:01, 10F

09/15 18:02, 3年前 , 11F
kobe大在推演迴圈流程及老二長度等領域上算是權威
09/15 18:02, 11F

09/15 18:06, 3年前 , 12F
你用偵錯工具去看 for 版 20 行和 while 版 18 行的 a值
09/15 18:06, 12F

09/15 18:06, 3年前 , 13F
也能看得出兩邊的差異
09/15 18:06, 13F

09/15 18:45, 3年前 , 14F
是return的時間點不對嗎?kobe大應該是想讓我自己多想想
09/15 18:45, 14F

09/15 18:47, 3年前 , 15F
好的,我去用網路上其他的程式偵錯看看 Dev C++我按都沒
09/15 18:47, 15F

09/15 20:53, 3年前 , 16F
咦..前面這串不是已經揭盅了?XD
09/15 20:53, 16F

09/15 20:56, 3年前 , 17F
你兩個函式回傳的都是a,整個函式中會讓a變化的就只有
09/15 20:56, 17F

09/15 20:56, 3年前 , 18F
「a++;」,所以顯然這兩個函式執行a++的次數是不同的,
09/15 20:56, 18F

09/15 20:57, 3年前 , 19F
為什麼會不同呢? 其實已經告訴你答案了,你只要知道for
09/15 20:57, 19F

09/15 21:00, 3年前 , 20F
函式三個運算式中的第三個,總共會執行幾次,答案就昭然
09/15 21:00, 20F

09/15 21:01, 3年前 , 21F
若揭,你可以撇開這題,單獨想/寫一個簡單for來看看
09/15 21:01, 21F

09/15 21:02, 3年前 , 22F
或是直接隨便google for的流程圖來看一下
09/15 21:02, 22F

09/16 00:04, 3年前 , 23F
謝謝KOBE大,我再研究一下,目前有發現到a一邊是0一邊1。
09/16 00:04, 23F

09/16 11:15, 3年前 , 24F
蠻好奇您想轉到哪個行業
09/16 11:15, 24F

09/16 15:57, 3年前 , 25F
先前有看上資策會的課程,智慧應用微軟C#工程師就業養成班
09/16 15:57, 25F

09/16 15:58, 3年前 , 26F
但想說先看書自學,畢竟聽說陣亡率也是挺高的。想走應用程
09/16 15:58, 26F

09/16 15:59, 3年前 , 27F
式設計。我目前工作的發卡機好像都是用這些工具寫的~
09/16 15:59, 27F

09/17 05:17, 3年前 , 28F
for的i++放在下面 https://i.imgur.com/ldViRBH.jpg
09/17 05:17, 28F

09/17 10:10, 3年前 , 29F
跟while迴圈有九成像
09/17 10:10, 29F

09/17 15:55, 3年前 , 30F
謝謝,我終於看懂了。感恩大大
09/17 15:55, 30F
文章代碼(AID): #1VO8W-XL (C_and_CPP)
文章代碼(AID): #1VO8W-XL (C_and_CPP)