新颖之处:虽然代码十分清晰明了,但是这种书写方式、以及代码中变量的设置都是很值得学习的!
// 二进制加法
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
char* addBinary(char* a,char* b){
int lena = strlen(a) , lenb = strlen(b);
int lent = (lena > lenb ? lena : lenb) + 1;
int thirddig = 0 , leni = lent - 1;
char* tmp = (char*)malloc(lent + 1);
tmp[lent] = ' ';
for(int i=lena-1 , j=lenb-1 ; i>=0 || j>=0 ; i--,j--){
if (i>=0 && a[i]=='1') thirddig++;
if (j>=0 && b[j]=='1') thirddig++;
tmp[leni--] = (thirddig%2) + '0' ;
thirddig = thirddig >= 2 ? 1 : 0 ;
}
if(thirddig) tmp[leni--] = thirddig + '0' ;
return tmp+leni+1;
}
int main(){
char s1[200],s2[200];
while(scanf("%s%s",&s1,&s2)!=EOF){
puts(addBinary(s1,s2));
}
return 0;
}