问题:
10个小孩围成一圈分糖果,老师顺次分给每个人的糖块数为10,2,8,22,16,4,10,6,14,20.。然后按下列规则调整,所有小孩同时把自己的糖果分一半给右边的小孩,糖块数变为奇数的人,再向老师补要一块,问经过多少次调整后,大家的糖块一样多,且每人多少块。
解决:
(1)定义整形数组存放初始条件
int sweet[10]={10,2,8,22,16,4,10,6,14,20};
(2)循环结构实现框架
while(judge(sweet))
{
for(i=0;i<10;i++)//将糖果分成一半
if(sweet[i]%2==0)
t[i]=sweet[i]=sweet[i]/2;
else
t[i]=sweet[i]=(sweet[i]+1)/2;
for(i=0;i<9;i++)//把一半给右边的孩子
sweet[j+1]=sweet[j+1]+t[j];
sweet[0]+=t[9];//围成一圈
}
(3)定义judge函数判断糖果是不是一样
int judge(int c[])
{
int i;
for(i=0;i<10;i++)
if(c[0]!=c[i])
return 1;
return 0;
}