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

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

示例输入:

-167687489787987987+9257987971969897895365468+225242727827822782572-2728727822828772782

输出计算结果

用纯C语言做,并且要实际能运行的程序~~~~!!!思路我想过N次都作不对了~~
展开
 我来答
zhaohaoyong
2009-11-15 · TA获得超过148个赞
知道答主
回答量:35
采纳率:0%
帮助的人:18.8万
展开全部
用高精度算法来实现,即用数组或指针来储存数字,例如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的阶乘!
zhaozhi6862179
2015-09-19 · TA获得超过3546个赞
知道小有建树答主
回答量:269
采纳率:0%
帮助的人:17.3万
展开全部
  可以用数组制作。
  都知道int,float,double的精度和可使用的范围都是有限的,对于大数相减,总是会产生溢出的情况。
  所以对于大数相减,认为可以用数组来做。比如,定义一个数组a[100];a[1]用来保存个位数,a[2]用来保存十位数,等等。
  如果a[i]的值大于或等于10,就让a[i+1]++,a[i]-10就行了。
  在打印的时候就用一个for语句,再调一下输出格式就可以了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
weide361
2009-11-15 · TA获得超过604个赞
知道小有建树答主
回答量:287
采纳率:0%
帮助的人:327万
展开全部
可以用两个整数来表示一个整数,一个高位,一个低位
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友cb8d0e198
2009-11-15 · TA获得超过1198个赞
知道小有建树答主
回答量:465
采纳率:0%
帮助的人:783万
展开全部
用整型数组来模拟数据存储,即每个数组元素来存放每个整数的一位,你可以到百度搜索一下“大数处理”应该可以搜索到很多相关的算法~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
troy0215
2009-11-15 · TA获得超过231个赞
知道小有建树答主
回答量:310
采纳率:0%
帮助的人:307万
展开全部
用字符数组~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式