c语言10个小孩分糖果问题,数的变幻(十个小孩分糖果)

/****************************************

* File Name : figure.c

* Creat Data : 2015.1.29

* Author : ZY

*****************************************/

/*数的变幻*/

/*十个小孩分糖果*/

/*是个小孩围成一圈分糖果,老师分给第一个小孩10块,第二个小孩2块,第三个小孩8块,

第四个小孩22块,第五个小孩16块,第六个小孩4块,第七个小孩10块,第八个小孩6块,

第九个小孩14块,第十个小孩20块。然后所有的小孩同时将自己手中的糖的一半给右边的

小孩,糖块数为奇数的人可向老师要一块,问经过这样的几次调整后大家手里的糖的块数都一样?

每人各有多少块糖?*/

#include

int j = 0;

int judge(int c[])

{

int i;

for(i = 0;i < 10;i++)//判断每个孩子手中的糖是否相同

{

if(c[0]!=c[i])//不相同返回1

{

return 1;

}

}

return 0;//全相同返回0

}

int print(int s[])//输出数组中每个元素的值

{

int k;

printf(" %2d",j++);

for(k = 0;k < 10;k++)

{

printf("%4d",s[k]);

}

printf("\n");

}

int main(void)

{

static int sweet[10] = {10,2,8,22,16,4,10,6,14,20};

//初始化数组元素

int i,t[10],l;

printf(" child\n");

printf("round 1 2 3 4 5 6 7 8 9 10\n");

printf(" ………………………………………………………………………\n");

print(sweet);//输出每个人手中糖的个数

while(judge(sweet))//若不满足则循环

{

for(i = 0;i < 10;i++)

{

if(0 == sweet[i]%2)

{

t[i] = sweet[i] = sweet[i]/2;//若为偶数则直接分出一半

}

else

{

t[i] = sweet[i] = (sweet[i]+1)/2;//若为奇数则加一然后分出一半

}

}

for(l = 0;l < 9;l++)//将分出的一半糖给右(后)边的孩子

{

sweet[l+1] = sweet[l+1] + t[l];

}

sweet[0]+=t[9];

print(sweet);//输出当前手中的糖数

}

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值