C语言报数问题
我写了一段C的报数问题的解答,可是运行却不对,因为刚刚学指针,所以不太名明白哪里错了,希望大神帮忙指出,万分感谢。要求是输入两个正整数 n 和 m( (1<m<n<=50)),有 n 个人围成一圈,按顺序从 1 到 n 编号。从第一个人开始报数,报数 m 的人退出圈子,下一个人从 1 开始重新报数,报数 m 的人退出圈子。如此循环,直到留下最后一个人。请按退出顺序输出退出圈子的人的编号,以及最后一个人的编号。
#include<stdio.h>
int main(void)
{
int count, i, m, n, no;
int num[50];
int *p;
scanf("%d%d", &n, &m);
for(i = 0; i < n; i++)
num[i] = i + 1;
p = num;
/*---------*/
i=0;no=0;count=0;
while(no<n-1)
{
if(p[i]!=0)count++;
if(count==m)
{ no++;
printf("No%d: %d\n", no, *p);
p[i]=0;
count=0;
}
i++;
if(i==n)i=0;
}
p = num;
while(*p == 0)
p++;
printf("Last No is: %d\n", *p);
}