如何在数组c ++中添加两个二进制数

时间:2018-01-20 18:48:46

标签: c++ arrays iostream

我想我在某个地方犯了一个错误,但我似乎无法找到它。我认为问题在于以错误的顺序添加或输入数据。我为任何错误道歉,英语不是我的主要语言。 enter image description here

#include <iostream>

using namespace std;

int main()
{
  int d, n, m, carry;
  int a[10000];
  int b[10000];
  int addition[10001];
  cin>>d;
  for(int i=0; i<d; i++)
  {
    int a[10000]={0};
    int b[10000]={0};
    int addition[10001]={0};

    cin>>n;
    for(int i=n; i>=1; i--)
    {
        cin>>a[i];
    }
    cin>>m;
    for (int i=m; i>=1; i--)
    {
        cin>>b[i];
    }
    if(n<m)
    {
        n=m;
    }
    carry=0;
    for (int i=1; i<=n; i++)
    {
      addition[i]=(a[i]+b[i]+carry)%2;  //way my teacher 
      carry=(a[i]+b[i]+carry)/2;
    }
    addition[n+1]=carry;
    // if(addition[n+1]==0)n--;
    for(int i=n; i>=0; i--)
    {
      cout<<addition[i];
    }
  }
  return 0;
}

1 个答案:

答案 0 :(得分:0)

我认为至少有两个错误。

1)在

for(int i=n; i>=0; i--)

你倒数到0但是在其他每一个循环中,你已经倒数到1.由于你计算得太远,你的输出最后会有一个额外的零。 (例如,它应显示1000何时应显示100。)

2)同样在该循环中,您从n开始。但是你可能会遗漏n+1,你是否忘记输出它?