C语言的超大数相加和相乘间题

如题!不要代码,只要写出详细的解决思路和方法。或者说出是如何实现的

超大数相加我觉得最好是用嵌入式汇编写。首先确定超大数要占用多少个字节,将其变成数串,然后按照我们小学学过的方式来做加法。乘法就改成加法做。
如12345678901234567890,23456789012345678901,两个数相加,无论是整形,长整形变量都无法存储这两个数。就把他变成数字串。“12345678901234567890,23456789012345678901”,可以用数组保存各个位,a[]=“12345678901234567890”,b[]="23456789012345678901"
c[19]=changetoINT(a[19])+changetoINT(b[19]),如果有进位位,就改一下,c[19]=c[19]%10,carr=1.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-18
可以用几个int储存,比如int a1储存大数最低15位(第一位放着,防止进位溢出),int a2再储存15位,以此类推然后每个int相加,每个int第16位为进位,加上下个int,这样下来,然后去掉第16位,显示就从最高位打印出来,再打印下一位,紧挨着一起就让用户看到了(这是我现想的,一开始知道大概的字节数,不知道你听的懂不,本人表达能力不是很好)
还可以用数组
先用malloc()函数分配下面两个的空间
byte a[n1]
byte b[n2]
如果n1>=n2
分配一个这个空间
byte c[n1];
如果n1<n2
分配一个这个空间
byte c[n2];
a,b为加数,c为和
然后从后面开始相加,加到前面,加一次付给c[i]
就行了,最后打出c,要一个一个打出,连在一起
你也可以去搜索下windows计算器的源码,我这个很麻烦,而且还有些细节要处理,呵呵
第2个回答  2012-03-19
这是高精度的加法和乘法
写过加的 就是字符串的处理
你用#include
用string 变量(定义字串)
遍历处理每一个字符让字符 -'0'就得到相应数字大小
如 字符 '7' - '0' = 7 这个就是数字了
定义一个flag变量来标示是否加起来超10,超10加令flag=1,运算下一位时记得加上flag
乘法还在学呵呵、不过原理应该一样的就是每个字符的处理
第3个回答  2012-03-18
用二维数组
第4个回答  2012-03-18
用数组存储超大数
相似回答