#include<stdio.h>
#include<string.h>
void addlong(char x[],char y[],char z[])
{int i,j,k,carry,sum;
i=strlen(x)-1;
j=strlen(y)-1;
k=0;carry=0;
while((i>=0)&&(j>=0))
{
sum=x[i--]+y[j--]-'0'+carry;
if(sum>'9')
{
sum-=10;carry=1;
}
else carry=0;
z[k++]=sum;
}
while(i>=0&&j<0)
{
sum=x[i--]+carry;
if(sum>'9')
{
sum-=10;carry=1;
}
else carry=0;
z[k++]=sum;
}
while(j>=0&&i<0)
{
sum=x[j--]+carry;
if(sum>'9')
{
sum-=10;carry=1;
}
else carry=0;
z[k++]=sum;
}
if(carry>0)z[k++]=carry+'0';
for(i=0;i<k/2;i++)
{
sum=z[i];z[i]=z[k-i-1];z[k-i-1]=sum;
}
}
void main()
{
char x[100],y[100],z[200];
gets(x);
gets(y);
addlong(x,y,z);
printf("sum:%s",z);
}
高精度加法
最新推荐文章于 2024-08-11 17:36:33 发布