📜  门| GATE CS 1997 |问题11(1)

📅  最后修改于: 2023-12-03 15:12:35.515000             🧑  作者: Mango

门 | GATE CS 1997 | 问题11

问题描述:在C语言中,有一个名为"门"(gate)的函数,函数原型为 int gate(int x, int y, int z);。当 x = y 时,函数返回 !z 的值,否则返回 1

例如:当 x = y = 3z = 0 时,函数返回 1。当 x = y = 3z = 1 时,函数返回 0

请问,下面哪段代码片段能够实现类似的功能?

1. int gate(int x, int y, int z)
2. {
3.    return (x == y) ? !z : 1;
4. }
A. int gate(int x, int y, int z) {
       return (x != y) ? 1 : !z;
   }
B. int gate(int x, int y, int z) {
       return (!x && !y) ? z : 1;
   }
C. int gate(int x, int y, int z) {
       return (!z) ? 1 : (x == y);
   }
D. int gate(int x, int y, int z) {
       return (x || y) ? !z : 1;
   }

正确答案是 A。

解析:注意 xy 相等的情况,返回的是 !z 的值,即当 z0 时返回 1,当 z1 时返回 0。因此,当 xy 不相等时,返回值应该是 1,否则应该是 !z,也就是 z 的取反。选项 A 实现了这种逻辑,其它选项都没有考虑 z 的取反。

Markdown 返回代码片段:

## 门 | GATE CS 1997 | 问题11

问题描述:在C语言中,有一个名为"门"(gate)的函数,函数原型为 `int gate(int x, int y, int z);`。当 `x = y` 时,函数返回 `!z` 的值,否则返回 `1`。

例如:当 `x = y = 3`,`z = 0` 时,函数返回 `1`。当 `x = y = 3`,`z = 1` 时,函数返回 `0`。

请问,下面哪段代码片段能够实现类似的功能?

```c
1. int gate(int x, int y, int z)
2. {
3.    return (x == y) ? !z : 1;
4. }
A. int gate(int x, int y, int z) {
       return (x != y) ? 1 : !z;
   }
B. int gate(int x, int y, int z) {
       return (!x && !y) ? z : 1;
   }
C. int gate(int x, int y, int z) {
       return (!z) ? 1 : (x == y);
   }
D. int gate(int x, int y, int z) {
       return (x || y) ? !z : 1;
   }

正确答案是 A。

解析:注意 xy 相等的情况,返回的是 !z 的值,即当 z0 时返回 1,当 z1 时返回 0。因此,当 xy 不相等时,返回值应该是 1,否则应该是 !z,也就是 z 的取反。选项 A 实现了这种逻辑,其它选项都没有考虑 z 的取反。