C语言中把两个几十位的数相加怎么办啊

来源:百度知道 编辑:UC知道 时间:2024/06/20 17:58:27

上面的 同学很辛苦~~也算是一种方法

不过我认为 例如123456789可以这么来可能

1x10的8次方+2x10的7次方+3x10的6次方.....

这样存储应该 方便很多吧

用数组或者链表,通过大数加法的算法实现

标准的做法:
typedef struct
{
int *NumHead;//数组头
int size;//数组大小
}BigNumber;
const int BigBase = 1000000000;//进制
const int PerBitLen = 9;
const int BigSize=sizeof(BigNumber);
//从字符串初始化大数
int BaseChange(char *str,int low,int up)
{
int i=up;
int sum=0;

for(;i>=low;--i)
{
if(str[i]=='0')continue;
if(str[i]<'0'||str[i]>'9')return -1;
sum+=(str[i]-'0')*((int)pow((double)10,(double)up-i));
}
return sum;
}
BigNumber *Str_BigInit(char * str)
{
int strlenth,bitlen;
int i=0,k=0;
BigNumber *Big;
assert(str!=NULL);
while(*str++=='0');
strlenth=strlen(--str);
bitlen=strlenth/PerBitLen;

if(strlenth%PerBi