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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

测试题中抽到用1,2,3,1,2,3报数排除法找出出卖耶稣的门徒,思路分析是重点,下面我详细的分析下,供大家参考,要是有上面可以改进的地方,希望大家多多回复和交流。

1,定义一个数组对耶稣门徒进行编号
2,进行报数没有人退出时进行计数
3,当报数到3时,退出的人记为0,计数清零
4,当循环报数剩下的人计数无法再清零,那个人则为出卖耶稣的门徒。

#include <stdio.h>
#define N 15
int main ()
{
int a[15];

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

{
    a=i+1;

}


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

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

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

0 个回复

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