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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

关于耶稣叛徒,我写了一个程序,不知道这样可不可以,欢迎同学分指导
#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]);
                }
        }
}

12 个回复

倒序浏览
有想法哈,大哥
回复 使用道具 举报
不错,代码减少了很多,最好加一下注释不然不易读。
回复 使用道具 举报
你这样写,每处理一个需要从头重新排除,感觉不对,应该是每隔3剔除一个,直到最后还剩一个才对啊。。。。
回复 使用道具 举报
同意楼上,记得加注释,养成好习惯
回复 使用道具 举报
输出结果是多少?有没有验证呢?
回复 使用道具 举报
加注释会好点。虽然程序不难
回复 使用道具 举报
哈哈,比我强
回复 使用道具 举报
明天不一样 发表于 2015-6-15 18:49
输出结果是多少?有没有验证呢?

5啊 结果应该是正确的
回复 使用道具 举报
yuang4074 发表于 2015-6-15 18:02
你这样写,每处理一个需要从头重新排除,感觉不对,应该是每隔3剔除一个,直到最后还剩一个才对啊。。。。 ...

我就是每三个剔除一个啊,我用的j变量就是用来计数用的 ,他不管你循环 只是在++ 加到三后又回到一
回复 使用道具 举报
Chasel 发表于 2015-6-15 18:48
同意楼上,记得加注释,养成好习惯

。。。。你看看楼上的对么。。你就同意
回复 使用道具 举报
yuang4074 发表于 2015-6-15 18:02
你这样写,每处理一个需要从头重新排除,感觉不对,应该是每隔3剔除一个,直到最后还剩一个才对啊。。。。 ...

他的j放在最外层
即使循环一遍最后j是2 从头再遍历一次的时候下一个j就是3了
没什么问题
回复 使用道具 举报 2 0
飞翔的猪 发表于 2015-6-16 13:44
。。。。你看看楼上的对么。。你就同意

不好意思,说的是同意7楼的,加注释更易于我们理解
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马