【C语言】 有n个人(人数可自定义)玩一场死亡游戏,从第一个人开始报数,依次数到第3人就会被处死,然后接着报数直到最后一个人活着,求这个人是几号位?有n个人(人数可自定义)玩一场死亡游戏,从第一个人开始报数,依次数到第3人就会被处死,然后接着报数直到最后一个人活着,求这个人是几号位?
#include<stdio.h>
#define c 1000
int main()
{
int n;
int a[c];
int* p = a;
int i;
int k = 0, m = 0;
scanf("%d", &n);//输入参与人数
for (i = 0; i < n; i++)
{
*(p + i) = i + 1;//依次对每个人的位置进行标记
}
i = 0;
while (m < n - 1) //m是表示被杀的人数,党m=n-1时表示剩下最后一个人,所以结束循环
{
if (*(p + i) != 0)
k++;//如果没有遇到要被杀的人k就加一
if (k == 3)
{
*(p + i) = 0;//数到第三个人是就赋值为0
k = 0;//令k=0,然后重新报数
m++;//每次杀死一个人就统计加一
}
i++;
if (i == n)
i = 0;//如果一轮报数完后就重新开始新的一轮
}
while (*p == 0)//如果遇到0(被杀了的人),就接着往下走一个,直到遇到不是0,也就是或者的人,
p++;
printf("%d", *p);
}