[问题] 基本大数加法

楼主: wayne4125 (疤痂灸)   2017-08-21 20:20:45
开发平台(Platform): (Ex: Win10, Linux, ...)
win7
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
dev c++
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
小弟初学C语言,实作基本的大数加法,得出错误后想了很久还是没有头绪哪里错
rev函数将字串反转
minus 和 add 将字串里的资料减或加 '0' 再运算
还请大神们指点迷津
喂入的资料(Input):
两正整数
预期的正确结果(Expected Output):
相加的数字
错误结果(Wrong Output):
有时是乱码,大部分数字错误
程式码(Code):(请善用置底文网页, 记得排版)
http://codepad.org/GDrFZFxD
补充说明(Supplement):
作者: jerryh001   2017-08-21 20:40:00
假设你做12345+67 找你这样写会变12345+???67 ?表示一个不知道的垃圾值*照你这样写
作者: stucode   2017-08-21 20:43:00
变量没有初始化 初值不会是0更不会是'0'另外进位似乎多加一次
楼主: wayne4125 (疤痂灸)   2017-08-21 20:45:00
那要怎么初始化呢 有点爬不到答案s大 c[i+1] +=1 想帮最高位+1 其他状况应该不会多加char c[100]={'0'} 也不会对 QQ
作者: stucode   2017-08-21 20:51:00
可用循环或memset 初始化语法好像只能手动填'0'
楼主: wayne4125 (疤痂灸)   2017-08-21 20:53:00
真的!! 谢谢s大 :)但是输入2999 1 会什么都没有出现欸 QAQ
作者: stucode   2017-08-21 21:00:00
仔细看这个做法还蛮有问题的 c中的0同时代表数字0及'\0'所以rev等函数的运作会出问题
楼主: wayne4125 (疤痂灸)   2017-08-21 21:02:00
无法正确读取数字长度 所以会乱掉大概知道问题点了 再改善程式看看 谢谢:D
作者: alan23273850   2017-08-22 02:03:00
路过回个,顺便提醒一下虽然初学的时候大数加法习惯上会以digit为单位,但是这样每次只会处理到一位数,在效率上不够优,熟悉之后建议可以int为单位,也就是一次以差不多10^10为单位,运算上会快很多然后也可以避免掉字串处理常出现的bug,只能说字符单位或int单位都各自有其优缺,可斟酌选择
楼主: wayne4125 (疤痂灸)   2017-08-22 14:13:00
是的! 多谢指教^^
作者: ddchris (克里斯)   2017-08-28 23:55:00
可参考 http://www.tcgs.tc.edu.tw/~sagit/cpp/q10.htm网站写得蛮详细的喔

Links booklink

Contact Us: admin [ a t ] ucptt.com