方法一:
#include <stdio.h>
int main()
{
int a[15]={0};//初始化猴子全没出局 值为0
int count=0;//排除的猴子数量
int key=0;//剩下的数据索引,即最后要得到的是数组中第几只猴子是大王
int i=0,index=0;//i代表计数器1-7,index代表数组下标
while(count<14)//当猴子数量是14只得时候说明只剩下一只猴子了,那么这只猴子就是大王!
{
if(a[index]==0)//代表没出局的猴子,等于1代表出局
{
i++;//报数计数器自增
if(i==7)//如果计数器报到7时
{
a[index]=1;//这个猴子出局,其值赋为1
count++;//出局的猴子数量加1
i=0;//报数计数器重新开始计数
}
else//意思是报数计数器 还没有报到7
{
key=index;//把数组下标赋值给key
}
}
index++;//数组下标加1
if(index==15)//循环
{
index=0;//重新设置数组索引 为0
}
}
printf("大王是第%d只猴子\n",(key+1));
return 0;
}
方法二:
#include<stdio.h>
int main()
{
int r=0;
for(int i=2;i<=15;i++)
{
r=(r+7)%i;
}
r=r+1;
printf("%d\n",r);
}