//耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个开始报号:1,2,3,1,2,3...凡是报到‘3‘就退出圈子,最后留在圈子内的人就是出卖耶稣的叛徒.请找出它原来的序号// int array[13]={1,2,3,4,5,6,7,8,9,10,11,12,13};//模拟报数,0表示未退出圈子,1表示退出圈子 // int numbers=13;//表示剩余人数 // int count = 0;//表示报数 // int i =0;// 表示下标的循环变量 // while (numbers > 1) { // if (array[i]!=0) {//如果当前得到的数组元素不为0,表示没有退出圈子,则count++表示报数 // count++; // } // if (count == 3) { // printf("%d号退出圈子\n",array[i]); // array[i] = 0;//表示当前报数的人报的数为3,则通过数组元素赋值为0来表示他退出圈子 // count = 0;//报数归0 // numbers --;//表示退出圈子后剩余的人数 // } // i++; // i = i %13;// 如果i为13时,让i重新从0开始 // } // for ( int i =0; i < 13; i++) { // if (array[i] > 0) { // printf("%d号是叛徒",array[i]); // } // }
原文地址:http://9178487.blog.51cto.com/9168487/1440528