为了不每次都到处找代码,这次自己存档一个关于大数相加的代码。
后续继续补充其他相关的方法。
#include <stdio.h>
#include <string.h>using namespace std;
const int MAXL = 35;
struct BigNum{
int num[MAXL];
int len;
};
BigNum ToNum(char *s) {
int i, j;
BigNum a;
memset(a.num, 0, sizeof(a.num));
a.len = strlen(s);
for(i = 0, j = a.len-1; s[i] != '\0'; i++, j--)
a.num[i] = s[j]-'0';
return a;
}
BigNum Add(BigNum &a, BigNum &b) {
BigNum c;
int i, len;
len = (a.len > b.len) ? a.len : b.len;
memset(c.num, 0, sizeof(c.num));
for(i = 0; i < len; i++){
c.num[i] += (a.num[i]+b.num[i]);
if(c.num[i] >= 10){
c.num[i+1]++;
c.num[i] -= 10;
}
}
if(c.num[len]) len++;
c.len = len;
return c;
}
int main(){
char s1[MAXL], s2[MAXL];
while(scanf("%s %s",s1, s2)!=EOF) {
BigNum a,b,c;
a = ToNum(s1);
b = ToNum(s2);
c = Add(a,b);
for(int i=c.len-1;i>=0;i--){
printf("%d",c.num[i]);
}
printf("\n");
}
return 0;
}