用c++编程有1000个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出

来源:百度知道 编辑:UC知道 时间:2024/06/16 08:59:28
1000个人,从1编到1000,第一个人从1开始报数,从1数到11,数到11的人站出来,最后剩下那个人的编号是几,该怎么编呢?

#include<stdio.h>
#include<stdlib.h>
main()
{
int n, y, m = 0, x = 0, i, flag = 0;
int *p;
printf("输入人数 和 报数间隔:");
scanf("%d %d",&n,&y);

p = (int *)malloc(n*sizeof(int));
for(i=0; i<n; i++)
p[i] = 1;

i = 0;
while (i<n)
{
if(p[i])
x++;
if(x==y)
{
p[i] = 0;
x = 0;
}
if(!p[i])
m++;
i++;
if(m==n-1 && i==n)
flag = 1;
if(i==n && !flag)
{
i = 0;
m = 0;
}
if(flag)
break;
}

for(i=0; i<n; i++)
if(p[i])
{
printf("He is No.%2d of the oringinal team!",i+1);
break;
}
/*getch();*/
return;
}
输入1000