C语言中基本数据类型都有一定的位数限制,怎样超过这个位数限制进行高位数运算呢,不一定是对一定范围位数的整数进行运算,可以只对12位的整数或者是13位的整数进行运算,关键是要说明方法。老师说要运用数组的知识。希望有高手能帮助下,谢谢
如果有高手可以长期指导我学习C语言请加QQ260919069
感激不尽~!!
这是高精度运算的问题
举个例子,高精度加吧
比如,112233445566778899 + 998877665544332211
这时候,两个操作数用int或者long等整型变量是不可能存储的
那么我们用两个数组来存
int a[100];
int b[100];
那么,a[0]=1 a[1]=1 a[2]=2 a[3]=2 a[4]=3 a[5]=3...
b[0]=9 b[1]=9 b[2]=8 b[3]=8 ...
就是用a[]来存第一个数,用b[]来存第二个数
然后相加怎么办呢?
回想一下我们的小学数学,我们是如何用竖式(是叫竖式,没记错吧?呵呵)来手工计算加法的?
首先,个位与个位相加,得到结果,再判断是否要进位,进多少位,下一步,十位与十位相加,再继续得到结果,进位,……
最后就加到了结果,是吧?
那我们这里也一样来模拟,让两个数组的末端对齐,从个位加起,加完就进位,直到加到最高位
这样就可以得到一个结果数组,比如我们用c[]来存储
最后再输出来,就是相加结果了
然后减法,乘法,除法,道理都一样,就是模拟我们小学学数学时候的那种手工竖式计算方法啦
如果不记得了呢?跟弟弟妹妹借本小学数学看一看吧,哈哈~
因为你没给悬赏分,所以我就写写思路,不写程序了
其实,你最好自己理解一下思路,自己把程序打出来,这样才能真正掌握这种高精度计算的算法
:)
举个例子,高精度加吧
比如,112233445566778899 + 998877665544332211
这时候,两个操作数用int或者long等整型变量是不可能存储的
那么我们用两个数组来存
int a[100];
int b[100];
那么,a[0]=1 a[1]=1 a[2]=2 a[3]=2 a[4]=3 a[5]=3...
b[0]=9 b[1]=9 b[2]=8 b[3]=8 ...
就是用a[]来存第一个数,用b[]来存第二个数
然后相加怎么办呢?
回想一下我们的小学数学,我们是如何用竖式(是叫竖式,没记错吧?呵呵)来手工计算加法的?
首先,个位与个位相加,得到结果,再判断是否要进位,进多少位,下一步,十位与十位相加,再继续得到结果,进位,……
最后就加到了结果,是吧?
那我们这里也一样来模拟,让两个数组的末端对齐,从个位加起,加完就进位,直到加到最高位
这样就可以得到一个结果数组,比如我们用c[]来存储
最后再输出来,就是相加结果了
然后减法,乘法,除法,道理都一样,就是模拟我们小学学数学时候的那种手工竖式计算方法啦
如果不记得了呢?跟弟弟妹妹借本小学数学看一看吧,哈哈~
因为你没给悬赏分,所以我就写写思路,不写程序了
其实,你最好自己理解一下思路,自己把程序打出来,这样才能真正掌握这种高精度计算的算法
:)
温馨提示:答案为网友推荐,仅供参考