// 输入 char a[MAX_LEN] 和 char b[MAX_LEB], 相加得出char pcRet[MAX_LEN +1 ]
void Add(char * pcA, char *pcB, char *pcRet)
{
int i = 0;
for (i = 0; i < MAX_LEN; i++)
{
c[i] = a[i] + b[i];
}
for (i = 0; i < MAX_LEN; i++)
{
if (c[i] >= 10)
{
c[i+1] = c[i]/10;
c[i] = c[i]%10;
}
}
}
void multiply(char* a,char* b,char* c){ int i,j,ca,cb,* s; ca=strlen(a); cb=strlen(b); s=(int*)malloc(sizeof(int)*(ca+cb)); for (i=0;i<ca+cb;i++) s[i]=0; for (i=0;i<ca;i++) for (j=0;j<cb;j++) s[i+j+1]+=(a[i]-'0')*(b[j]-'0'); for (i=ca+cb-1;i>=0;i--) if (s[i]>=10) { s[i-1]+=s[i]/10; s[i]%=10; } i=0; while (s[i]==0) i++; for (j=0;i<ca+cb;i++,j++) c[j]=s[i]+'0'; c[j]='\0'; free(s);}
本文介绍了一种实现字符串形式的大数加法与乘法的方法。通过定义两个函数Add和multiply来完成对两个字符串表示的大数进行加法和乘法运算。Add函数通过逐位相加并进位处理实现加法,而multiply函数则使用类似小学乘法的方式实现乘法运算,并考虑了进位。
5万+

被折叠的 条评论
为什么被折叠?



