C语言如何计算长整数啊?
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/11/09 09:50:46
C语言如何计算长整数啊?
例如998877665544332211+112233445566778899
怎么定义?怎么输出?各种不懂、
例如998877665544332211+112233445566778899
怎么定义?怎么输出?各种不懂、
把两个数字转换成字符储存到两个字符数组中,然后右对齐(位数少的前边补‘0’)然后用数组模拟加法运算
方法:比如123+999,先把两个数转加上‘0’后存到字符数组中(转换成字符储存到字符数组的原因是因为字符数组有个字符串测量函数strlen()用着比较方便),然后从右向左依次相加再减去两个‘0’存到第三个数组比如c中(c数组定义的时候要比相加的两个数组大一位,且第一位直接赋0)
1 2 3
+ 9 9 9
——————————————
0 10 11 12
然后c数组从右向左处理进位,比如第三位是12大于9所以原位除以10且前一位进1,c[3]-=10;c[2]+=1;然后处理第二位第一位
进位处理完成后就是输出,先判断c数组第一位是否为0,若为1,选择用for循环进行输出,输出时不能整体输出,只能用printf("%d",c[i]);以数字一位一位的输出
若为0则跳过第一位的0然后用printf("%d",c[i]);以数字一位一位的输出.
这就是大数加法的思路,相关程序在百度可以搜到,但是还是建议先尝试自己写,毕竟只有自己写的东西才是自己的,看别人的可能这会会了,但时间一长肯定会忘的.
方法:比如123+999,先把两个数转加上‘0’后存到字符数组中(转换成字符储存到字符数组的原因是因为字符数组有个字符串测量函数strlen()用着比较方便),然后从右向左依次相加再减去两个‘0’存到第三个数组比如c中(c数组定义的时候要比相加的两个数组大一位,且第一位直接赋0)
1 2 3
+ 9 9 9
——————————————
0 10 11 12
然后c数组从右向左处理进位,比如第三位是12大于9所以原位除以10且前一位进1,c[3]-=10;c[2]+=1;然后处理第二位第一位
进位处理完成后就是输出,先判断c数组第一位是否为0,若为1,选择用for循环进行输出,输出时不能整体输出,只能用printf("%d",c[i]);以数字一位一位的输出
若为0则跳过第一位的0然后用printf("%d",c[i]);以数字一位一位的输出.
这就是大数加法的思路,相关程序在百度可以搜到,但是还是建议先尝试自己写,毕竟只有自己写的东西才是自己的,看别人的可能这会会了,但时间一长肯定会忘的.