- #include <stdio.h>
- int main(int argc, const char * argv[]) {
-
- //定义一个数组并全部初始化为0
- int p[15]={0};
- //i用来标记该元素是否应该退出,j用来无限循环数组元素,k标记剩余人数
- int i=1,j=15,k=15;
- //只要剩余人数大于1,就一直进行循环
- while(k>1){
- //数组元素值为0,代表尚未出局,可参与循环,值为1,则表示已经出局,不参与循环
- //如果数组中该元素的值为0,并且该元素没有被标记为3,则标记i++
- if(p[j%15]==0&&i!=3){
- i++;
-
- //如果数组中某元素值为0,且被标记为3,则将该元素值改为1,表示该元素出局,同时标记计数器重置为1,剩余人数-1
- }else if(p[j%15]==0&&i==3){
- p[j%15]=1;
- i=1;
- k--;
- }
- //不管结果如何,j都会进行自加运算,以保证下一元素进入循环
- j++;
- }
- //当剩余人数为1的时候,while结束,用找出为0的人,就是叛徒,它的序号就是该元素的下标+1
- for(i=0;i<15;i++){
- if(p[i]==0){
- printf("出卖耶稣的序号是:%d\n",i+1);
- }
- }
- return 0;
- }
复制代码 |