霍天青 2015-06-16 06:41 采纳率: 100%
浏览 1680
已采纳

请大家看看这个程序错在哪。谢谢。

图片说明
#include
#include
#include
void monkey(int, int, int);
int main(void)
{
int n;
scanf("%d", &n);
int i;
for (i = 1; i <= n; i++)
{
int n, m, p;
scanf("%d %d %d", &n, &m, &p);
monkey(n, m, p);
}
return 0;
}
void monkey(int n, int m, int p)
{
int *ar = (int *)malloc((n + 1)*sizeof(int));
memset(ar, 0, n + 1);
int out =n;
int now = p - 1;
while (out-1)
{
int i;
for (i = 1; i <= m; i++)
{
if (now + 1 > n)
now = 1;
else
++now;
if (ar[now])
--i;
if (!(ar[now]) && i == m)
ar[now] = 1;
}
--out;
}
printf("%3d\n", now);
free(ar);
}

  • 写回答

5条回答 默认 最新

  • S_一方通行_S 2015-06-16 08:10
    关注

    int i=0;
    while( i<N)//这地方刚打错了,应该看得出
    {
    if(mon[p++])//猴子数组都初始化为1,首次报数为真
    i++;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?