当前位置 : 主页 > 编程语言 > c语言 >

3个可乐瓶可以换一瓶可乐,现在有364瓶可乐。问一共可以喝多少瓶可乐,剩下几个空瓶?

来源:互联网 收集:自由互联 发布时间:2023-10-08
这是一道以数学问题为背景下的编程问题,对于小白来说可能不好下手,本题主要以思路为主,体现如何把数学思维转化为编程思维,把数学算法转化为编程算法。 3个可乐瓶可以换一

这是一道以数学问题为背景下的编程问题,对于小白来说可能不好下手,本题主要以思路为主,体现如何把数学思维转化为编程思维,把数学算法转化为编程算法。

3个可乐瓶可以换一瓶可乐,喝的可乐总数就等于喝的加换的,开始有364瓶可乐,我们要从最初的条件入手,摆脱数学想一步求一步的思想,一切以最初条件为着手点,去推演适合编程的普遍规律。

第一次换:

喝的总数:                            喝   +   换

                                            364 +  364/3

此时剩的空瓶有:         换过喝的   +  没凑上换的

        364/3   +   364%3

第二次换:

喝的总数:               第一次喝的    +   第一次空瓶换的

(364  + 364/3)  +  (364/3   +   364%3)/3

此时剩的空瓶有:   第一次剩下的空瓶/3    +   第一次剩下的空瓶%3

                        (364/3   +   364%3)/3  +  (364/3   +   364%3)%3

此时根据前两次的规律,我们已经不难发现规律了,现在思考控制循环的条件,每3个可乐瓶可以换1瓶可乐,当空的可乐瓶不足3瓶时,就没法再换了,所以循环的条件就是空瓶>=3。

以C#代码为例实现上述算法:

一开始有364瓶可乐,所以int pingNumber = 364;

喝的可乐数记为heNumber,由于364瓶可乐要全部喝掉,所以heNumber初值为364,

即int heNumber = 364;

只要瓶子的数量>=3,就可以兑换一瓶可乐,所以进入循环的条件是pingNumber>=3

整体代码如下:

int pingNumber = 364;
int heNumber = pingNumber;
while (pingNumber > 2)
{
    heNumber += pingNumber / 3;
    pingNumber = pingNumber/3+pingNumber%3;
}
Console.WriteLine("一共能喝"+heNumber+"瓶可乐,还剩"+pingNumber%3+"个空瓶");

所以解这种题如果一开始不是明确地知道思路的话,建议把原始数据代入每一步计算都列出来(而不是想一步算一步,那样只能得到每一步具体的结果,对整体解题帮助不大),用数学归纳的思想去寻找普通规律,把数学思维转化为编程思维,这样编程之路才会越走越远。

上一篇:C语言之预处理,动态库,静态库
下一篇:没有了
网友评论