Description:
在C/C++语言中,整型所能表示的范围一般为-231到231(大约21亿),即使long long型,一般也只能表示到-263到263。要想计算更加规模的数,就要用软件来扩展了,比如用数组或字符串来模拟更多规模的数及共运算。
现在输入两个整数,请输出它们的和。
Input:
两行,每行一个整数,每个整数不超过1000位
Output:
一行,两个整数的和。
Sample Input 1 : Sample Output 1:
15464315464465465 15464797786119616 482321654151
分析:
看到样例输出那么多位数字,必要使用数组,跟阶乘计算差不多,但要注意进位
另外注意的是,对于输出的数组最好还是进行清零操作,避免输出出现错误
解答:
#include <stdio.h>
#include<string.h>
int main()
{
int i,alen,blen;
char a[101], b[101], c[102];
memset(c,0,sizeof(c));//清零
scanf("%s%s", a, b);
alen = strlen(a);
blen = strlen(b);
for (i = 0; i < alen || i < blen; i++)
{
if (i < alen)
c[i] += a[alen-i-1] - '0';
if (i < blen)
c[i] += b[blen-i-1] - '0';
if (c[i] >= 10)
{
c[i+1] = c[i] / 10;
c[i] %= 10;
}
}
if (alen < blen) alen = blen;
if (c[alen] > 0) printf("%d", c[alen]);
for (i = alen - 1; i >= 0; i--)
printf("%d", c[i]);
return 0;
}