C语言实现的高精度加法
主要考虑问题:
1.进位的处理
2.细节加减的处理
#include <stdio.h>
#include <string.h>
//只考虑都是正整数的情况
int main()
{
char str1[100000],str2[100000],sum[100010];
scanf("%s %s",str1,str2);
int t=0,ans=0,i,j,k=0;
for(i=strlen(str1)-1,j=strlen(str2)-1;i>=0&&j>=0;i--,j--)
{
//注意此处一定是减去两个'0'!
ans=str1[i]+str2[j]-'0'-'0';
sum[k]=ans%10+t+'0';
t=ans/10;
k++;
}
//考虑不一样长的情况
if(strlen(str1)<strlen(str2))
for(j=strlen(str2)-strlen(str1)-1;j>=0;j--)
{
sum[k]=(t+str2[j]-'0')%10+'0';
t=(t+str2[j]-'0')/10;
k++;
}
else if(strlen(str1)>strlen(str2))
for(j=strlen(str1)-strlen(str2)-1;j>=0;j--)
{
sum[k]=(t+str1[j]-'0')%10+'0';
t=(t+str1[j]-'0')/10;
k++;
}
sum[k]='\0';
for(i=strlen(sum)-1;i>=0;i--)
printf("%c",sum[i]);
// printf("\n");
return 0;
}