用C语言编程计算两个超长正整数(长度小于100)的加法

帮帮忙,急用~!
需要用数组解答. 希望能有具体的程序,谢谢了~

这是大数加法问题,我给你一个参考代码

输入至多100行的文本,每行是一个至多100位的十进制无符号大整数,最后的输入行为零。要求计算出这些大整数的和,并以十进制方式显示。

示例输入:

123456789012345678901234567890
123456789012345678901234567890
123456789012345678901234567890
0

示例输出:

370370367037037036703703703670

#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
const int n = 100;// 数字的最大位数
const int b = 10; // 数字的进制
char r[n+1] = {0};// 加数
char s[n+1] = {0};// 求和
while (scanf("%s", r) && strcmp(r, "0")) { // 对每一个加数...
for (int i = strlen(r)-1, j = n-1; i >= 0; i--, j--) { // 中的每一个数字位
r[i] -= '0'; // char -> int
for (int k = j, c = 0; 1; k--) { // update s
const int sum = (!c ? r[i] : 0) + s[k] + c; // local sum
if ((c = sum > b - 1)) s[k] = sum - b; // do update
else { s[k] = sum; break; } // end update
}
}
}
for (int i = 0; i < n; putchar(s[i++] + '0'));
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-07-14
可以用字符串分割成int可以处理的整数,相加后在整合成一个长字符串输出
第2个回答  2009-07-14
程序很简单,
1取串长L
2创建(L/4)取整+1 长度的数组
3将CIN得到的字符串4个一组转化为int型变量顺序存入数组
4创建(L/4)取整+1 长度的数组用来存放进位
5数字分别相加,最高位进位对应进位数组置1
6由于相加不可能进2,所以在合并之前检查每个进位位是1的前一个数组元素
对其+1并储存回原位,转化为字符串输出

希望对你有帮助,不过编这种程序花费时间才给5分。。。。实在亏啊
相似回答