A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yangguangyu 中级黑马   /  2015-9-13 13:49  /  842 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

遇到问题不能解决
1、 耶稣有15个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:15人围坐一圈,从第一个开始报号:1,2,3,1,2,3……,凡是报到“3”就退出圈子,最后留在圈内的人就是出卖耶稣的叛徒,请找出它原来的序号。这个具体怎么搞,求大神?

3 个回复

倒序浏览
最后留在圈子里面的是两个人,但是叛徒只有一个!!!
回复 使用道具 举报
基础测试里的
回复 使用道具 举报
本帖最后由 毛强 于 2015-9-13 19:45 编辑
  1. #import <Foundation/Foundation.h>

  2. int main(int argc, const char * argv[]) {
  3.     @autoreleasepool {
  4.         // insert code here...
  5.         int a[16] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};//16为结束序号位
  6.         int j=0;//纪录出局的人数
  7.         int i=1;//计算从1开始连续报数
  8.         
  9.         while (j != 14)
  10.         {
  11.             for (int n=0; a[n]!=16; n++)//报数一轮
  12.             {
  13.                 //判断门徒是否报到3
  14.                 if (i%3 == 0)
  15.                 {
  16.                     //将报3的门徒序号改为0,用于下面进行数组左移
  17.                     a[n] = 0;
  18.                     j++;
  19.                 }
  20.                 i++;
  21.             }
  22.             //数组清空0左移
  23.             for (int k = 0; a[k]!=16; k++)
  24.             {
  25.                 if (a[k] == 0)
  26.                 {
  27.                     for (int m=k; a[m]!=16; m++)
  28.                     {
  29.                         a[m] = a[m+1];
  30.                     }
  31.                 }
  32.             }
  33.         }
  34.         
  35.         //打印叛徒
  36.         printf("叛徒的序号为:%d号\n", a[0]);
  37.     }
  38.     return 0;
  39. }
复制代码


回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马