分糖果:幼儿园里有3个小朋友,编号分别是1、2、3,他们按自己的编号顺序围坐在一张圆桌旁,每个小朋友的面前分别有8、9、10颗糖果。现在做一个分糖果游戏,从1号小朋友开始,将自己的糖果平均分成三份(如果有多余的糖果,则自己立刻吃掉)。自己留一份,其余两份分给相邻座位的两个小朋友。接着,2号、3号小朋友也同样这么做,请问一轮后,每个小朋友前面有多少颗糖果?(用C语言解答)
时间: 2023-05-19 07:03:33 浏览: 331
假设每个小朋友初始时分别有8、9、10颗糖果,按照题目要求,第一个小朋友将自己的糖果平均分成三份,留一份,其余两份分给相邻座位的两个小朋友,那么第一个小朋友手中剩余的糖果数为:
(8 / 3) + (8 % 3) = 2 + 2 = 4
第一个小朋友将其中两份分给相邻座位的两个小朋友,那么第二个小朋友手中的糖果数为:
(9 / 3) + (4 / 2) = 3 + 2 = 5
第二个小朋友同样将其中两份分给相邻座位的两个小朋友,那么第三个小朋友手中的糖果数为:
(10 / 3) + (5 / 2) = 3 + 2 = 5
因此,每个小朋友前面有5颗糖果。
以下是用C语言实现的代码:
#include <stdio.h>
int main()
{
int candies[3] = {8, 9, 10}; // 每个小朋友初始时的糖果数
int i, j;
for (i = 0; i < 3; i++) {
int left = candies[i] / 3; // 平均分成三份后每份的糖果数
int remain = candies[i] % 3; // 平均分成三份后剩余的糖果数
candies[i] = left + remain; // 留下一份,其余两份分给相邻座位的两个小朋友
candies[(i+1)%3] += left; // 分给相邻座位的第一个小朋友
candies[(i+2)%3] += left; // 分给相邻座位的第二个小朋友
}
for (j = 0; j < 3; j++) {
printf("第%d个小朋友前面有%d颗糖果\n", j+1, candies[j]);
}
return 0;
}
阅读全文