📅  最后修改于: 2023-12-03 15:12:35.515000             🧑  作者: Mango
问题描述:在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
。
请问,下面哪段代码片段能够实现类似的功能?
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。
解析:注意 x
与 y
相等的情况,返回的是 !z
的值,即当 z
为 0
时返回 1
,当 z
为 1
时返回 0
。因此,当 x
与 y
不相等时,返回值应该是 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。
解析:注意 x
与 y
相等的情况,返回的是 !z
的值,即当 z
为 0
时返回 1
,当 z
为 1
时返回 0
。因此,当 x
与 y
不相等时,返回值应该是 1
,否则应该是 !z
,也就是 z
的取反。选项 A 实现了这种逻辑,其它选项都没有考虑 z
的取反。