[问题]请教一下for与while为什么答案不一样?

楼主: Kashir (Kashir)   2020-09-15 17:24:11
因为最近开始有转职的念头,所以最近有去买一本书在自学【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
作者: kobe8112 (小B)   2020-09-15 17:29:00
其实初期遇到的问题,例如这个,次数少成这样,你把每一轮运算的变量都印出来,就知道是哪边的问题了
作者: derekjj (忘记帐号的男子)   2020-09-15 17:32:00
++
楼主: Kashir (Kashir)   2020-09-15 17:38:00
我有全部列出来,但用for写的运算出来都比while多1。请问我哪里写错了吗?我还是看不出来..已想破头..
作者: kobe8112 (小B)   2020-09-15 17:43:00
想想看for循环的第三个参数在什么时候会执行
楼主: Kashir (Kashir)   2020-09-15 17:51:00
在i<n时a++。这方式是不可行的吗?我默认的值跟while一样还是您指的是顺序问题?
作者: Schottky (顺风相送)   2020-09-15 18:00:00
在 i<n 时没错,问题是哪个位置或说时间点问题就是出在 a++ 的时间点两边不一样啊kobe大在推演循环流程及老二长度等领域上算是权威你用侦错工具去看 for 版 20 行和 while 版 18 行的 a值也能看得出两边的差异
楼主: Kashir (Kashir)   2020-09-15 18:45:00
是return的时间点不对吗?kobe大应该是想让我自己多想想好的,我去用网络上其他的程式侦错看看 Dev C++我按都没
作者: kobe8112 (小B)   2020-09-15 20:53:00
咦..前面这串不是已经揭盅了?XD你两个函式回传的都是a,整个函式中会让a变化的就只有“a++;”,所以显然这两个函式执行a++的次数是不同的,为什么会不同呢? 其实已经告诉你答案了,你只要知道for函式三个运算式中的第三个,总共会执行几次,答案就昭然若揭,你可以撇开这题,单独想/写一个简单for来看看或是直接随便google for的流程图来看一下
楼主: Kashir (Kashir)   2020-09-16 00:04:00
谢谢KOBE大,我再研究一下,目前有发现到a一边是0一边1。
作者: F04E (Fujitsu)   2020-09-16 11:15:00
蛮好奇您想转到哪个行业
楼主: Kashir (Kashir)   2020-09-16 15:57:00
先前有看上资策会的课程,智慧应用微软C#工程师就业养成班但想说先看书自学,毕竟听说阵亡率也是挺高的。想走应用程式设计。我目前工作的发卡机好像都是用这些工具写的~
作者: OSDBNetwork (路人甲)   2020-09-17 05:17:00
for的i++放在下面 https://i.imgur.com/ldViRBH.jpg
作者: nh60211as   2020-09-17 10:10:00
跟while循环有九成像
楼主: Kashir (Kashir)   2020-09-17 15:55:00
谢谢,我终于看懂了。感恩大大

Links booklink

Contact Us: admin [ a t ] ucptt.com