一、题目
题目描述】
某幼儿园里,有5个小朋友编号为1、2、3、4、5,他们按自己的编号顺序围坐在一张圆桌旁。他们身上都有若干个糖果(键盘输入),现在他们做一个分糖果游戏。从1号小朋友开始,将自己的糖果均分三份(如果有多余的糖果,则立即吃掉),自己留一份,其余两份分给他的相邻的两个小朋友。接着2号、3号、4号、5号小朋友同样这么做。问一轮后,每个小朋友手上分别有多少糖果。
输入格式】
5个小朋友的糖果数。
输出格式】
游戏后5个小朋友的糖果数。(按5位宽度输出)
样例输入】
8 9 10 11 12样例输出】
11 7 9 11 6
二.分析
我们将小朋友的糖果数存放在数组里面,便于我们根据数组的下标来访问糖果数,但是,比较特殊的是,第一个和第五个同学,第一个同学的糖果数需要分给相邻与他的朋友,所以要分给第二个和第五个同学,第五个同学的糖果分给第四个和第一个同学。
题目中说:如果有多余的糖果,则立即吃掉,即就是除法的整除;
题目中说:接着2号、3号、4号、5号小朋友同样这么做,即要用到循环。
三、代码
#include<stdio.h>
int main()
{
int arr[5] = {};
for(int i = 0; i < 5; i++){
scanf("%d",&arr[i]);
}
for(int i = 0; i < 5; i++){
//第一个和第五个元素比较特殊
if(i == 0){
arr[4] += arr[0]/3;
arr[1] += arr[0]/3;
arr[0] /= 3;
}else if(i == 4){
arr[3] += arr[4]/3;
arr[0] += arr[4]/3;
arr[4] /= 3;
}else{
arr[i-1] += arr[i]/3;
arr[i+1] += arr[i]/3;
arr[i] /= 3;
}
}
for(int i = 0; i < 5; i++){
printf("%5d",arr[i]);
}
return 0;
}
欢迎讨论,如有错误还望指正。