耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个开始报号:1,2,3,1,2,3...。凡是报到“3”就退出圈子,最后留在圈子内的人就是出卖耶稣的叛徒。

    int _person[13] = {0};
    int _flag = 0;         // 用来标记1,2,3
    int _over = 0;         // 13个人,如果有12个人被标记为3,那么叛徒也就找出来了,游戏也就结束了
    
    for (int i = 0; i < 13; i++) {
        _person[i] = arc4random()%901+101;
    }
    
    for (int i = 0; _over < 13 - 1; i++) {
        if (i > 12) {      // 13个人,数组下表最大是12,如果超过12就标记为0重新开始
            i = 0;
        }
        if (_person[i] !=0 ) {    // 这里是利用下面,将数到3的人重置为0,如果不是0,那么标记就+1
            _flag++;
        }
        if (_flag == 3) {         // 数到3的人标记为0,游戏结束标记也就+1
            _flag = 0;
            _person[i] = 0;
            _over++;
        }
        
    }
    
    for (int i = 0; i < 13; i++) {     // 没被标记为0的人,就是叛徒了
        if (_person[i] != 0) {
            printf("出卖耶稣的叛徒是%d号叫%d的家伙",i+1,_person[i]);
        }
    }


你可能感兴趣的:(游戏,c)