黑马程序员技术交流社区
标题:
这是我编写的关于耶稣的那个问题的
[打印本页]
作者:
haha92210
时间:
2014-11-13 10:29
标题:
这是我编写的关于耶稣的那个问题的
感觉逻辑没有问题阿 为什么结果是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;
}
}
}
作者:
haha92210
时间:
2014-11-13 13:14
感谢版主加分 可是 大神们阿 谁能帮我解答下阿 跪求
作者:
monterr
时间:
2014-11-13 14:46
看着没啥问题,但又总觉得不对呢。
先说一个问题,mentu[]数组的标号是从0开始,你i初始化值为1 那你数组直接从第二位开始遍历,所以结果肯定是错误的
我说下我做题时的思路,你参考下。
定义数组,并把数组赋值为0,在判断的时候用双判断,就是mentu[i] == 0 && m != 3 m++ 和 mentu[i] == 0 % && m == 3 把数组内当前位置行赋值为1 m=1 n--,最后用遍历输出,如果当前标号 mentu[i] == 0,输出i就是叛徒
作者:
haha92210
时间:
2014-11-21 10:49
monterr 发表于 2014-11-13 14:46
看着没啥问题,但又总觉得不对呢。
先说一个问题,mentu[]数组的标号是从0开始,你i初始化值为1 那你数组 ...
谢谢谢谢 我再改改
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2