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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 杜工 于 2014-8-14 19:25 编辑

4人中有1人加入黑马程序员参加培训,班主任想知道是谁?
A说:“不是我”;B说:“是C”;C说:“是D”;D说:“C胡说”。

已知4人中,3人说的是真话,一个人说的是假话。请同学们根据这些信息,

用java语言编程,找出真正的“黑马”!

评分

参与人数 1黑马币 +10 收起 理由
张周飞 + 10 赞一个!

查看全部评分

25 个回复

倒序浏览
果断是C   B、C说得属性一样  只看B、C  一分析容易得出C是黑马= =
回复 使用道具 举报
Imp_x 发表于 2014-8-13 22:19
果断是C   B、C说得属性一样  只看B、C  一分析容易得出C是黑马= =

大多数人都会分析,我想用代码写出来。
回复 使用道具 举报
太绕了啊。
回复 使用道具 举报
这个题目可以看成是与不是,是就用等于号表示,不是就用不等于表示
1代表A   2代表B  3代表C   4代表D
A说不是我   所以用k!=1,
B说:是C    所以用k==3,
C说:是D    所以用k==4,
D说:胡说   所以用k!=4,

因为有3个人说真话,所以K最后相加为3



class Test
{
        public static void main(String[] args)
        {
                int k = 0;

                for(k=1;k<=4;k=k+1)
                      {                       
                          if(((k!=1)+(k==3)+(k==4)+(k!=4))==3)
                  {
                   System.out.println("做好事者为:"+char(64+k));       
          }
      }
        }
}
回复 使用道具 举报 1 0
由于电脑没有java 就只能用记事本写了,写的比较匆忙,括号可能有问题,楼主自己改一改。
回复 使用道具 举报
烟海 中级黑马 2014-8-13 22:47:55
7#
zhxu188 发表于 2014-8-13 22:45
这个题目可以看成是与不是,是就用等于号表示,不是就用不等于表示
1代表A   2代表B  3代表C   4代表D
A说不 ...

没看懂 。。。。。。。。。
回复 使用道具 举报
我说说思路吧:abcd四个人,有一个人说假话。那就分别假设  abcd为假。如果a为假,那么他就要满足后面3个人的话,如果不满足的话,就跳出这次循环,进行下一次循环。
回复 使用道具 举报
zhxu188 发表于 2014-8-13 22:45
这个题目可以看成是与不是,是就用等于号表示,不是就用不等于表示
1代表A   2代表B  3代表C   4代表D
A说不 ...

if后面括号里没看明白是这么回事?
回复 使用道具 举报
一0是假话,1是真话  一 A:0  BCD:1 AB的话矛盾。二 B:0  ACD:1  CD的话矛盾。三 C:0  ABD:1  符合,黑马就是C。四 D:0  ABC:1  CD的话矛盾
回复 使用道具 举报
是c,哈哈
回复 使用道具 举报
匆匆看了一眼,等明天的给你写出来......
回复 使用道具 举报
果断C,至于代码就没敲~~~~
回复 使用道具 举报
太有才了
回复 使用道具 举报
zhxu188 发表于 2014-8-13 22:45
这个题目可以看成是与不是,是就用等于号表示,不是就用不等于表示
1代表A   2代表B  3代表C   4代表D
A说不 ...
  1. if(((k!=1)+(k==3)+(k==4)+(k!=4))==3)

  2. 请问这句什么意思?
复制代码
回复 使用道具 举报
有点意思。。
回复 使用道具 举报
zhxu188 发表于 2014-8-13 22:45
这个题目可以看成是与不是,是就用等于号表示,不是就用不等于表示
1代表A   2代表B  3代表C   4代表D
A说不 ...

这个分析的太到位了,厉害,厉害
回复 使用道具 举报
这题是C语言的 ,有点印象。。。。。。。。。。
回复 使用道具 举报
public class demo2 {

        /**
         *
         * @param args
         * @throws IOException
         */
        public static void main(String[] args) {
                //定义int型k代表进黑马的人
             int k = 0;
             //弄一个循环,1、2、3、4分别对应A、B、C、D
         for(k=1;k<=4;k=k+1)
               {   
                 //做个判断,4个人中3个说真的,一个人说假的
                   if(writeBoolean(k!=1)+writeBoolean(k==3)+writeBoolean(k==4)+writeBoolean(k!=4)==3)
                   {
                           //把intx型的k转换成字母
                           System.out.println((char)(64+k));
                           }
                   }
         }
//定义一个方法把boolean型转换成int型
        public  static int writeBoolean(boolean b) {
                int i = 0;
                //true转换成1
                if(b==true){
                        i=1;
                //false转换成0
                }else if(b==false){
                        i=0;
                }
                return i;
                }
        }
回复 使用道具 举报 1 0
  1. public static int method(){
  2.                 int s,a,b,c,d;
  3.                 for(s = 'A';s<='D';s++){
  4.                         if(s != 'A')
  5.                                 a = 1;
  6.         else                        a = 0;
  7.                        
  8.                         if(s == 'C')
  9.                                 b = 1;
  10.         else                        b = 0;
  11.                        
  12.                         if(s == 'D')
  13.                                 c = 1;
  14.         else                        c = 0;
  15.                        
  16.                         if(s != 'D')
  17.                                 d = 1;
  18.         else                        d = 0;
  19.                        
  20.                         if((a+b+c+d) == 3){
  21.                                 System.out.println((char)s);
  22.                                 break;
  23.                         }
  24.                 }
  25.                
  26.                 return 0;
  27.         }
  28. }
复制代码
Java编程实现。。。。。。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马