按位AND和按位OR
Description
已知长度为n的两个位串a和b,求它们的按位AND和按位OR。
Input
多组测试数据,每组测试数据第1行输入位串长度n(0 < n <= 64),第2行输入n个以空格隔开的取值为0或1的整数表示位串a,第3行输入n个以空格隔开的取值为0或1的整数表示位串b。
Output
每组测试数据占两行,第一行输出n个以空格隔开的取值为0或1的整数表示a位串和b位串的按位AND,第2行输出n个以空格隔开的取值为0或1的整数表示a位串和b位串的按位OR。
Sample
Input
5
1 0 0 1 0
0 0 0 1 1
Output
0 0 0 1 0
1 0 0 1 1
按位AND运算其实就是当两者都为真时才是真,联结词和合取式相等
按位OR运算其实就是当有真则真,全假则假,联结词和析取式相等
#include<stdio.h>
int a[100],b[100];
int main()
{
int n,i;
while(scanf("%d",&n)!=EOF)
{
for(i=0; i<n; i++)
scanf("%d",&a[i]);
for(i=0; i<n; i++)
scanf("%d",&b[i]);
for(i=0; i<n; i++)
{
if(i==n-1)
{
if(a[i]==1&&b[i]==1)
printf("1\n");
else
printf("0\n");
}
else
{
if(a[i]==1&&b[i]==1)
printf("1 ");
else
printf("0 ");
}
}
for(i=0; i<n; i++)
{
if(i==n-1)
{
if(a[i]==0&&b[i]==0)
printf("0\n");
else
printf("1\n");
}
else
{
if(a[i]==0&&b[i]==0)
printf("0 ");
else
printf("1 ");
}
}
}
}