高精度加法,,我彻底没办法了,数据都没错提交通不过。
#include "stdio.h"#include "string.h"
int main()
{
int a[80]={0,0},b[81]={0,0},i,t,w=0,la,lb;
char c[80];
//将c数组中的值转化为整型并分别赋值给a数组和b数组;ok
gets(c);la=strlen(c);
for(i=1;i<=la;i++)
{a[i]=c[i-1]-'0';}
gets(c);lb=strlen(c);
for(i=1;i<=lb;i++)
{b[i]=c[i-1]-'0'; }
//判断a、b数组的长度并使长的数组变为b,短的变为a;ok
if(lb<la)
{
t=lb;lb=la;la=t;
for(i=1;i<=lb;i++)
{
t=b[i];b[i]=a[i];a[i]=t;
}
}
//相加,进位;ok
for(i=la;i>=0;i--)
{
b[i+lb-la]=b[i+lb-la]+a[i]+w;
if(b[i+lb-la]>9)
{
b[i+lb-la]-=10;
w=1;
}
else
w=0;
}
//对首位处理进位;ok
if(lb>la)
b[lb-la-1]+=w;
else
b[0]+=w;
//输出;ok
if(b[0]==1)
{
for(i=0;i<=lb;i++)
printf("%d",b[i]);
}
else
{
for(i=1;i<=lb;i++)
printf("%d",b[i]);
}
return 0;
}