/*
时间:2014.1.16.22.00
目的:大数求和
*/
#include <stdio.h>
#include <string.h>
char a[1001],b[1001];
int c[1001];
int main()
{
int carr,len_a,len_b,i,j,temp,len;
while(~scanf("%s %s", a, b))
{
carr = len =0;
len_a = strlen(a);
len_b = strlen(b);
for(i = len_a - 1,j = len_b - 1;i >= 0 && j >= 0;i--, --j)
{
temp = a[i] - '0' + b[j] - '0' + carr;
c[len] = temp % 10;
carr = temp / 10;
len++;
}
while(i >= 0)
{
temp = carr + a[i] - '0';
c[len] = temp % 10;
carr = temp / 10;
i--;
len++;
}
// carr&&(c[len] = carr)&&(++len);此处我重复了一次 导致WA 因为当输出8 4 时 输出为112,多输出了一个1
while(j >= 0)
{
temp = carr + b[j] - '0';
c[len] = temp % 10;
carr = temp / 10;
j--;
len++;
}
carr&&(c[len] = carr)&&(++len);
for(--len;len>=0;--len)
printf("%d", c[len]);
printf("\n");
}
return 0;
}
/*
输出结果:
---------------------
2 6 思路: 1.由于数很大,必须用字符串存取
8 2.注意a,b串是从大高位到低位存储,故数字的最低位在串的最高位
10000000000000000000 100000000000000000000000000000003.c串的输出时高位到低位的输出
10000000000010000000000000000000
---------------------
*/
题目1198:a+b
最新推荐文章于 2014-02-16 14:17:35 发布