目录
一、高精度
1.高精度加法:
通过字符数组存储所输入的超长数字,再运用循环把字符数组转换成int数组,通过下标把两个数组加到一个全新的数组中,进行进位操作时,在新数组中,先把i下标的数值除以10取出十位数加入i+1下标的值中,i下标的数就%10赋给自己,结束后,通过下标把前导0给取消。注意当0+0时,要进行判断,否则无法输出。
#include<stdio.h>
#include<string.h>
char s1[2000000],s2[2000000];
int sum[2000000]={0},a[2000000]={0},b[2000000]={0};
int main()
{
int la,lb;
scanf("%s",s1);
scanf("%s",s2);
la=strlen(s1);
lb=strlen(s2);
int i;
for(i=0;i<la;i++) a[la-i-1]=s1[i]-'0';
for(i=0;i<lb;i++) b[lb-i-1]=s2[i]-'0';
int temp=lb>la?lb:la;
for(i=0;i<=temp;i++)
{
sum[i]+=a[i]+b[i];
sum[i+1]=sum[i]/10;
sum[i]=sum[i]%10;
}
while(sum[temp]==0&&temp>0)
temp-=1;
while(temp>=0)
{
printf("%d",sum[temp]);
temp--;
}
return 0;
}
2.高精度减法:
与高精度加法方式差不多ÿ