二进制数相加问题
本人初学C++。
问题如下:数组A、B分别存放n位二进制数,现在要将a+b的二进制数存入一个n+1位的数组。
以下是我写的程序,麻烦大家帮我看看问题出在哪。
#include <iostream>
#include "math.h"
using namespace std;
int main()
{
int i,n,a[100],b[100],c[100]={0};
int sum_a=0,sum_b=0,sum_c=0;
cout<<"请输入二进制数的位数n:"<<endl;
cin>>n;
cout<<"请输入二进制数a(以数组的形式:)"<<endl;
for (i=0;i<=n-1;i++)
{
cin>>a[i];
sum_a=sum_a+a[i]*pow(2,n-1-i);
}
cout<<"请输入二进制数b(以数组的形式:)"<<endl;
for (i=0;i<=n-1;i++)
{
cin>>b[i];
sum_b=sum_b+b[i]*pow(2,n-1-i);
}
cout<<"二进制数a对应的十进制数为:"<<sum_a<<endl;
cout<<"二进制数b对应的十进制数为:"<<sum_b<<endl;
for (i=n;i>=0;i--)
{
if (a[i-1]+b[i-1]+c[i]<=1)
{
c[i]=a[i-1]+b[i-1]+c[i];
}
else
{
c[i]=a[i-1]+b[i-1]+c[i]-2;
c[i-1]=c[i-1]+1;
}
}
cout<<"a+b得到的二进制数为:"<<endl;
for (i=0;i<=n;i++)
{
cout<<c[i];
}
for (i=0;i<=n;i++)
{
cin>>c[i];
sum_c=sum_c+c[i]*pow(2,n-i);
}
cout<<"二进制数c对应的十进制数为:"<<sum_c<<endl;
return 0;
}