同样,废话不多说,这种算法网上很多,就黑马里面也很多,但我看都比较复杂,也有超级简单的,但那都是神人写的这个算法也算比较明晰的,但愿不要因为是重复贴而被删了,如果你认为看的最容易懂的,就请顶一下- #include <stdio.h>
- int main()
- {
- // 定义一个数组a保存耶稣的15个门徒
- int a[15] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
-
- // 定义总个数为15,count用来记录报名的次数,i为变量
- int number = 15, count = 0, i = 0;
-
- // 如果总人数在1以上就进入循环
- while (number > 1)
- {
- // 数组元素从1开始每循环一次如果没有低于0的,都报次名
- if (a[i] != 0)
- {
- count++;
- }
- // 当报名到3时,就进入循环
- if (count == 3)
- {
- a[i] = 0; // 进入循环后,让报名的这次数组元素归0,就是退出
- count = 0; // 计数归0,从新报名
- number--; // 由于有个人退出了,所以总人数-1
- }
- i++; // 元素加1,保证循环
- if (i == 15) // 由于是围成一圈,当循环一圈时,值为15时,强制将其设置为0,继续循环
- {
- i = 0;
- }
- }
- // 循环遍历数组a的每个值
- for (int i = 0; i < 15; i++)
- {
- // 只打印剩下最后那个大于0的值
- if (a[i] > 0)
- {
- // 打印叛徒
- printf("叛徒原来的序号是%d\n",a[i]);
- }
- }
- // 程序归零正常退出
- return 0;
- }
复制代码
|
|