每日刷题(四十八)
BASIC-29、高精度加法
这个题唯一的难点在于字符的计算,如果要把字符转化成int型,直接减’0’就行
这里我设三个数组,两个字符数组用来分别记录第一二行输入数据,设一个int型数组来计算并存放数字
#include<stdio.h>
int main()
{
char a[101], b[101];
int ans[101] = {0};
gets(a);
gets(b);
int lena = 0;
while(a[lena] != '\0')
lena++;
a[lena] = '\0'; //得到a数组长度
int lenb = 0;
while(b[lenb] != '\0')
lenb++;
b[lenb] = '\0'; //得到a数组长度
int i = 0;
for(; i < lena || i < lenb; i++)
{
if(i < lena)
ans[i] += a[lena - i - 1] - '0';
if(i < lenb)
ans[i] += b[lenb - i - 1] - '0';
if(ans[i] >= 10)
{
int t = 0;
t = ans[i];
ans[i] %= 10;
ans[i + 1] += t / 10;
}
}
int k = 0;
while(i > -1)
{
if(ans[i] != 0)
k = 1;
if(k)
printf("%d", ans[i]);
i--;
}
return 0;
}
样例运行结果如下: