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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© to_love 中级黑马   /  2015-8-21 22:00  /  1322 人查看  /  12 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

10、 耶稣有15个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:15人围坐一圈,从第一个开始报号:1,2,3,1,2,3……,凡是报到“3”就退出圈子,最后留在圈内的人就是出卖耶稣的叛徒,请找出它原来的序号。

12 个回复

倒序浏览
#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;       

}
思路比较重要,好好想一下
回复 使用道具 举报
tangbinbin 发表于 2015-8-22 10:25
#include
#define N 15
int main ()

写的真棒
回复 使用道具 举报
果然是思路才是最重要的
回复 使用道具 举报
牛  bbbbb
回复 使用道具 举报
好把,这不是我的入学测试题吗
回复 使用道具 举报
tr2e 发表于 2015-8-22 11:27
果然是思路才是最重要的

思路搞清楚了,写起来就很方便,不然你会无从下手的
回复 使用道具 举报

慢慢来学习就好了,我也才开始学呢,你可以用其他方法改进,把思路理解清楚了就好写
回复 使用道具 举报
chensc 金牌黑马 2015-8-23 10:42:59
9#
学习学习!
回复 使用道具 举报
tangbinbin 发表于 2015-8-22 17:34
思路搞清楚了,写起来就很方便,不然你会无从下手的

谢谢,豁然开朗。
回复 使用道具 举报
tangbinbin 发表于 2015-8-22 10:25
#include
#define N 15
int main ()

#define N 15
这句没有用
回复 使用道具 举报
to_love 发表于 2015-8-23 11:07
#define N 15
这句没有用

有作用的,用于人数编号的定义
回复 使用道具 举报
学习学习!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马