#include <stdio.h>
#include <string.h>
#include <malloc.h>
void add(char *a, char *b, char *c)
{
int i, j;
int m, n;
int carry = 0;
m = strlen(a);
n = strlen(b);
// c = (char*)malloc((m+n+1)*sizeof(char));
for(i=0; i<m+n+1; i++)
c[i] = 0;
a = strrev(a);
b = strrev(b);
i = m>n? m:n + 1;
for(j = 0; j<i; j++)
{
if(a[j] >= '0' && a[j] <= '9') // 化为整数并且对齐长度
a[j] -= '0';
else
a[j] = 0;
}
for(j = 0; j<i; j++)
{
if(b[j] >= '0' && a[j] <= '9')
b[j] -= '0';
else
b[j] = 0;
}
for(j=0; j<i; j++)
{
c[j] = (carry + a[j] + b[j])%10;
carry = (carry + a[j] + b[j] )/10;
}
while(i>=0 && c[i] == 0)
i --;
c[i+1] = '\0';
for(j=0; j<=i; j++)
{
c[j] += '0';
}
c = strrev(c);
// puts(c);
// free(c);
}
int main()
{
char a[20],b[20], c[50];
scanf("%s %s", a,b);
add(a,b,c);
puts(c);
system("pause");
return 0;
}
大数加法
最新推荐文章于 2024-10-31 17:10:20 发布