我也是参考了论坛一个大神的代码,写的简洁易懂,你参考参考,要自己理解哦
- #include<stdio.h>
- int main()
- {
- //用0来记录没有数到3的人
- int flag[15] ={0};
- //记录剩余的人数
- int num = 15;
-
- int i = 1;//记录数到几
- int j = 15;//用于记录循环的数
-
- //如果人数不是最后一个,就继续循环
- while(num > 1)
- {
- //开始数
- //如果数到的数不是3并且标志是0就继续往下数(这里就相当于把标志不为0的人退出队伍)
- if((flag[j%15] == 0) && ( i != 3))
- {
- i++;
- }
- else if((flag[j%15] == 0) && ( i == 3))
- {//如果数到的数是3并且标志是0,就把标志置为1,把i赋值为0,并且把剩余的数减去1
- flag[j%15] = 1;
- i = 1;
- num--;
- }
- j++;//循环的数
- }
-
- //上面循环到最后一个数的时候会跳出,最后一个数的标志为0
- for(int i=0; i < 15;i++)
- {
- if(flag[i] == 0)
- {
- printf("出卖耶稣的叛徒是:%d\n",i+1);//因为i是从0开始的,所以加1
- }
- }
- return 0;
- }
复制代码 |