请兄弟姐妹们帮一把!
#include<stdio.h>#define M 10
#define N 3
void main(void)
{
int a[M], b[M];
int i, j, k=0;
for(i = 0; i < M; i++)
a[i] = i + 1;
for(i=0, j = 0; k<=M-1; i++)
{
if (a[i]==0)
{
if (i==M-1)
i=-1;
continue;
}
if (++j==N)
{
b[k++] = a[i];
j=0;
a[i]=0;
}
if (i==M-1)
i=-1;
}
printf("按次序输出出圈人的编号为\n");
for(i = 0;i < M - 1; i++)
printf("%6d", b[i]);
printf("\n最后一人编号为%6d\n", b[M-1]);
}
这个是论坛里那个轮流报数的题目!!这是论坛好友发的帖子,不过我还有一点不明白的就是那个i=-1咋解释啊,就是这题
n个人围成一个圈,每个人对应一个编号,比如说,10个人,编号就是1——10。现在从第一个开始报数1,2,3这三个数。报到三的人就退出圈子,这样报到最后留下来的那个是员阿里编号为几的?(比如4个人,第一轮下来1——4报的数分别是1,2,3,1.报数为3的退出。此时,编号为1的要接上轮的编号为4的继续报数,应报数2.)