大整数加法

写程序求两个相同位数的大整数之和

输入

两个大整数(位数不超过1000)

输出

两个大整数的和

样例输入

1234567890 1234567890
111111111111 222222222222

样例输出

2469135780
333333333333
#include <stdio.h>
#include <string.h>
char add(char a, int &tag){
int r = a-'0'+tag;
if (r <= 9){
   tag = 0;
   return r+'0';
}
else{
   tag = 1;
   return r+38;
}
}
char add(char a, char b, int &tag){
int r = a+b-96+tag;
if (r <= 9){
   tag = 0;
   return r+'0';
}
else{
   tag = 1;
   return r+38;
}
}
int add(char sum[], char a[], char b[]){
int i = strlen(a)-1, j = strlen(b)-1, k = 0, tag = 0;
while (i>=0 && j>=0){
   sum[k++] = add(a[i--], b[j--], tag);
}
while (i >= 0){
   sum[k++] = add(a[i--], tag);
}
while (j >= 0){
   sum[k++] = add(b[j--], tag);
}
if (tag != 0){
   sum[k++] = tag+'0';
}
return k;
}
int main(){
char a[1001], b[1001], sum[1002];
int i, k;
while (scanf("%s %s", a, b) == 2){
   k = add(sum, a, b);
   for (i=k-1; i>=0; --i){
    printf("%c", sum[i]);
   }
   printf("
");
}
return 0;
}
原文地址:https://www.cnblogs.com/Lazy-Cat/p/9838281.html