#include<stdio.h>
#include<string.h>
#define N 50
void Sum(char a[],char b[],char sum[])
{
int len_a=strlen(a),len_b=strlen(b),sum_temp;
int gewei=0,shiwei=0;
int i=len_a-1,j=len_b-1,k=len_a>len_b?len_a:len_b;
sum[k+1]=0;
for(;i>=0&&j>=0;i--,j--,k--) //从后往前对齐位数
{
sum_temp=a[i]-'0'+b[i]-'0'+shiwei;
gewei=sum_temp%10;
shiwei=sum_temp/10;
sum[k]=gewei+'0';
}
if(i>=0) //a的位数太多把前半段加到sum里
{
for(;i>=0;i--,k--)
{
sum_temp=a[i]-'0'+shiwei;// 完成一位加分
gewei=sum_temp%10;
shiwei=sum_temp/10;
sum[k]=gewei+'0';
}
}
if(j>=0) //b的位数太多把前半段加到sum里
{
for(;j>=0;j--,k--)
{
sum_temp=b[j]-'0'+shiwei;// 完成一位加分
gewei=sum_temp%10;
shiwei=sum_temp/10;
sum[k]=gewei+'0';
}
}
if(k==0) sum[0]='0'+shiwei;
}
int main()
{
char a[N]={0},b[N]={0},sum[20]={0};
gets(a);
gets(b);
Sum(a,b,sum);
if(sum[0]=='0') puts(sum+1);
else puts(sum);
}
wj的大仓库:高精度加法
于 2023-03-23 23:31:52 首次发布