黑马程序员技术交流社区

标题: 各位大神,这道题怎么解? [打印本页]

作者: to_love    时间: 2015-8-21 22:00
标题: 各位大神,这道题怎么解?
10、 耶稣有15个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:15人围坐一圈,从第一个开始报号:1,2,3,1,2,3……,凡是报到“3”就退出圈子,最后留在圈内的人就是出卖耶稣的叛徒,请找出它原来的序号。
作者: tangbinbin    时间: 2015-8-22 10:25
#include <stdio.h>
#define N 15
int main ()
{
int a[15];

for (int i=0;i<15;i++)             //给门徒进行编号

{
    a[i]=i+1;

}


int number = 15;                   //记录当前人数
int count = 0;                     //记录报数
i = 0;
while (number > 1)                 //直到一人时退出循环
{
if (a[i] != 0)                     //没有人被剔除掉,报数有效
{
   count++;
  }
if (count == 3)                   //当有人报数为3时,退出的人计为0,报数清零,存活人数减1
{
   a[i] = 0;
   count = 0;
   number--;
  }
   i++;                             //记录报数的下一个人
if (i == 15)                     //当15人报数完毕,立即将报数人数置为第一人
{
   
    i = 0;
  
  }

}
for ( i = 0; i< 15; i++)

{
  if (a[i] > 0)                    //最后剩下的报数不能置0的人即为叛徒
  
  printf("出卖耶稣的人是第%d个门徒", a[i]);
        
               
}
  
return 0;       

}
思路比较重要,好好想一下
作者: 毛强    时间: 2015-8-22 11:08
tangbinbin 发表于 2015-8-22 10:25
#include
#define N 15
int main ()

写的真棒
作者: tr2e    时间: 2015-8-22 11:27
果然是思路才是最重要的
作者: 庞佳星    时间: 2015-8-22 15:02
牛  bbbbb
作者: 小笼包    时间: 2015-8-22 15:15
好把,这不是我的入学测试题吗
作者: tangbinbin    时间: 2015-8-22 17:34
tr2e 发表于 2015-8-22 11:27
果然是思路才是最重要的

思路搞清楚了,写起来就很方便,不然你会无从下手的
作者: tangbinbin    时间: 2015-8-22 17:35
毛强 发表于 2015-8-22 11:08
写的真棒

慢慢来学习就好了,我也才开始学呢,你可以用其他方法改进,把思路理解清楚了就好写
作者: to_love    时间: 2015-8-23 11:06
tangbinbin 发表于 2015-8-22 17:34
思路搞清楚了,写起来就很方便,不然你会无从下手的

谢谢,豁然开朗。
作者: to_love    时间: 2015-8-23 11:07
tangbinbin 发表于 2015-8-22 10:25
#include
#define N 15
int main ()

#define N 15
这句没有用
作者: tangbinbin    时间: 2015-8-24 10:57
to_love 发表于 2015-8-23 11:07
#define N 15
这句没有用

有作用的,用于人数编号的定义




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2