办法如下: 猴子按1,2…n编号围坐一圈, 从第一只开始按1,2,…m报数, 报m的退出, 从下一只开始, 继续循环报数, 剩下的最后一只猴子就是大王, 编程输出大王的序号。
代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int strarray(int* p, int m, int n, int a[])
{
int t = 0, j = 0, i = 0;
for (i = 0; i < n;)
{
p++;
if (p == a + n)
p = a;
if (*p)
{
t++;
if (t == m)
{
j = *p;
*p = 0;
t = 0;
i++;
}
}
}
return j;
}
int main()
{
int m = 0, n = 0, i = 0, a[100] = { 0 };
int* p;
printf("Input the number of Monkey & max to call:");
scanf("%d %d", &n, &m);
for (i = 0; i < n; i++)
a[i] = i + 1;
p = a - 1;
printf("The king is %dth\n", strarray(p, m, n, a));
}