谁能解释一下这道java逻辑运算题java的逻辑运算?

【Java】逻辑思维训练整理的小题目
长时间写代码,思维容易固化,有时候需要换换脑子,我这边整理了几个有趣的逻辑思维训练小问题,以供大家休息时看看。
两柱香问题
题目:有两柱不均匀的香,每柱香燃烧完需要1个小时,问:怎样用两柱香切出一个15分钟的时间段?这个题的重点就是怎么切。
在房里有三盏灯,房外有三个开关,在房外看不见房内的情况,你只能进门一次,你用什么方法来区分那个开关控制那一盏灯?
两位盲人问题
他们都各自买了两对黑袜和两对白袜,八对袜了的布质、大小完全相同,而每对袜了都有一张商标纸连着。两位盲人不小心将八对袜了混在一起。 他们每人怎样才能取回黑袜和白袜各两对呢?
你有一桶果冻,其中有黄色,绿色,红色三种,闭上眼睛,同时抓取两个果冻。抓取多少个就可以确定你肯定有两个同一颜色的果冻?
喝啤酒问题
假如每3个空啤酒瓶可以换一瓶啤酒,某人买了10瓶啤酒,那么他最多可以喝到多少瓶啤酒?
三人住旅馆
有三个人去住旅馆,住三间房,每一间房元,于是他们一共付给老板30,第二天,老板觉得三间房只需要元就够了于是叫小弟退回5给三位客人,谁知小弟贪心,只退回每人,自己偷偷拿了2,这样一来便等于那三位客人每人各花了九元,于是三个人一共花了,再加上小弟独吞了不2,总共是。可是当初他们三个人一共付出30那么还有$1呢?
三筐苹果问题
有三筐水果,一筐装的全是苹果,第二筐装的全是橘子,第三筐是橘子与苹果混在一起。筐上的标签都是骗人的,(就是说筐上的标签都是错的)你的任务是拿出其中一筐,从里面只拿一只水果,然后正确写出三筐水果的标签。
猴子吃香蕉问题
一个小猴子边上有100 根香蕉,它要走过50 米才能到家,每次它最多搬50 根香蕉,每走1 米就要吃掉一根,请问它最多能把多少根香蕉搬到家里。
两人玩游戏,在脑门上贴数字(正整数&=1),只看见对方的,看不见自己的,而且两人的数字相差1,以下是两人的对话:
A:我不知道
B:我也不知道
A:我知道了
B:我也知道了
问A头上的字是多少?B头上的字是多少()
A A是4,B是3
B A是3,B是2
C A是2,B是1
D A是1,B是2
参考答案:
1、将甲香的一头点着,将乙香的两头点着,当乙香燃烧完时,说明已经过了半个小时,同时也说明甲香也正好燃烧了一半,此时,将甲香的另一头点着,从此时起到甲香完全烧完,正好15分钟。
2、打开一盏灯10分钟,关掉,打开第二盏,进去看看哪盏亮,摸摸哪盏热,热的是第一个打开的开关开的,亮的是第二个开关开的,另一个就是第三个。
3、每一对分开,一人拿一只,因为袜子不分左右脚的;
4、2次4个!
5、喝完10瓶后用9个空瓶换来3瓶啤酒(喝完后有4个空瓶)喝完这三瓶又可以换到1瓶啤酒(喝完后有2个空瓶),这时他有2个空酒瓶,如果他能向老板先借一个空酒瓶,就凑够了3个空瓶可以换到一瓶啤酒,把这瓶喝完后将空瓶还给老板就可以了。
所以他最多可以喝10+3+1+1=15瓶
6、他们所消费的27元里已经包括小弟贪污的2元了,再加退还的3元=30元。这种题一定不要乱了阵脚,根据一条思路做:这30元现在的分布是:老板拿25元,伙计拿2元,三人各拿1元,正好!
7、从标着“混合”标签的筐里拿一只水果,就可以知道另外两筐装的是什么水果了。
分析:从混合的拿出一个来,如果是苹果,而贴苹果的筐里有可能是橘子和混合,如果是混合,说明贴橘子的筐里是橘子,不成立(因为前提说了,每个标签都是错的)。所以贴苹果的筐里是橘子,则贴橘子的筐里是混合。
8、设小猴从0 走到50, 到A 点时候他可以直接抱香蕉回家了, 可是到A 点时候他至少消耗了3A 的香蕉( 到A, 回0, 到A), 一个限制就是小猴只能抱50 只香蕉, 那么在A 点小猴最多49 只香蕉.100-3A=49, 所以A=17. 这样折腾完到家的时候香蕉剩100-3A-(50-A)=50-2A=16.
9、答案B:
【解析】引理1:如果A看到B的头上是1,则A马上可以断定,自己头上的数是2(因为条件给定了数字是正整数且&=1)。
引理2:如果A看到B的头上是2,并且B说“我不知道”,则A马上可以断定:自己头上的数是3.因为A根据B是2可以推断自己是1或者3:如果自己是1,根据引理1,B应该说“我会知道”。把引理2中的A和B对调,就是选项中的B,并且A在听到B第一次说“我不知道”后的推理情况。
细致考察“A是3,B是2”这种情况:
第一次, A看到2,无法判断自己是1还是3,只好说不知道;
第二次, B看到3,无法判断自己是2还是4,只好说不知道;
第三次, A得知了“B不知道”,因此B看到的一定不是1(根据引理1),所以断定了自己是3;
第四次,B得知了“A知道”,因此A如果看到4是无法断定自己是几,因此,A一定是看到了自己头上是2.
A选项中,满足前三个对话,但第四次“B:我也知道了”是无法得出的,因为B无法判断自己是3还是5。
C选项中,A第一次说“我知道”。
D选项中,A说了“我不知道”后,B在第二次一定说“我知道”。
【总监】十二春秋之,;
【Master】zelo,;【运营】狼行天下,;
【产品设计】流浪猫,;【体验设计】兜兜,;
【iOS】淘码小工,;iMcG33K,;
【Android】人猿居士,;思路的顿悟,;
【java】首席工程师MR_W,;【测试】土镜问道,;
【数据】喜乐多,;【安全】保密,你懂的。
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!java50道经典逻辑题_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
java50道经典逻辑题
&&免费下载,,造福大家
阅读已结束,下载本文需要
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩11页未读,
定制HR最喜欢的简历
你可能喜欢这道逻辑题正确答案究竟选什么呀,有的资料选C,有的资料选E,还有为什么,解释一下,谢谢_百度知道
这道逻辑题正确答案究竟选什么呀,有的资料选C,有的资料选E,还有为什么,解释一下,谢谢
我有更好的答案
选B吧,一般来说家庭消费水平与家庭总收入有关,而此题只提到中等家庭收入提高,并不能代表所有阶层家庭。个人意见
不好意思没看懂你问的意思,二选一选E吧
采纳率:37%
E,问题与C实际上是矛盾的
为什么C与题干是矛盾的呢
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。跳进自己的星河,寻找耀眼的光芒
一道需要完备逻辑思考的小Java题目(对入小白)
在网易云课堂上的《Java应用基础:入门篇》中有这样一道题,多项式加法:
一个多项式可以表达为x的各次幂与系数乘积的和,比如:(下图中倒数第二项应该是6x,而不是6的x次幂)
现在,你的程序要读入两个多项式,然后输出这两个多项式的和,也就是把对应的幂上的系数相加然后输出。
程序要处理的幂最大为100。
总共要输入两个多项式,每个多项式的输入格式如下:
每行输入两个数字,第一个表示幂次,第二个表示该幂次的系数,所有的系数都是整数。第一行一定是最高幂,最后一行一定是0次幂。
注意第一行和最后一行之间不一定按照幂次降低顺序排列;如果某个幂次的系数为0,就不出现在输入数据中了;0次幂的系数为0时还是会出现在输入数据中。
输出格式:
从最高幂开始依次降到0幂,如:
2x6+3x5+12x3-6x+20
注意其中的x是小写字母x,而且所有的符号之间都没有空格,如果某个幂的系数为0则不需要有那项。
输入样例:
输出样例:
4x6+6x5+12x3+12x2+12x+40
=====================================================================================
这是数组章节里的一道题,在刚拿到这道题的时候,第一反应就是数组的下表刚好可以用来表示幂,for语句两次循环后把每项系数相加赋值给数组元素,然后逆向输出即可。这样简单的一写,用题目的输入完全可以得出正确的输出。可是放在用例测试却4个用例只通过了1个。。。
后来尝试了些不同的输入,发现之前的代码跳进很多坑里,其中比较容易忽视的:
A.输出时某一项系数为1或者-1时;
B.相加为0时。
这道题从技术上来说没有多大难度,主要在于逻辑的完备思考。所以我用了一个比较笨拙的方法,用一个二维数组而非一维数组。其中第一行数组元素为每项的系数,第二行对应的数组元素为洗漱的类别,其中有4种类别:
第1类:系数为1
第2类:系数&1
第3类:系数为-1
第4类:系数&-1
与此同时,需要分以下3种情况:
具体代码如下:
import java.util.S
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int polynomial[][] = new int[2][101];
for (int i = 0; i & 2; i++) {
power = in.nextInt();
int coefficient = in.nextInt();
polynomial[0][power] +=
} while (power != 0);
for (int i = 0; i & polynomial[0]. i++) {
if (polynomial[0][i] & 0) {
if (polynomial[0][i] == 1) {
polynomial[1][i] = 1;
//第1类:系数为1
polynomial[1][i] = 2;
//第2类:系数&1
if (polynomial[0][i] == -1) {
polynomial[1][i] = 3;
//第3类:系数为-1
polynomial[1][i] = 4;
//第4类:系数&-1
StringBuilder output = new StringBuilder();
boolean isFirst =
boolean isAllZero =
for (int i = polynomial[0].length - 1; i &= 0; i--) {
if (polynomial[0][i] != 0) {
isAllZero =
switch (polynomial[1][i]) {
//第1类:系数为1
if (i & 1) {
str = "x" +
} else if (i == 1) {
str = "x";
str = "1";
if (isFirst) {
output.append(str);
output.append("+").append(str);
//第2类:系数&1
if (i & 1) {
str = polynomial[0][i] + "x" +
} else if (i == 1) {
str = polynomial[0][i] + "x";
str = String.valueOf(polynomial[0][i]);
if (isFirst) {
output.append(str);
output.append("+").append(str);
//第3类:系数为-1
if (i & 1) {
str = "-x" +
} else if (i == 1) {
str = "-x";
str = "-1";
output.append(str);
//第4类:系数&-1
if (i & 1) {
str = polynomial[0][i] + "x" +
} else if (i == 1) {
str = polynomial[0][i] + "x";
str = String.valueOf(polynomial[0][i]);
output.append(str);
if (isAllZero) {
System.out.print(0);
System.out.print(output);
这个方法比较繁琐,也太不好理解。不知有什么更好的方法来解决这个问题,还希望各位大侠各位前辈多指点哦~
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!JAVA WEB面试题和逻辑题及答案_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
JAVA WEB面试题和逻辑题及答案
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩1页未读,
定制HR最喜欢的简历
你可能喜欢}

我要回帖

更多关于 java 逻辑运算符 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信