------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
// 耶稣有15个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:15人围坐一圈,从第一个开始报号:1,2,3,1,2,3⋯⋯,凡是报到“3”就退出圈子,最后留在圈内的人就是出卖耶稣的叛徒,请找出它原来的序号。
//
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define M 3
#define N 15
#include<stdio.h>
int main(){
//
//定义一个数组保存人数
int person[N]={0};
//定义n保存剩余人数,最开始为15,
int n=N;
//定义i用来保存到数到3,把数组中的值赋值为1;定义j来确定数组的下标
int i=1,j=0;
//做循环当剩余一个人停止循环
while (n>1) {
//判断当数组中的值为0,且i不为3,i++
if (person[j%N]==0&&i!=3) i++;
//判断当数组中的值为0,且i为3,把数组中的元素赋值为1,且剩余人数减少1个
else if (person[j%N]==0&&i==3) {
i=1;
n--;
person[j%N]=1;
}
//用来遍历数组中的每个元素
j++;
}
//做循环来判断数组中为0的元素就是剩下最后的一个人
for (int i=0; i<N; i++) {
if (person[i]==0) {
printf("出卖耶稣的人原来的序号是:%d号\n",i+1);
}
}
return 0;
}