#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 发布
本文介绍了一个使用 C 语言实现的字符串加法程序。该程序能够处理任意长度的数字字符串,并通过逆序处理和进位机制完成两个数字字符串的加法运算。文章详细展示了如何将输入的字符型数字转换为整数进行计算,处理不同长度字符串的对齐问题,并最终输出正确的加法结果。
2433

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



