高精度加法

7-1 高精度加法 (15分)
对于输入的两个不超过100位数字的非负整数,给出两数之和。

输入格式:
在两行中分别给出两个不超过100位数字的非负整数

输出格式:
在一行中输出两数之和

输入样例:

123
12

输出样例:

135

注意进位

#include
#include
char a[105],b[105];
int str[105];
int main(){
    scanf("%s%s", a, b);
    int lena = strlen(a);
    int lenb = strlen(b);
    int len = (lena>lenb ? lena : lenb) + 1;
    int carry = 0;
    int l = len;
    while(len-- && (lena || lenb)){
    	int s1 = a[--lena]-'0' >= 0 ? a[lena]-'0' : 0;
    	int s2 = b[--lenb]-'0' >= 0 ? b[lenb]-'0' : 0;
        int num = s1+s2;
        str[len] = num%10 + carry;
        //printf("%d %d %d %d %d\n",len, s1, s2, num,str[len]);

        carry = num/10;
    }
    if(carry == 1) str[0] = 1;
    for(int i = 0; i<l; i++){
    	if(i == 0 && str[i] == 0) continue;
		printf("%d", str[i]);
	}
    return 0;
}

你可能感兴趣的:(代码)