int count = 0;//用来记录报数  
int number = 13;//记录活着的人数  
int i = 0;//记录第几个人正在报数 
while (number > 1) {      
if (people[i] != 0) {         
count++; //如果a[i ]没有被剔除掉,报数有效     
} if (count == 3) {        
    people[i] = 0;//剔除掉,       
     count = 0;//报数清零         
   number--;//存活人数减一      
  }     
   i++;//记录报数的下一个人     
   if (i == 13) {         
   i = 0;// 当超出范围时,立即将报数人数置为第一人     
   }   
}    for (int i = 0; i < 13; i++) {     
  if (people[i] > 0) {          
  printf("叛徒是第%d人 ", people[i]);     
   }  
}
原文:http://blog.csdn.net/hakusan/article/details/39026093