描述
题目来源:CSDN问答
30个孩子,有15个冰淇淋,15个草莓,30个孩子围成一圈,从1开始报数,数到9的孩子分到一个冰淇淋,下一个孩子从1开始数,直到15个冰淇淋全部分完。
跟猴子选大王一个道理,差别是猴子最后只剩下一个,道理是相同的。
代码
#include <stdio.h>
//判断数组中元素等于1的个数是否等于m
int isHalf(int a[],int n,int m)
{
int i,nmb = 0;
for (i = 0;i<n;i++)
{
if(a[i] == 1)
nmb++;
}
if(nmb == m)
return 1;
else
return 0;
}
int main()
{
int a[30];
int i = 0;
int nmb = 1;
//数组初始化为0
for (i = 0;i<30;i++)
a[i] = 0;
i = 0;
printf("给冰淇淋的孩子:\n");
while (1)
{
if (isHalf(a,30,15))
{
break;
}else
{
i++;
if(i ==30)
i = 0;
if (a[i] == 0)
{
nmb++;
if ( nmb == 9)
{
a[i] = 1;
printf("第%2d个孩子\n",i+1);
i++;
if(i == 30)
i = 0;
nmb = 1; //从1开始
}
}
}
}
return 0;
}