#include <stdio.h>
#include <stdlib.h>
void main(){
int a[100];
int n,i,*p,sum = 0,num,k;
printf("有多少个人围成了圈?");
scanf("%d",&n);
k = n;
for(i=0;i<n;i++)
a[i]=i+1; //赋编号值
a[i]=-1;//后面判断指针回到开头的判断标志
p = a;
while(k != 1)
{
if(*p!=0)//指针所指的同学不为0的意思是没有被淘汰,才能对其进行操作
{
sum++;
if(sum % 3 == 0)//报到3的同学淘汰
{
*p = 0;
k--;
}
}
p++;
if(*p == -1)
p = a;
}
for(i=0;i<n;i++)
{
if(a[i] != 0)
{
printf("剩下的是%d号",a[i]);
return;
}
}
}
运行结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200426093851368.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4MjcyMDc1,size_16,color_FFFFFF,t_70)