C语言两个超大数相加该怎么弄?能给更改一下么?

2024-11-25 09:03:19
推荐回答(1个)
回答1:

给你一个我以前写的程序,可以参考哈

void BigNumPuls(char output[], char input1[], unsigned int len1, char input2[], unsigned int len2)
{
int CF=0;
unsigned int i,j;
unsigned int len3=MAX(len1, len2);
// 将字符长度最大的字符串赋值给output
if(len1>len2)
{
for(i=0; i output[i+1] = input1[i];
}
else
{
for(i=0; i output[i+1] = input2[i];
}
// 计算input1和input2公共部分
for(i=0; i {
int a = input1[len1-i-1]-'0';
int b = input2[len2-i-1]-'0';
output[len3-i] = (a+b+CF)%10 + '0';
CF = (a+b+CF)/10;
}
// 计算多出的部分
for(j=i; j {
int a = output[len3-j]-'0';
output[len3-j] = (a+CF)%10 + '0';
CF = (a+CF)/10;
}
// 判断最高位是0还是1,取决于次高位是否产生进位
if(CF==1)
output[0] = '1';
else
output[0] = '0';
}