办法如下: 猴子按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));
}
运行结果:


















