大数加减乘除算法.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档