题目描述
某个幼儿园里,有5位小朋友编号依次为 1,2,3,4,5 他们按照自己的编号顺序围坐在一张圆桌旁。他们身上有若干糖果,现在他们玩一个分糖果游戏。从 1号小朋友开始,将自己的糖果均分成3 份(如果有多余的糖果,就自己立即吃掉),自己留一份,其余两份分给和他相邻的两个小朋友。接着 2,3,4,5 号小朋友也这样做。问一轮结束后,每个小朋友手上分别有多少糖果。
输入格式
一行, 5个用空格隔开的 int
范围内的正整数,分别是游戏开始时 1,2,3,4,51,2,3, 号小朋友手里糖果的数量。
输出格式
2 行,第 1行是用一个空格隔开的 55 个整数,表示一轮游戏结束后 1,2,3,4,5 号小朋友手里糖果的数量。第 2 行是一个整数,表示一轮游戏过程中吃掉的糖果的总数。
输入输出样例
输入 #1复制
8 9 10 11 12
输出 #1复制
11 7 9 11 6
6
错误代码1:
#include "stdio.h"
int main()
{
int x1,x2,x3,x4,x5;
scanf("%d %d %d %d %d",&x1,&x2,&x3,&x4,&x5);
x1=x1/3;
x2=(x2+x1)/3;
x1=x1+x2;
x3=(x3+x2)/3;
x2=x2+x3;
x4=(x4+x3)/3;
x3=x3+x4;
x5=(x5+x4)/3;
x4=x4+x5;
x1=(x5+x1)/3;
printf("%d %d %d %d %d",x1,x2,x3,x4,x5);
return 0;
}
注意:没仔细看题目。
错误代码2:
#include "stdio.h"
int main()
{
int x1,x2,x3,x4,x5;
scanf("%d %d %d %d %d",&x1,&x2,&x3,&x4,&x5);
x1=x1/3;
x2=(x2+x1)/3;
x1=x1+x2;
x3=(x3+x2)/3;
x2=x2+x3;
x4=(x4+x3)/3;
x3=x3+x4;
x5=(x5+x4)/3;
x4=x4+x5;
x1=(x5+x1)/3;
printf("%d %d %d %d %d",x1,x2,x3,x4,x5);
return 0;
}
错误原因:写得太乱了,感觉不太好分析,要一个一个慢慢分析。
用数组,整理一个一个来
#include "stdio.h"
int main()
{
int a[5];
int eaten=0;
scanf("%d %d %d %d %d",&a[0],&a[1],&a[2],&a[3],&a[4]);
{
eaten+=a[0]%3;
a[0]/=3;
a[4]+=a[0];
a[1]+=a[0];
}
{
eaten+=a[1]%3;
a[1]/=3;
a[0]+=a[1];
a[2]+=a[1];
}
{
eaten+=a[2]%3;
a[2]/=3;
a[1]+=a[2];
a[3]+=a[2];
}
{
eaten+=a[3]%3;
a[3]/=3;
a[2]+=a[3];
a[4]+=a[3];
}
{
eaten+=a[4]%3;
a[4]/=3;
a[3]+=a[4];
a[0]+=a[4];
}
printf("%d %d %d %d %d\n",a[0],a[1],a[2],a[3],a[4]);
printf("%d",eaten);
return 0;
}