我需要说这两个数字都是有效的,如果两个数字都是无效的,那么一个数字是无效的;如果一个数字是有效的而另一个数字不是,那么它需要说出哪个是有效的,哪个是无效的。 t
我尝试了下面的代码,即使其中之一无效而第二个有效,它仍然会说有效或无效
所以如果两者都有效,我想说:它们都是有效的
如果两者都无效:它们都是无效的
如果一个有效而另一个无效,则应说出它们是否有效
if ((Q == 100 || Q == 400) && (W == 100 || W == 400))
cout << "they are invalid\n";
else if (!((Q == 100 || Q == 400) && (W == 100 || W == 400))) //else if ((Q != 100 && Q != 400) && (W != 100 && W != 400)) //
cout << "they are valid\n";
else {
if (Q == 100 || Q == 400)
cout << "Q is invalid";
else
cout << "Q is valid";
if (W == 100 || W == 400)
cout << "W is invalid\n";
else
cout << "W is valid\n";
}
我希望它说:
Q is invalid
W is valid
当W == 200和Q == 400时
答案 0 :(得分:1)
有一个简单的方法可以做到这一点。这是方法。
答案 1 :(得分:1)
#include <bits/stdc++.h>
using namespace std;
main()
{
int Q, W;
cin >> Q >> W;
if ((Q == 100 || Q == 400) && (W == 100 || W == 400)){
cout << "they are invalid\n";
return 0;
}else if ((Q != 100 && Q != 400) && (W != 100 && W != 400)){
cout << "they are valid\n";
return 0;
}
if (Q == 100 || Q == 400)
cout << "Q is invalid" << endl;
else
cout << "Q is valid" << endl;
if (W == 100 || W == 400)
cout << "W is invalid\n";
else
cout << "W is valid\n";
}
答案 2 :(得分:0)
要了解出了什么问题,您需要检查W=200
和Q=400
的逻辑运算符的结果是什么:
( // !false => true
!( // true && false => false
(Q == 100 || Q == 400) && // true
(W == 100 || W == 400) // false
)
)
但是您希望(Q == 100 || Q == 400)
和(W == 100 || W == 400)
都为false
,因此您要编写:
(
(
! (Q == 100 || Q == 400) &&
! (W == 100 || W == 400)
)
)
如果现在要将!
从括号中移出,则需要将&&
更改为||
。
(
!(
(Q == 100 || Q == 400) ||
(W == 100 || W == 400)
)
)
答案 3 :(得分:0)
我建议使代码更易于阅读,这样您就不必处理更复杂的布尔代数了。您可以通过引入辅助变量来做到这一点:
const bool q_is_valid = Q != 100 && Q != 400;
const bool w_is_valid = W != 100 && W != 400;
现在,其余的变得更容易写和读了:
if (q_is_valid && w_is_valid) {
cout << "Both are valid.\n";
} else if (!q_is_valid && !w_is_valid) {
cout << "Both are invalid.\n";
} else {
cout << "Q is " << (q_is_valid ? "valid" : "invalid") << ".\n"
<< "W is " << (w_is_valid ? "valid" : "invalid") << ".\n";
}