我的程序获取一个二进制字符串(最长200个字符),然后将其乘以十进制数。该计算器仅适用于前2-3次迭代。之后,它不会返回正确的结果。有帮助吗?
#include <stdio.h>
#include "myfun.c"
#include <string.h>
int main()
{
int l,l1;
char a[200],b[200],f[200];
int c[200],d[200];
for (i=0;i<200;i++)
{
c[i]=0;
d[i]=0;
}
gets(a);
l=strlen(a);
l1=strlen(a);
for (int i=0;i<l;i++)
{
c[200-l+i]=a[i]-48;
}
////////////////////////////////////////////
for (int i=0;i<l1;i++)
{
d[200-l1+i]=a[i]-48;
}
////////////////////////////////
for (int t=1;t<193;t++) //here is specify how many times i am multypling
bin_add(c,d);
for (i=0;i<200;i++){
printf("%d",c[i]);
}
return 0;
}
int bin_add(int c[200],int d[200])
{
int car[200]; //carry
i=200;
car[i]=0;
while (i >= 0) {
//find carry and shift it left
//find the sum
car[i-1] = c[i] & (d[i] |car[i]) ;
c[i]=(c[i]^d[i]) ^ car[i];
i--;
}
return c[i];
c[i]=0;
}