#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int a,b,c,d;
while (cin>>a>>b>>c)
{
d=0;
if ((a&&b)==c)
{cout <<"AND"<<endl;
d++;}
if ((a||b)==c)
{cout <<"OR"<<endl;
d++;}
if ((a^b)==c)
{cout <<"XOR"<<endl;
d++;}
if (d==0)
cout <<"IMPOSSIBLE"<<endl;
}
return 0;
}
這樣寫為什麼 3 0 1 的xor 出不來??
#include
#include
using namespace std;
int main()
{
int a,b,c,d;
while (cin>>a>>b>>c)
{
d=0;
if ((a&&b)==c)
{cout <<"AND"<<endl;
d++;}
if ((a||b)==c)
{cout <<"OR"<<endl;
d++;}
if ((a^b)==c)
{cout <<"XOR"<<endl;
d++;}
if (d==0)
cout <<"IMPOSSIBLE"<<endl;
}
return 0;
}
這樣寫為什麼 3 0 1 的xor 出不來??
因為這樣系統會誤以為a,b要進行的是位元的XOR運算
位元的XOR運算:
以3,0為例
3的二進位表示法為11
0的二進位表示法為00
位元的XOR運算是這樣運算的
(1^0)*2+(1^0)=3
結果為0,不為預期的1
要在用整數型態輸入過了之後,再把a,b轉成bool運算再輸出(可以用!=0或兩個!來轉換)
以下是我的程式碼((1)僅供參考(2)盡量自己寫,別看):
#include <iostream> using namespace std; int main(int argc, char** argv) { int a,b,c,d=0; cin>>a>>b>>c; if((a&&b)==c)cout<<"AND"<<'\n',d++; if((a||b)==c)cout<<"OR"<<'\n',d++; if(((a!=0)^(b!=0))==c)cout<<"XOR"<<'\n',d++; if(d==0)cout<<"IMPOSSIBLE"<<'\n'; return 0; }
#include
#include
using namespace std;
int main()
{
int a,b,c,d;
while (cin>>a>>b>>c)
{
d=0;
if ((a&&b)==c)
{cout <<"AND"<<endl;
d++;}
if ((a||b)==c)
{cout <<"OR"<<endl;
d++;}
if ((a^b)==c)
{cout <<"XOR"<<endl;
d++;}
if (d==0)
cout <<"IMPOSSIBLE"<<endl;
}
return 0;
}
這樣寫為什麼 3 0 1 的xor 出不來??
因為這樣系統會誤以為a,b要進行的是位元的XOR運算
位元的XOR運算:
以3,0為例
3的二進位表示法為11
0的二進位表示法為00
位元的XOR運算是這樣運算的
(1^0)*2+(1^0)=3
結果為0,不為預期的1
要在用整數型態輸入過了之後,再把a,b轉成bool運算再輸出(可以用!=0或兩個!來轉換)
以下是我的程式碼((1)僅供參考(2)盡量自己寫,別看):
#include using namespace std; int main(int argc, char** argv) { int a,b,c,d=0; cin>>a>>b>>c; if((a&&b)==c)cout<<"AND"<<'\n',d++; if((a||b)==c)cout<<"OR"<<'\n',d++; if(((a!=0)^(b!=0))==c)cout<<"XOR"<<'\n',d++; if(d==0)cout<<"IMPOSSIBLE"<<'\n'; return 0; }
感謝大大~~~已解決
#include
#include
using namespace std;
int main()
{
int a,b,c,d;
while (cin>>a>>b>>c)
{
d=0;
if ((a&&b)==c)
{cout <<"AND"<<endl;
d++;}
if ((a||b)==c)
{cout <<"OR"<<endl;
d++;}
if ((a^b)==c)
{cout <<"XOR"<<endl;
d++;}
if (d==0)
cout <<"IMPOSSIBLE"<<endl;
}
return 0;
}
這樣寫為什麼 3 0 1 的xor 出不來??
因為這樣系統會誤以為a,b要進行的是位元的XOR運算
位元的XOR運算:
以3,0為例
3的二進位表示法為11
0的二進位表示法為00
位元的XOR運算是這樣運算的
(1^0)*2+(1^0)=3
結果為3,不為預期的1
要在用整數型態輸入過了之後,再把a,b轉成bool運算再輸出(可以用!=0或兩個!來轉換)
以下是我的程式碼((1)僅供參考(2)盡量自己寫,別看):
#include using namespace std; int main(int argc, char** argv) { int a,b,c,d=0; cin>>a>>b>>c; if((a&&b)==c)cout<<"AND"<<'\n',d++; if((a||b)==c)cout<<"OR"<<'\n',d++; if(((a!=0)^(b!=0))==c)cout<<"XOR"<<'\n',d++; if(d==0)cout<<"IMPOSSIBLE"<<'\n'; return 0; }
感謝大大~~~已解決