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

思路:
1.将每个人进行原始标号,从1~13号;

2.从第一位开始报号,当你报到3的时候,你的标号清除(我们用0代表);

3.每当一个人被标记为0,相应的总人数减1;

4.以此类推,当只剩下一个人的标号没有为0,则该标号为叛徒;

示例代码:

#include <stdio.h>#define M 13    //M门徒的人数
#define N 3     //N循环的单元int main()
{int man[M]={0},count=0,people=M;//count计数(1,2,3),people当前人数printf("原始的排名:\n");//初始化排名for(int i=0;i<M;i++){man[i]=i+1;printf("%d ",man[i]);}//进行排除printf("\n>>>>>>>>>开始排除>>>>>>>>\n");while(people>1)//只要人数大于1,则继续排除{for(int p=0;p<M;p++){//循环排除if(man[p]!=0){count++;}//如果当前位置不为零,则count+1if(count==N){printf("\n第%d被排除\n",man[p]);//把当前位置排除printf("排除后的排名为:\n");man[p]=0;//该位置清零for(int i=0;i<M;i++){printf("%d ",man[i]);}//将本次排除打印出来printf("\n");count=0;//从新计数people--;//人数减1}}}
//将叛徒的排名打印出来for(int i=0;i<M;i++){if(man[i]!=0){printf("\n第%d是叛徒\n",man[i]);}//遍历排名,不为0的即是叛徒}
}

耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个开始报号:1,2,3,1,2,3……,凡是报到“3”就退出圈子,最后留在圈内的人就是出卖耶稣的叛徒相关推荐

  1. C语言必会面试题(3、耶稣有13个门徒,当中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个開始报号:1,2,3,1,2,3...。凡是报到“3”就退出圈子,...)...

    3.耶稣有13个门徒.当中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个開始报号:1.2,3.1,2,3.... 凡是报到"3"就退出圈子.最后留在圈子 ...

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

    // 3 耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个开始报号:1,2,3,1,2,3....凡是报到"3"就退出圈子,最后留在 ...

  3. 13个人围成一圈,从第1个人开始顺序报号1,2,3。 凡报到3者退出圈子

    #include <stdio.h> #include <stdlib.h> #define N 13 /* 13个人围成一圈,从第1个人开始顺序报号1,2,3. 凡报到3者退 ...

  4. 程序员面试题经典问题——耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个开始报号:123凡是报到“3”就退出圈子,最后留在圈子内的人就是出卖耶稣的叛徒。

    package com.softeem.project1;public class Test1 {public static void main(String[] args) {//定义数组保存13位 ...

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

    int a[13] = {1,2,3,4,5,6,7,8,9,10,11,12,13};int number = 13; //记录圈内剩余的人数int count = 0; //通过计算器来模拟报数i ...

  6. 100个人围成一圈c语言,C语言 约瑟夫圈问题:N个人围成一圈,从第一个人开始按顺序报数并编号1,2,3,……N,然后开始从第一个人转圈报数,凡是报到3的退出圈子。则剩下的最后一个人编号是多少。...

    样例输入3  输出2 输入100   输出91 代码及分析: #include int main() { int i,n,N,out,a[1000]; out=i=n=0; //用out记录退出圈子的 ...

  7. 三个球A、B、C,大小形状相同且其中有一个球与其他球重量不同。要求找出这个不一样的球。

    #include<stdio.h> int main(){  int a,b,c;  scanf("%d %d %d",&a,&b,&c);   ...

  8. 有n个人围成一圈,顺序排号,从第一个人开始报数(1-3报数),凡是报数为3的人退出圈子,问最后留下的人原来的编号是多少?

    有n个人围成一圈,顺序排号,从第一个人开始报数(1-3报数),凡是报数为3的人退出圈子,问最后留下的人原来的编号是多少? 花了半个下午搞出来的代码,调试了一会,一切正常,感觉还不错! '''解题思路: ...

  9. 13个人围成一圈,从第1个人开始顺序报号1,2,3.凡报到3者退出圈子。找出最后留在圈子中的人原来的序号。要求用链表实现。

    13个人围成一圈,从第1个人开始顺序报号1,2,3.凡报到3者退出圈子.找出最后留在圈子中的人原来的序号.要求用链表实现. #include <stdio.h> #include < ...

最新文章

  1. kill Signal
  2. Nginx安装及配置简介
  3. 在NAnt中加入Vssget 任务
  4. MVC路由学习:自定义路由参数(用户看不到参数名),重新定义路由规则
  5. C语言高级编程:指针变量p指向的地址与p自身的地址
  6. Ubuntu 8.04下Netbeans的字体反锯齿解决(转)
  7. win 10 1709安装linux,小编详解win10 1709安装教程
  8. C++基础——类模板
  9. 小马儿随笔(七)——综合布线的安装时代
  10. C++ primer 第十一章 关联容器
  11. EM算法及python实现
  12. python超级简单爬虫
  13. 文档在线编辑开发心得
  14. SQL数据库被标为可疑/置疑/质疑的处理
  15. 使用wifi网卡笔记5---AP模式
  16. 音频之声道、采样位宽、采样率转换原理及其代码实现
  17. 从传统投放走向程序化购买, 浅谈户外广告发展前景
  18. android实践练习_android 练习之路 (五)
  19. import xx_rc 问题记录
  20. oracle oci,关于Oracle OCI驱动的使用

热门文章

  1. 共赢数据时代,释放无限可能!Smartbi受邀出席明道云合作伙伴大会!
  2. java语言与payth_Java语言与程序
  3. 航标灯实验c语言程序,单片机原理及应用习题 (带答案)
  4. 一号店静态html源代码,一号店html模板
  5. TI OMAP Bootloader Project 关于启动过程
  6. 自动下载forumdisplay.php,六酷社区论坛HOME页清新格调免费版 下载
  7. 搭载广和通5G LAN模组FM650-CN的5G工业网关已率先商用落地
  8. 优漫动游设计师如何快速获得在设计灵感?在这里找答案
  9. 13家企业获得第二批第三方支付牌照
  10. 【java】opencv + Tesseract(tess4j) 实现图片处理验证码识别