我一直在解决有关AP计算机科学逻辑测试的一些问题,但我碰巧遇到了几个问题。
以下是网站上的说明:将以下每个英语语句翻译成可在if / else语句中使用的逻辑测试。为下面的每个语句编写适当的逻辑测试。假设已经声明了三个int变量x,y和z。
这是我遇到的两个问题:
x或y是偶数,另一个是奇数。
x和z的符号相反。
我一直试图找出这些答案几个小时,我仍然没有任何线索。如果有人能引导我朝着正确的方向前进,我将不胜感激。我知道这是“家庭作业”,但一些明确的帮助会非常有用。
答案 0 :(得分:3)
对于第一个问题:x % 2 != y % 2
第二个问题:x * z < 0
答案 1 :(得分:2)
您需要使用and(&&
)和or(||
)来制作逻辑公式。我不打算做你的,但这是另一个:
x大于y和z,或者x小于y和z。
转换为:
((x > y) && (x > z)) || ((x < y) && (x < z))
你只需要找出奇数/偶数(提示 - 低位)和正/负(提示 - 与0比较)的公式,并将它们与和/或组合。
答案 2 :(得分:1)
对于第一个问题,如果x(或y) * 是奇数,则y(或x)必须是偶数,反之亦然。检查奇数值意味着x和2的模数是1 - 从那里,你必须断言y(或x)模2是否为0(检查均匀性)。
对于第二个问题,你需要遵循一系列逻辑:
*:这是一个独家或 - 我的意思是你要么检查x或y,而不是同时检查两者。
答案 3 :(得分:1)
首先,您必须完全理解该声明,以便将其置于计算机的语言中。例如,
x和y具有相同的符号
这真正意味着:
( x 大于或等于0 且 y 大于或等于0 < b>) 或 ( x小于0 y小于0 )
现在很容易把它放到Java中:
(x >= 0 && y >= 0) || (x < 0 && y < 0)
当然,您的问题可以通过类似的方法解决。
答案 4 :(得分:1)
x或y是偶数,另一个是奇数。
奇数和偶数之和是奇数。两个奇数的和是偶数,两个偶数的和是偶数。
所以(x+y)%2!=0
。
x和z具有相反的符号
这个类似,你可以这样做:
x*z<0
因为0既不是消极的也不是正面的
如果您想考虑0和负数的相反符号,可以使用(x >= 0) == (z < 0)
答案 5 :(得分:0)
无论如何,请用简单的英语。
If ((x is even AND y is odd) OR (x is odd AND y is even))
对于其他
If ((x gt or eq 0 AND y lt 0) OR (y gt or eq 0 AND x lt 0))
假设0为正。