高精度加法问题

来源:百度知道 编辑:UC知道 时间:2024/06/27 13:54:38
我的程序:
#include <iostream>

using namespace std;

int main()
{
int i,j;
char a[2000],b[2000];
int l1,l2;
int a1[2000],b1[2000],ans[20000]={0};
bool p=false;

cin>>a>>b;
l1=strlen(a);
l2=strlen(b);
for(i=0;i<l1;i++)
a1[i]=a[i]-48;
for(i=1;i<l2;i++)
b1[i]=b[i]-48;

for(i=0;i<l1/2;i++)
swap(a1[i],a1[l1-i-1]);
for(i=0;i<l2/2;i++)
swap(b1[i],b1[l2-i-1]);

int temp=0;
for(i=0;i<max(l1,l2);i++)
{
temp=0;
temp=a1[i]+b1[i];
if(temp>9)
{
ans[i]+=temp%10;
ans[i+1]+=temp/10;
temp=0;
}
else
{
ans[i]+=temp;
}
}

for(i=0;i<m

//大数求和(这里可以通过调整Num_Len的来限制数的最大位数)
#include <stdio.h>
#include <string.h>
#define Num_Len 10000
int main()
{
char LN[2][Num_Len];
long MinLen,i,LN_Len[2];
int jw=0,flag,flag1,equal,Temp; //进位:jw 下标:长度更小的那个数的下标flag

printf("Please input two Large Number less than %ld bit\n",Num_Len);
scanf("%s%s",&LN[0],&LN[1]);

LN_Len[0]=strlen(LN[0]);
LN_Len[1]=strlen(LN[1]);

equal=LN_Len[0]==LN_Len[1]?1:0;
flag=LN_Len[0]<LN_Len[1]?0:1;
MinLen=LN_Len[flag]-1;
flag1=1-flag;
LN_Len[flag1]=LN_Len[flag1]-MinLen-1;

for(i=MinLen;i>=0;i--)
{
Temp=LN[flag1][LN_Len[flag1]+i]+LN[flag]<i>+jw;
if(Temp>=106)
{
jw=1;