C语言如何实现大数相加问题,各位高手多多指教!

来源:百度知道 编辑:UC知道 时间:2024/06/14 03:00:23
1+2+3+...+10^n=???
1<=n<=1000;
long int 好象也做不到.
如何避免10^n方的益出错误?
如何用程序实现,望各位高手多多指教!

可以的。

我曾经编写过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亿大的数据,几乎可以满足绝大多数的实际应用了,更何况是单片机。

这里讨论大数的运算是一种方法、一种思路。

楼上的方法也太奢侈了:
”比如1258746这个数,你用数组 a[]={0,0,0,...,0,1,2,5,8,7,4,6}来表示,然后对数组的每一位进行运算”
这样做的后果是 你一个数字就占用了一个字节 要是单片机的话就挂了(当然,单片机一般不做这么大的数据运算)

存贮的时候把数字转成字符,计算的时候再把字符转成数字,我以前用java实现过(实现的是个位数的N次方,N>0),不过源代码丢了。

任何类型都有溢出的时候,这个没法解决。。
非要这样算可以学汇编那样,定义几个变量,分别存储高中低位数字,自己计算进位。

变量的问题,弄成双精度的

用ll就行了吧