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

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

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

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

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

评分

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

查看全部评分

25 个回复

正序浏览
杜工 发表于 2014-8-14 14:24
逻辑判断,说真话的值为1,说假话的值为0,有三个说真话,一个说假话,所以总和为3。 ...

哦  知道那个3是什么意思了   谢谢您的解释
回复 使用道具 举报

逻辑判断,说真话的值为1,说假话的值为0,有三个说真话,一个说假话,所以总和为3。
回复 使用道具 举报
不明觉厉
回复 使用道具 举报
F@C 中级黑马 2014-8-14 12:57:59
22#
进来学习
回复 使用道具 举报
都是。。。。。。                       
回复 使用道具 举报
  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编程实现。。。。。。
回复 使用道具 举报
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
这题是C语言的 ,有点印象。。。。。。。。。。
回复 使用道具 举报
zhxu188 发表于 2014-8-13 22:45
这个题目可以看成是与不是,是就用等于号表示,不是就用不等于表示
1代表A   2代表B  3代表C   4代表D
A说不 ...

这个分析的太到位了,厉害,厉害
回复 使用道具 举报
有点意思。。
回复 使用道具 举报
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. 请问这句什么意思?
复制代码
回复 使用道具 举报
太有才了
回复 使用道具 举报
果断C,至于代码就没敲~~~~
回复 使用道具 举报
匆匆看了一眼,等明天的给你写出来......
回复 使用道具 举报
是c,哈哈
回复 使用道具 举报
一0是假话,1是真话  一 A:0  BCD:1 AB的话矛盾。二 B:0  ACD:1  CD的话矛盾。三 C:0  ABD:1  符合,黑马就是C。四 D:0  ABC:1  CD的话矛盾
回复 使用道具 举报
zhxu188 发表于 2014-8-13 22:45
这个题目可以看成是与不是,是就用等于号表示,不是就用不等于表示
1代表A   2代表B  3代表C   4代表D
A说不 ...

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

没看懂 。。。。。。。。。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马