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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© baiiiu 中级黑马   /  2014-9-14 09:05  /  1271 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

就是一圈人,从1开始报数,没报到3退出,这题好难啊,求大神

3 个回复

倒序浏览
什么报数!看的很模糊!
回复 使用道具 举报
是那个耶稣的叛徒的问题。是吧?
回复 使用道具 举报
我也是参考了论坛一个大神的代码,写的简洁易懂,你参考参考,要自己理解哦
  1. #include<stdio.h>

  2. int main()
  3. {
  4.         //用0来记录没有数到3的人
  5.         int flag[15] ={0};
  6.         //记录剩余的人数
  7.         int num = 15;
  8.        
  9.         int i = 1;//记录数到几
  10.         int j = 15;//用于记录循环的数
  11.        
  12.         //如果人数不是最后一个,就继续循环
  13.         while(num > 1)
  14.         {
  15.                 //开始数
  16.                 //如果数到的数不是3并且标志是0就继续往下数(这里就相当于把标志不为0的人退出队伍)
  17.                 if((flag[j%15] == 0) && ( i != 3))
  18.                 {
  19.                         i++;
  20.                 }
  21.                 else if((flag[j%15] == 0) && ( i == 3))
  22.                 {//如果数到的数是3并且标志是0,就把标志置为1,把i赋值为0,并且把剩余的数减去1
  23.                         flag[j%15] = 1;
  24.                         i = 1;
  25.                         num--;
  26.                 }
  27.                 j++;//循环的数
  28.         }
  29.    
  30.     //上面循环到最后一个数的时候会跳出,最后一个数的标志为0
  31.     for(int i=0; i < 15;i++)
  32.     {
  33.                  if(flag[i] == 0)
  34.                  {
  35.                          printf("出卖耶稣的叛徒是:%d\n",i+1);//因为i是从0开始的,所以加1
  36.                  }
  37.     }
  38.         return 0;
  39. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马