这是我的答案,关键代码都做了注释
int main(int argc, const char * argv[])
{
@autoreleasepool {
//10、 耶稣有15个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:15人围坐一圈,从第一个开始报号:1,2,3,1,2,3……,凡是报到“3”就退出圈子,最后留在圈内的人就是出卖耶稣的叛徒,请找出它原来的序号。(C语言)
int students[15];
int i=0,m=0,n=15;
for (int j=0; j<15; j++) {
students[j]=j+1; //每个人的初始编号
}
while (n!=1) { //剩下最后的一个就是叛徒
if (students[i]!=0) { //一直循环,当遇见值被3整出的就将其值a[i]设为0;
m++; //m是留在圈内的人从0开始延续的编号。
if (m%3==0) {
students[i]=0;
n--;
}
}
i=(i+1)%15; //得到初始的序号
}
for (i=0; i<15; i++) {
if (students[i]!=0) { //最后数组中不为0的那个就是叛徒
printf("叛徒原来的序号是:%d\n",i+1);
}
}
// insert code here...
//NSLog(@"Hello, World!");
}
return 0;
}
|