数组A、B存放N位二进制数,考虑相加问题。两个整数的和以二进制形式存放在具有N+1个元素的数组C里面。
代码如下:
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int n,a[100],b[100],c[101];
while(cin>>n) //输入数
{
for(int i=0;i<n;i++)
cin>>a[i];
for(int i=0;i<n;i++)
cin>>b[i];
memset(c,0,sizeof(int)*(n+1));//清零
for(int i=n-1;i>=0;i--) //遍历做加法
{
c[n-i-1]+=a[i]+b[i];
if(c[n-1-i]>1) //相加可能出现3或2,设法做进位;
{
c[n-1-i]-=2;
c[n-i]=1;
}
}
if(c[n-1]>1)
{
c[n-1]-=2;
c[n]=1;
}
if(c[n]==1) //控制高位输出;
cout<<c[n];
for(int i=n-1;i>=0;i--)
{
cout<<c[i];
}
cout<<endl;
}
}