黑马程序员技术交流社区
标题:
耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,
[打印本页]
作者:
364827317
时间:
2015-11-16 23:36
标题:
耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,
耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个开始报号:1,2,3,1,2,3...。凡是报到“3”就退出圈子,最后留在圈子内的人就是出卖耶稣的叛徒。请找出它原来的序号。 求此题答案
作者:
black747521
时间:
2015-11-17 00:27
去我发的帖子里找一下,基础测试第十题
作者:
流水落花
时间:
2015-11-17 00:45
这题不错值得研究一下...
作者:
linexs
时间:
2015-11-17 13:19
/*
10、 耶稣有15个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:15人围坐一圈,从第一个开始报号:1,2,3,1,2,3……,凡是报到“3”就退出圈子,最后留在圈内的人就是出卖耶稣的叛徒,请找出它原来的序号。(C语言)
1.定义一个15人数组,并初始化,用于保存15名门徒
2.循环报数 总数到15重新开始报数 直到剩下最后1个叛徒
3.标记报3的门徒,然后重新开始从1报数,统计剩余人数
4.遍历数组,打印非0的元素
*/
#include <stdio.h>
#define M 15 //M人数,N报号退出的数字
#define N 3
int main(int argc, const char * argv[]){
int arr[M];
for(int i = 0;i< M;i++) { //for循环赋值
arr[i]=i+1;
}
int total = M,count= 0,j = 0;
while (total != 1) { //留下坏人
if (arr[j] != 0) count++;
if (count == N) {
arr[j] = 0; //排除好人 赋值0
count = 0; //重置计数器,重新报号
total--; //总人数减1
}
j++;
if (j == M) j = 0; //下一轮报号
}
for (int i = 0; i< M; i ++) {
if (arr[i] != 0) printf("出卖耶稣叛徒的序号:%d\n",arr[i]);
}
printf("The end!\n");
return 0;
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2