C语言如何实现大数相加问题,各位高手多多指教!
答案:6 悬赏:0 手机版
解决时间 2021-04-12 14:07
- 提问者网友:饥饿走向夜
- 2021-04-12 02:49
C语言如何实现大数相加问题,各位高手多多指教!
最佳答案
- 五星知识达人网友:毛毛
- 2021-04-12 03:41
可以的。
我曾经编写过100的阶乘的程序。在这个程序中,计算结果达到几千位,
这样大的数据很明显是任何数据类型都表示不了的。
不过,你可以把大数用数组来表示,比如1258746这个数,你用数组
a[]={0,0,0,...,0,1,2,5,8,7,4,6}来表示,然后对数组的每一位进行运算。
按照你题目的意思,还应该定义一个大数的加法的函数,
类似
Add(int a[], int b[], int m, int n);
数组a,b是两个表示大数的数组,m,n是数组的大小。注意,要从末尾对齐。
以上是我个人的一些意见,你可以搜索并学习一下我开头提到的那个程序,即关于大数的阶乘,网上应该有很多的资料,对你解题会有帮助的。
请问楼上,实际应用中用的到大数吗?
double类型可以表示21亿大的数据,几乎可以满足绝大多数的实际应用了,更何况是单片机。
这里讨论大数的运算是一种方法、一种思路。
我曾经编写过100的阶乘的程序。在这个程序中,计算结果达到几千位,
这样大的数据很明显是任何数据类型都表示不了的。
不过,你可以把大数用数组来表示,比如1258746这个数,你用数组
a[]={0,0,0,...,0,1,2,5,8,7,4,6}来表示,然后对数组的每一位进行运算。
按照你题目的意思,还应该定义一个大数的加法的函数,
类似
Add(int a[], int b[], int m, int n);
数组a,b是两个表示大数的数组,m,n是数组的大小。注意,要从末尾对齐。
以上是我个人的一些意见,你可以搜索并学习一下我开头提到的那个程序,即关于大数的阶乘,网上应该有很多的资料,对你解题会有帮助的。
请问楼上,实际应用中用的到大数吗?
double类型可以表示21亿大的数据,几乎可以满足绝大多数的实际应用了,更何况是单片机。
这里讨论大数的运算是一种方法、一种思路。
全部回答
- 1楼网友:动情书生
- 2021-04-12 07:11
用ll就行了吧
- 2楼网友:北城痞子
- 2021-04-12 06:57
变量的问题,弄成双精度的
- 3楼网友:行雁书
- 2021-04-12 05:41
任何类型都有溢出的时候,这个没法解决。。
非要这样算可以学汇编那样,定义几个变量,分别存储高中低位数字,自己计算进位。
非要这样算可以学汇编那样,定义几个变量,分别存储高中低位数字,自己计算进位。
- 4楼网友:怙棘
- 2021-04-12 05:21
存贮的时候把数字转成字符,计算的时候再把字符转成数字,我以前用java实现过(实现的是个位数的N次方,N>0),不过源代码丢了。
- 5楼网友:西岸风
- 2021-04-12 05:08
楼上的方法也太奢侈了:
”比如1258746这个数,你用数组 a[]={0,0,0,...,0,1,2,5,8,7,4,6}来表示,然后对数组的每一位进行运算”
这样做的后果是 你一个数字就占用了一个字节 要是单片机的话就挂了(当然,单片机一般不做这么大的数据运算)
”比如1258746这个数,你用数组 a[]={0,0,0,...,0,1,2,5,8,7,4,6}来表示,然后对数组的每一位进行运算”
这样做的后果是 你一个数字就占用了一个字节 要是单片机的话就挂了(当然,单片机一般不做这么大的数据运算)
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯