n个人,报到3的退出,主要是注意几个条件!
#include"stdio.h"
void ThreeOut(int *p,int n){
int i=0,j=0,temp=0;
while(temp < n-1) //这里是n-1不是n
{
if(*(p+i) != 0)j++;
if(j == 3){
*(p+i) = 0;
j = 0;
temp++; //退出的人数
}
i++;
if( i == n )i = 0; //这里是n,不是n-1
}
for(i=0;i<n;i++){
printf("%d ",*(p+i)); //输入的1表示最后剩下的那个人
}
}
void main(){
int i,n,flag =1,a[100];
scanf("%d",&n);
for(i = 0;i< n;i++){
a[i] = flag;
}
ThreeOut(a,n); //报到3的出局
}