C语言:二进制相加输出二进制
程序员文章站
2022-03-08 14:37:06
...
二进制相加输出二进制
给定两个二进制字符串,返回他们的和(用二进制表示)。
输入为非空字符串且只包含数字 1 和 0。
示例 1:
输入: a = “11”, b = “1”
输出: “100”
示例 2:
输入: a = “1010”, b = “1011”
输出: “10101”
#include<stdio.h>
#include<string.h>
main()
{
char a[101],b[101];
int m,n,i,j,k;
scanf("a = %s",a);
scanf("b = %s",b);
m=strlen(a);
k=n=strlen(b);
if(m>k) k=m;
a[k+1]=0;
for(i=0;i<k;i++)
a[k-i]=a[m-i-1];
for(i=0;i<=k-m;i++)
a[i]='0';
for(i=0;i<=k;i++)
b[k-i]=b[n-i-1];
for(i=0;i<=k-n;i++)
b[i]='0';
j=0;
for(i=0;i<k;i++)
{
j=(a[k-i]+b[k-i]+j-96);
a[k-i]=j%2+48;
j=j/2;
}
a[0]=j+48;
if(a[0]=='0')
printf("%s\n",a+1);
else
printf("%s\n",a);
}