黑马程序员技术交流社区

标题: 关于耶稣叛徒问题,我写了一个程序 [打印本页]

作者: 飞翔的猪    时间: 2015-6-14 11:32
标题: 关于耶稣叛徒问题,我写了一个程序
关于耶稣叛徒,我写了一个程序,不知道这样可不可以,欢迎同学分指导
#include<stdio.h>

int main()
{
        int a[15]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
        int count=15;
        int j=0;
        while(count>1)
        {
                for(int i=0;i<15;i++)
                {
                        if(a[i]!=0)
                        {
                                j++;
                                if(j==3)
                                {
                                        j=0;
                                        count--;
                                        a[i]=0;
                                }
                        }
                }
        }
        for(int i=0;i<15;i++)
        {
                if(a[i]!=0)
                {
                        printf("叛徒是第%d 个人",a[i]);
                }
        }
}
作者: 李言    时间: 2015-6-14 12:19
有想法哈,大哥
作者: 13673696542    时间: 2015-6-14 17:47
不错,代码减少了很多,最好加一下注释不然不易读。
作者: yuang4074    时间: 2015-6-15 18:02
你这样写,每处理一个需要从头重新排除,感觉不对,应该是每隔3剔除一个,直到最后还剩一个才对啊。。。。
作者: Chasel    时间: 2015-6-15 18:48
同意楼上,记得加注释,养成好习惯
作者: 明天不一样    时间: 2015-6-15 18:49
输出结果是多少?有没有验证呢?
作者: 我丶就这样    时间: 2015-6-15 18:51
加注释会好点。虽然程序不难
作者: 天下1083    时间: 2015-6-15 19:47
哈哈,比我强
作者: 飞翔的猪    时间: 2015-6-16 13:40
明天不一样 发表于 2015-6-15 18:49
输出结果是多少?有没有验证呢?

5啊 结果应该是正确的
作者: 飞翔的猪    时间: 2015-6-16 13:42
yuang4074 发表于 2015-6-15 18:02
你这样写,每处理一个需要从头重新排除,感觉不对,应该是每隔3剔除一个,直到最后还剩一个才对啊。。。。 ...

我就是每三个剔除一个啊,我用的j变量就是用来计数用的 ,他不管你循环 只是在++ 加到三后又回到一
作者: 飞翔的猪    时间: 2015-6-16 13:44
Chasel 发表于 2015-6-15 18:48
同意楼上,记得加注释,养成好习惯

。。。。你看看楼上的对么。。你就同意
作者: talent123    时间: 2015-6-16 15:23
yuang4074 发表于 2015-6-15 18:02
你这样写,每处理一个需要从头重新排除,感觉不对,应该是每隔3剔除一个,直到最后还剩一个才对啊。。。。 ...

他的j放在最外层
即使循环一遍最后j是2 从头再遍历一次的时候下一个j就是3了
没什么问题
作者: Chasel    时间: 2015-6-16 15:39
飞翔的猪 发表于 2015-6-16 13:44
。。。。你看看楼上的对么。。你就同意

不好意思,说的是同意7楼的,加注释更易于我们理解




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2