感觉逻辑没有问题阿 为什么结果是14呢 
#import <Foundation/Foundation.h> 
int main() 
{ 
    /* 
     遍历15个人,从第一个人开始,经过1个人,m++,当m=3时候 menTu[i]=0,n=n-1,m=1,即排除 
     ,之后并判断n==1:=1-输出 ,,当i=15的时候令i=1 ,  
     遍历之前要判断menTu[i]==1,若等于 i++,不等于 m++ 
*/ 
    int n=15,i,m=0;                                     //n是剩余人的数量 i是门徒编号 m是标记的1 2 3 
    int menTu[15];                                      //需初始化0   数组内存的0代表未排除嫌疑 1代表已排除 
     
    for (i=1; i<=15; i++)                               //遍历所有人 
    { 
        if (menTu[i]==1)                                //判断menTu[i]是否被排除 
        { 
            i++; 
        } 
        else 
        { 
            m++; 
            if (m==3)                                   //判断m==3 
            { 
                menTu[i]=1; 
                n--; 
                m=1; 
                if (n==1)                               //判断当剩一个人时候输出叛徒 即n=1时输出叛徒 
                { 
                    printf("输出叛徒%d",i); 
                } 
            } 
        } 
        if (i>=15)                                      //每当门徒>=15是循环回到menTu[1]; 
        { 
            i=1; 
        } 
    } 
} |