A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

同样,废话不多说,这种算法网上很多,就黑马里面也很多,但我看都比较复杂,也有超级简单的,但那都是神人写的这个算法也算比较明晰的,但愿不要因为是重复贴而被删了,如果你认为看的最容易懂的,就请顶一下
  1. #include <stdio.h>

  2. int main()
  3. {
  4.     // 定义一个数组a保存耶稣的15个门徒
  5.     int a[15] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
  6.    
  7.     // 定义总个数为15,count用来记录报名的次数,i为变量
  8.     int number = 15, count = 0, i = 0;
  9.    
  10.     // 如果总人数在1以上就进入循环
  11.     while (number > 1)
  12.     {
  13.         // 数组元素从1开始每循环一次如果没有低于0的,都报次名
  14.         if (a[i] != 0)
  15.         {
  16.             count++;
  17.         }
  18.         // 当报名到3时,就进入循环
  19.         if (count == 3)
  20.         {
  21.             a[i] = 0; // 进入循环后,让报名的这次数组元素归0,就是退出
  22.             count = 0; // 计数归0,从新报名
  23.             number--; // 由于有个人退出了,所以总人数-1
  24.         }
  25.         i++; // 元素加1,保证循环
  26.         if (i == 15) // 由于是围成一圈,当循环一圈时,值为15时,强制将其设置为0,继续循环
  27.         {
  28.             i = 0;
  29.         }
  30.     }
  31.     // 循环遍历数组a的每个值
  32.     for (int i = 0; i < 15; i++)
  33.     {
  34.         // 只打印剩下最后那个大于0的值
  35.         if (a[i] > 0)
  36.         {
  37.             // 打印叛徒
  38.             printf("叛徒原来的序号是%d\n",a[i]);
  39.         }
  40.     }
  41.     // 程序归零正常退出
  42.     return 0;
  43. }
复制代码



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马