(一)c语言百题趣味题之–分糖问题
前言:
在学习C语言的道路上坎坷而又曲折,怎样提高自己的编程水平,答案很简单:多练。学习没有捷径可严,努力才是真理。接下来给大家带来c语言百题趣味题系列。
问题描述:
十个小孩围成一圈分糖果,老师分给第一个小孩10块,第二个小孩2块,第三个小孩8块,第四个小孩22块,第五个小孩16块,第六个小孩4块,第七个小孩10块,第八个小孩6块,第九个小孩14块,第十个小孩20块。然后所有的小孩同时将手中的糖分一半给右边的小孩;糖块数为奇数的人可向老师要一块。问经过这样几次后大家手中的糖的块数一样多?每人各有多少块糖?
解析:
看到问题先别被吓到,题目虽然很长,看起来好像很复杂,但是把主干抓住就可以迎刃而解。
- 问题对象:有十个小孩,每人的糖数不同,那么我们完全可以用数组去将这十个值储存起来
- 如何操作:将自己手中的一半的糖分给右边,糖块数为奇数的人可向老师要一块,显然我们可以遍历数组将自身的糖减去一半(或者除一半),用另一个的数组保存下来,让这新的数组相邻相加所获得的值更新原来的数组就完成了。
- 什么时候停止交换:当所有人都相同时候,可以写一个判断数组的方法
- 最后:将每次变化后的数组输出出来