#include<iostream>
using namespace std ;
int main()
{
int is,is_an,is_o,is_ox;
int ans[2][2],o[2][2],xo[2][2];
int a,b,n;
while(cin>>a>>b>>n)
{
is=0;
is_an=0;
is_o=0;
is_ox=0;
for(int i=0;i<2;i++)
{
for(int j=0;j<2;j++)
{
ans[i][j]=0;
o[i][j]=0;
xo[i][j]=0;
}
}
if(a>0&&b>0)
{
ans[1][1]=1;
ans[0][1]=1;
ans[1][0]=1;
ans[0][0]=1;
}
if(a!=b||b!=a)
{
xo[0][1]=1;
xo[1][0]=1;
xo[1][1]=1;
xo[0][0]=1;
}
if(a>0||b>0)
{
o[1][0]=1;
o[0][1]=1;
o[1][1]=1;
o[0][0]=1;
}
/*for(int i=0;i<2;i++)
{
for(int j=0;j<2;j++)
{
cout<<o[i][j]<<" ";
}
cout<<endl;
}
cout<<endl;
for(int i=0;i<2;i++)
{
for(int j=0;j<2;j++)
{
cout<<xo[i][j]<<" ";
}
cout<<endl;
}
cout<<endl;*/
for(int i=0;i<2;i++)
{
for(int j=0;j<2;j++)
{
if(ans[i][j]==n)
{
is=1;
is_an=2;
}
if(o[i][j]==n)
{
is=1;
is_o=3;
}
if(xo[i][j]==n)
{
is=1;
is_ox=4;
}
}
}
if(is==0)
{
cout<<"IMPOSSIBLE"<<endl;
}
if(is_an==2)
{
cout<<"AND"<<endl;
}
if(is_o==3)
{
cout<<"OR"<<endl;
}
if(is_ox==4)
{
cout<<"XOR"<<endl;
}
}
}
if(a!=b||b!=a) { xo[0][1]=1; xo[1][0]=1; xo[1][1]=1; xo[0][0]=1; }
a!=b和b!=a應該判斷的東西是一樣的
還有這題數字沒有說一定是0或1
有可能是2.3.4.5......
所以不能用a!=b來判斷xor
如果數字是1和3
那XOR的節果應該是0
而你的寫法應該會變成1
#include
using namespace std ;
int main()
{
int is,is_an,is_o,is_ox;
int ans[2][2],o[2][2],xo[2][2];
int a,b,n;
while(cin>>a>>b>>n)
{
is=0;
is_an=0;
is_o=0;
is_ox=0;
#include using namespace std ; int main() { int is,is_an,is_o,is_ox; int ans[2][2],o[2][2],xo[2][2]; int a,b,n; while(cin>>a>>b>>n) {a = (bool)a; b = (bool)b; is=0; is_an=0; is_o=0; is_ox=0; 以下省略...