數組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;
}
}