C语言面试题-----耶稣问题
2014-07-29 09:05
127 查看
<span style="font-size:18px;"> // 耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个开始报号:1,2,3,1,2,3...。凡是报到“3”就退出圈子,最后留在圈子内的人就是出卖耶稣的叛徒。请找出它原来的序号。 //解题思路: //(1)如何表示13个人? 通过数组表示,有13个元素,赋初值是,可以赋值为1~13; //(2)如何描述报数? 使用count值统计当前是第几个人? //(3)如何将人踢出,标示已经死掉的人? 将元素的值置为0. //(4)如何及时获取当前活着的人?变量number用来记录当前活着的人 //(5)使用哪种循环结构? 采用while //(6)循环条件是什么?当前活着的人数大于1 //1. number > 1 //(7)如何循环报数? 循环变量 i,记录当前第几个在报数,如果到最后一个人,报数完成之后,让第一个人继续报数,i=0. int a[13] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; int count = 0;//用来记录报数 int number = 13; //用来记录活着的人; int i = 0;//记录第几个人正在报数 while (number > 1) { //如果a[i],没有被剔除掉,报数有效 if (a[i] != 0) { count++; } if (count == 3) { a[i] = 0;//剔除掉,game over number--;//存活人数及时更新 count = 0;//将计数器清零. } i++;//记录报数的下一个人 if (i == 13) { i = 0;//当超出报数的范围时,立即将报数人置为第一个人. } } for (int i = 0; i < 13; i++) { if (a[i] > 0) { printf("%d", a[i]); } } </span>
相关文章推荐
- 【我解C语言面试题系列】004 数组的循环右移问题
- 【我解C语言面试题系列】005 按位反转字符问题
- C语言奶牛生子的问题(腾讯面试题)
- 一道C语言面试题——大数相乘的问题
- 【C语言】【面试题】5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果问题
- 【我解C语言面试题系列】003 死循环格式问题小结?
- C语言实现单链表面试题--进阶(带环问题)
- C语言必会面试题(3、耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个开始报号:1,2,3,1,2,3...。凡是报到“3”就退出圈子,...)
- c语言经典,高手必备,找出卖耶稣的叛徒问题!
- C语言—链表面试题之带环问题的总结
- 【我解C语言面试题系列】005 按位反转字符问题
- 【我解C语言面试题系列】008 去除数组中重复数字问题
- 【我解C语言面试题系列】007 运算符优先级问题
- 华为面试题:迷宫问题 C语言源码
- 【C语言】耶稣门徒问题求解——谁是叛徒
- 【我解C语言面试题系列】004 数组的循环右移问题
- 【我解C语言面试题系列】007 运算符优先级问题
- 【我解C语言面试题系列】009 特殊的去除数组中重复数字问题
- 【C语言】【面试题】5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果问题
- C语言 — 链表面试题复杂链表问题