- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
大数加减乘除算法
??????????????????????????????????????? 说明部分
??? 本软件进入介绍界面后按任意进入功能选择界面。按1、2、3、4分别进入不同的功能操作。在功能操作上只能输入0、1、2、3、4、5、6、7、8、9、回车这十一种字符。比如进入加法功能后,就只能输入一个不超过1000位数的正整数作为加数,然后敲回车确定输入,再输入另一个不超过1000位数的正整数作为另一个加数,敲回车后就会显示相加后的结果。??? 如果不合法的输入就会被自动打断。比如输入小数点,-、+、*、/、字母等非法符号就会自动跳回介绍界面,重新让用户操作。又比如输入正整数的位数达到1000位还不敲回车,继续输入数字,此时系统将把1001位的输入作为下一个数第一位输入,并自动敲回车,作为第一个数达到1000位的结束,一个数最多也只能输入1000位,这就得到保证了。??? 操作过程中希望遵守法则,如果哪里还有错误,请发邮件到kansome2008@163.com与我联系,或者QQ到609961194,又或者电话到020谢谢指导!
?
?
?
?
#includeiostream#includeconio.h#includestdlib.h#define max 2002
using namespace std;
typedef struct{?short add[max+1];//最大运算位数?int n;?????????? //记录是几位数}num;
//串的比较大小short compare(num a,num b){?short t=1;??? int i,j;?for(i=0;a.add[i]==0;)i++;?if(i)?{??for(j=i;j=a.n;j++)a.add[j-i]=a.add[j];??a.n=a.n-i;?}?for(i=0;b.add[i]==0;)i++;?if(i)?{??for(j=i;j=b.n;j++)b.add[j-i]=b.add[j];??b.n=b.n-i;?}?if(a.nb.n)t=1;?else if(a.nb.n)t=2;?else?{??for(i=0;i=a.n;i++)??{???if((a.add[i]-b.add[i])0)???{????t=1;break;//第一个数大返回 1???}???else if((a.add[i]-b.add[i])0)???{????t=2;break;//第二个数大返回 2???}??}??if(ia.n)t=0;?????? //两个数相等返回 0?}?return t;}
//加法运算num add(num addend1,num addend2){?int carry=0;???? //进位?num result;????? //运算结果?int i,j,k,t;???? //暂存器?for(i=addend1.n,j=addend2.n,k=0;i=0||j=0;i--,j--,k++)?{??if(i=0j=0)??{???t=addend1.add[i]+addend2.add[j]+carry;???result.add[k]=t%10;???carry=(t-t%10)/10;??}??else if(i=0)??{???t=addend1.add[i]+carry;???result.add[k]=t%10;???carry=(t-t%10)/10;??}??else??{???t=addend2.add[j]+carry;???result.add[k]=t%10;???carry=(t-t%10)/10;??}?}?if(carry)?{??result.add[k]=carry;??result.n=k;?}?else ?{??for(;0==result.add[k-1];)k--;??if(k)result.n=k-1;??else result.n=0;?}?return result;}
//减法运算num sub(num subtrahend1,num subtrahend2){?int carry=1;??? //进位,新发明的,减法用加法做?num result;???? //演算结果?int i,j,k,t;??? //暂存器?result.add[0]=0;?result.n=0;??? short comp=compare(subtrahend1,subtrahend2);?if
文档评论(0)