快轉到主要內容

邏輯運算子

目錄

題目連結

題目說明
#

給三個整數值,第一個代表 a,第二個代表 b,這兩數均為正數,第三個為運算結果,只會是 0 或 1。
輸出可能得到指定結果的運算,若有多個,輸出順序為AND、OR、XOR,若不可能得到指定結果,輸出IMPOSSIBLE。

解題過程
#

首先輸入 a, b, ans ,因為 a, b有可能不是 1 ,要把不是 0 的值全設為 1 以利於後續判斷。

  int a, b, ans, can = 1;
  cin >> a >> b >> ans;
  a=(a != 0? 1 : 0),b=(b != 0? 1 : 0);

接下來用邏輯運算子進行運算,如果可以就輸出,並把 can 設為 0 ,如果三個條件都沒成立則會輸出 IMPOSSIBLE 。

  if((a && b) == ans) can = 0, cout << "AND" << endl;
  if((a || b) == ans) can = 0, cout << "OR" << endl;
  if((a ^ b) == ans) can = 0, cout << "XOR" << endl;
  if(can) cout << "IMPOSSIBLE" << endl;

程式就完成了!
完整程式碼如下

#include <iostream>
using namespace std;

int main() 
{
  int a, b, ans, can = 1;
  cin >> a >> b >> ans;
  a=(a != 0? 1 : 0),b=(b != 0? 1 : 0);
  if((a && b) == ans) can = 0, cout << "AND" << endl;
  if((a || b) == ans) can = 0, cout << "OR" << endl;
  if((a ^ b) == ans) can = 0, cout << "XOR" << endl;
  if(can) cout << "IMPOSSIBLE" << endl;
    return 0;
}
Piau 的筆記本
作者
Piau 的筆記本
希望我寫下來的東西能夠長久的記在我的腦中