雅乐网

计算机技术、学习成长

编程 » C/C++ » 大数相加c语言实现

大数相加c语言实现

c语言中int类型是有一定的范围的,例如在32位的情况下可以表示的最大整数是2^31 – 1 = 2147483647 。

如果想要进行更多位数的整数加法,可以用数组,分别对每个位进行计算。

合法数字检查

输入的时候应检查输入的是否是合法的数字,若不是则应进行处理。

分配空间

本文中的程序可以接收任意多位数的输入,因为采用的是运行时根据输入的位数分配空间的。

存放结果的数组,比两个数组中位数最多的那个位数还要多2,一个用来保存可能的进位(例如9+9 两个一位数结果是二位数),另一个用来保存表示字符串结束的空字符’\0′

输入54321和192后,在内存中是这样表示的

scrn20141114141038

个位对齐

数字按照字符的形式存入数组后,进行运算的时候还需要从个位开始算起,所以应该将num2向右移动,让个位对齐。

也可以将各个位数字逆序,这样从下标0开始,就是对齐的个位数字。

逆序的过程可以顺便把字符变为对应十进制数字,只需要减去’0’即可。

本程序中对齐后效果如下

scrn20141114141501

n1和n2分配空间大小是最长数字的位数+1 ,最高位后面全部置0.这样是为了计算时候的方便。

这样下标0是个位 下标1是十位 下标2是百位……

计算

scrn20141114142205

c语言代码

 

如果文章对你有帮助,欢迎点赞或打赏(金额不限)。你的打赏将全部用于支付网站服务器费用和提高网站文章质量,谢谢支持。

版权声明:

本文由 原创,商业转载请联系作者获得授权。
非商业转载请注明作者 雅乐网 ,并附带本文链接:
http://www.yalewoo.com/c_big_number_add.html

上一篇:

下一篇:

我要评论

验证码*: 9 + 2 =