用基础C语言怎么求 两个大数相加 1999999999999999999+2333333333333333333333333

2024-11-25 18:00:31
推荐回答(2个)
回答1:

string add(string a,string b){ //加法的函数;
string cc;
int lena = a.size();
int lenb = b.size();

int m = 0;
int n;
int sum = 0;
int aa;
int bb;
while(1){
if(lena == 0 && lenb == 0){
if (m != 0) //在结束之前记得判断最后一次m是否不为零;
{
char end[2] = "";
end[0] = m + 48;
string en = end;
cc = en + cc;
}
return cc;
}
else if(lena >0 && lenb > 0){
aa = a[lena - 1] - 48;
bb = b[lenb - 1] - 48;
lena--;
lenb--;
}
else if (lena > 0 && lenb == 0)
{
aa = a[lena - 1] - 48;
bb = 0;
lena--;
}
else if (lenb > 0 && lena == 0)
{
bb = b[lenb - 1] - 48;
aa = 0;
lenb--;
}
sum = aa + bb + m;
m = sum/10;
n = sum%10;
char bbb[2] = "";
bbb[0] = n + 48;
// string nn = bbb;
cc = bbb + cc;
}
}
c++写的,但是思路是一样的,把string换成char *就可以了

回答2:

#include "stdio.h"
int main(int argc,char *argv[]){
char a[]="01999999999999999999",b[]="02333333333333333333333333",ll,ls,*pl,*ps,k;
for(pl=a,ll=0;a[ll];ll++);
for(ps=b,ls=0;b[ls];ls++);
if(ll k=ll,ll=ls,ls=k;
pl=b,ps=a;
}
for(k=--ll,ls--;ls>0;pl[ll--]+=ps[ls--]-'0');
for(;k>0;k--)
if(pl[k]>'9')
pl[k]-=10,pl[k-1]++;
printf("a+b = %s\n",pl[0]=='0' ? pl+1 : pl);
return 0;
}

运行结果: