怎样用C语言做超大整数的加减运算?

来源:百度知道 编辑:UC知道 时间:2024/05/09 13:34:54
输入包含只有加减法的运算表达式。参与运算的整数及其中间结果的取值范围是(-10^10000000 , 10^10000000)。表达式的形式都是合乎逻辑的并且表达式中没有空格。如果第一个操作数为正数或0则没有符号,如果为负数则有负号。
编写一个程序输出表达式的值。

示例输入:

-167687489787987987+9257987971969897895365468+225242727827822782572-2728727822828772782

输出计算结果

用纯C语言做,并且要实际能运行的程序~~~~!!!思路我想过N次都作不对了~~

可以用数组制作。
  都知道int,float,double的精度和可使用的范围都是有限的,对于大数相减,总是会产生溢出的情况。
  所以对于大数相减,认为可以用数组来做。比如,定义一个数组a[100];a[1]用来保存个位数,a[2]用来保存十位数,等等。
  如果a[i]的值大于或等于10,就让a[i+1]++,a[i]-10就行了。
  在打印的时候就用一个for语句,再调一下输出格式就可以了。

用高精度算法来实现,即用数组或指针来储存数字,例如A〔20〕来储存a ,用B〔20〕来储存b,这样a 和b就可以是很大的数,再用一个C〔21〕来储存结果,为什么C要21呢,你知道,加法是要近位的,呵呵。这里给出相加的伪代码,d =0/*用来存储近位*/,for i=0到19{c=A〔i〕+B〔i〕+d ,d =c/10,c=c%10,C〔i〕=c}if d 不等于0 C〔i+1〕=d ,再逆的输出C就可以了!编程要学会思考,现在你可以试试编下高精度乘法,例如可以输出100的阶乘!

用整型数组来模拟数据存储,即每个数组元素来存放每个整数的一位,你可以到百度搜索一下“大数处理”应该可以搜索到很多相关的算法~~

可以用两个整数来表示一个整数,一个高位,一个低位

用字符数组~