For example,
a = "11"
b = "1"
Return "100"
.
運行環境:vs2010專業版
實現語言:C語言
char* addBinary(char* a, char* b)
{
bool flag = false;
int a_len = strlen(a);
int b_len = strlen(b);
int ab_diff = a_len>b_len?(a_len-b_len):(b_len-a_len);
static char sa[64];
static char sb[64];
sa[0]=sb[0]='\0';
if(a_len>b_len)
{
strcpy(sa, a);
int i;
for(i=0; i<ab_diff; i++)
strcat(sb,"0");
strcat(sb,b);
}
else
{
strcpy(sb,b);
int i;
for(i=0; i<ab_diff; i++)
strcat(sa,"0");
strcat(sa,a);
}
printf("%s\n%s\n", sa, sb);
for(int i=0; i<strlen(sa); i++)
{
if(flag){
if(sa[strlen(sa)-i-1]=='1' && sb[strlen(sa)-i-1]=='1')
{
sa[strlen(sa)-i-1] = '1';
flag = true;
}
else if(sa[strlen(sa)-i-1]=='0' && sb[strlen(sa)-i-1]=='0')
{
sa[strlen(sa)-i-1] = '1';
flag = false;
}
else
{
sa[strlen(sa)-i-1] = '0';
flag = true;
}
}
else
{
if(sa[strlen(sa)-i-1]=='1' && sb[strlen(sa)-i-1]=='1')
{
sa[strlen(sa)-i-1] = '0';
flag = true;
}
else if(sa[strlen(sa)-i-1]=='0' && sb[strlen(sa)-i-1]=='0')
{
sa[strlen(sa)-i-1] = '0';
flag = false;
}
else
{
sa[strlen(sa)-i-1] = '1';
flag = false;
}
}
}
printf("%s\n%s\n", sa, sb);
if(flag)
{
strcpy(sb,"1");
strcat(sb,sa);
return sb;
}
else
return sa;
}