实现任意范围的两个整数的加法( 整数的范围用 int 型的变量无法表示)
//大整数加法。 实现任意范围的两个整数的加法( 整数的范围用 int 型的变量无法表示)
void addSuper(){
char a[50]={0}, b[50]={0}, rst[50]={0}, *p;
int lena, lenb, max, min, tmp;
int flg;
while(gets(a) != NULL && gets(b) != NULL){
lena = strlen(a);
lenb = strlen(b);
memset(rst, 48, 50);
if(lena>lenb){
max = lena;
min = lenb;
p = a;
}
else{
max = lenb;
min = lena;
p = b;
}
rst[max+1] = '\0';
tmp = min;
//a b 相同长度的若干低位数
while(tmp){
flg = a[lena+tmp-min-1] + b[lenb+tmp-min-1] + rst[tmp+max-min] - 144;
if( flg < 10){
rst[tmp+max-min] = flg + 48;
}
else{
rst[tmp+max-min] = flg - 10 + 48;
rst[tmp+max-min-1] = 49;
}
tmp--;
}
//单独一数剩下的若干高位
tmp = max - min;
while(tmp){
flg = p[tmp-1] + rst[tmp] - 96;
if( flg < 10){
rst[tmp] = flg + 48;
}
else{
rst[tmp] = flg - 10 + 48;
rst[tmp-1] = 49;
}
tmp--;
}
printf("The result :%s\n", rst);
fflush(stdin);
}
}