2

我一直在解决一些关于 AP 计算机科学逻辑测试的问题,但我碰巧遇到了一些问题。

以下是来自网站的说明: 将以下每个英语语句翻译成可用于 if/else 语句的逻辑测试。为下面的每个语句编写适当的逻辑测试。假设已经声明了三个 int 变量 x、y 和 z。

这些是我遇到的两个问题:

x 或 y 中的一个是偶数,另一个是奇数。

x 和 z 的符号相反。

几个小时以来,我一直试图找出这些答案,但我仍然没有任何线索。如果有人能引导我朝着正确的方向前进,我将不胜感激。我知道这是“家庭作业”,但一些明确的帮助会非常有帮助。

4

6 回答 6

4

第一个问题:x % 2 != y % 2 第二个问题:x * z < 0

于 2015-12-22T10:11:13.810 回答
2

您需要使用 and ( &&) 和 or ( ||) 来制作逻辑公式。我不会做你的,但这是另一个:

x 大于 y 和 z 或 x 小于 y 和 z。

转换为:

((x > y) && (x > z)) || ((x < y) && (x < z))

您只需要找出奇/偶(提示 - 低位)和正/负(提示 - 与 0 比较)的公式,并将它们与和/或结合起来。

于 2012-09-13T02:31:34.753 回答
1

x 或 y 中的一个是偶数,另一个是奇数。

奇数和偶数的和是奇数。两个奇数之和为偶数,两个偶数之和为偶数。

所以(x+y)%2!=0

x 和 z 的符号相反

这个类似,你可以这样做:

x*z<0

因为 0 既不是负数也不是正数,并且

  • 否定 * 位置 = 否定
  • 负 * 负 = 正
  • 位置 * 位置 = 位置

如果您想考虑 0 和负数的相反符号,您可以使用(x >= 0) == (z < 0)

于 2013-07-18T10:10:36.413 回答
1

对于第一个问题,如果 x(或 y)*为奇数,则 y(或 x)必须为偶数,反之亦然。检查奇数值意味着 x 和 2 的模为 1 - 从那里,您必须断言 y(或 x)模 2 是否为 0(以检查均匀性)。

对于第二个问题,您需要遵循如下逻辑链:

  • X 为正数(或大于 0),这意味着 Z 必须为负数(或小于 0)。
  • Z 为正,这意味着 X 必须为负。

*:这是一个排他或 - 我的意思是你要么检查 x 要么检查 y,但不能同时检查两者。

于 2012-09-13T02:34:17.053 回答
1

首先,您必须完全理解该语句才能将其放入计算机的语言中。例如,

x 和 y 具有相同的符号

这真正的意思是:

( x大于等于 0 y大于等于 0 ) ( x 小于 0 y 小于 0 )

现在很容易将其放入 Java 中:

(x >= 0 && y >= 0) || (x < 0 && y < 0)

当然,您的问题也可以通过类似的方法来解决。

于 2012-09-13T02:36:08.950 回答
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 为正。

于 2012-09-13T02:48:48.443 回答