#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void add(const char *a, const char *b, char *c)
{
int i = strlen(a);
int j = strlen(b);
char *result = (char *)calloc(i>=j?i+2:j+2, sizeof(char));
int carry = 0;
int sum = 0;
int result_length = 0;
while (i > 0 || j > 0)
{
sum = carry;
if (i > 0)
sum += a[i-- -1] - '0';
if (j > 0)
sum += b[j-- -1] - '0';
carry = sum / 10;
sum = sum % 10;
result[result_length++] = sum + '0';
}
if (carry > 0)
result[result_length++] = carry + '0';
while (result_length > 0)
*c++ = result[--result_length];
free(result);
}
int main(int argc, char *argv[])
{
if (argc != 3)
{
printf("Usage: %s a b\n", argv[0]);
return -1;
}
char result[1024] = {0};
add(argv[1], argv[2], result);
printf("%s + %s = %s\n", argv[1], argv[2], result);
return 0;
}
大数运算——加法
最新推荐文章于 2022-02-25 21:57:21 发布