作者Kashir (Kashir)
看板C_and_CPP
标题[问题]请教一下for与while为甚麽答案不一样?
时间Tue Sep 15 17:24:11 2020
因为最近开始有转职的念头,所以最近有去买一本书在自学【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://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1600161854.A.855.html
※ 编辑: Kashir (211.75.164.46 台湾), 09/15/2020 17:28:16
1F:→ kobe8112: 其实初期遇到的问题,例如这个,次数少成这样,你把每一 09/15 17:29
2F:→ kobe8112: 轮运算的变数都印出来,就知道是哪边的问题了 09/15 17:30
3F:→ derekjj: ++ 09/15 17:32
4F:→ Kashir: 我有全部列出来,但用for写的运算出来都比while多1。 09/15 17:38
5F:→ Kashir: 请问我哪里写错了吗?我还是看不出来..已想破头.. 09/15 17:42
6F:→ kobe8112: 想想看for回圈的第三个参数在什麽时候会执行 09/15 17:43
7F:→ Kashir: 在i<n时a++。这方式是不可行的吗?我预设的值跟while一样 09/15 17:51
8F:→ Kashir: 还是您指的是顺序问题? 09/15 17:52
9F:推 Schottky: 在 i<n 时没错,问题是哪个位置或说时间点 09/15 18:00
10F:→ Schottky: 问题就是出在 a++ 的时间点两边不一样啊 09/15 18:01
11F:→ Schottky: kobe大在推演回圈流程及老二长度等领域上算是权威 09/15 18:02
12F:→ Schottky: 你用侦错工具去看 for 版 20 行和 while 版 18 行的 a值 09/15 18:06
13F:→ Schottky: 也能看得出两边的差异 09/15 18:06
14F:→ Kashir: 是return的时间点不对吗?kobe大应该是想让我自己多想想 09/15 18:45
15F:→ Kashir: 好的,我去用网路上其他的程式侦错看看 Dev C++我按都没 09/15 18:47
16F:→ kobe8112: 咦..前面这串不是已经揭盅了?XD 09/15 20:53
17F:→ kobe8112: 你两个函式回传的都是a,整个函式中会让a变化的就只有 09/15 20:56
18F:→ kobe8112: 「a++;」,所以显然这两个函式执行a++的次数是不同的, 09/15 20:56
19F:→ kobe8112: 为什麽会不同呢? 其实已经告诉你答案了,你只要知道for 09/15 20:57
20F:→ kobe8112: 函式三个运算式中的第三个,总共会执行几次,答案就昭然 09/15 21:00
21F:→ kobe8112: 若揭,你可以撇开这题,单独想/写一个简单for来看看 09/15 21:01
22F:→ kobe8112: 或是直接随便google for的流程图来看一下 09/15 21:02
23F:→ Kashir: 谢谢KOBE大,我再研究一下,目前有发现到a一边是0一边1。 09/16 00:04
24F:→ F04E: 蛮好奇您想转到哪个行业 09/16 11:15
25F:→ Kashir: 先前有看上资策会的课程,智慧应用微软C#工程师就业养成班 09/16 15:57
26F:→ Kashir: 但想说先看书自学,毕竟听说阵亡率也是挺高的。想走应用程 09/16 15:58
27F:→ Kashir: 式设计。我目前工作的发卡机好像都是用这些工具写的~ 09/16 15:59
29F:→ nh60211as: 跟while回圈有九成像 09/17 10:10
30F:→ Kashir: 谢谢,我终於看懂了。感恩大大 09/17 15:55