ImageVerifierCode 换一换
格式:DOC , 页数:17 ,大小:56.04KB ,
资源ID:4104365      下载积分:5 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/4104365.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     索取发票    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(大整数的四则运算----高质量C语言程序.doc)为本站上传会员【w****g】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

大整数的四则运算----高质量C语言程序.doc

1、设计题目: 大整数的四则运算1。 功能简介:编写出实现大整数之间相加,相减,相乘,相除的程序,并输出计算结构。课程设计要求:采用模块化程序设计 源程序中应有足够的注释 必须上机调试通过 注重算法运用,优化存储效率与运算效率 需提交源程序(含有注释)及相关文件(数据或数据库文件); 提交设计报告书.2. 总体结构:数据初始化判断运算符号加法正整数非正整数转变为正整数减法转变为加法乘法除法转变为乘法和减法退出流程图:3 。概要设计:1) 加法运算利用两个整形数组分别存放两个数a和b的每一位的数值,最低位存放符号。如果a和b同号,从最低为开始计算,如果有进位则保存在高一位,本为则减10,然后反序将计

2、算后的各个位的数值保存在一个数组c并输出,如果a和b都是负数则在前面要输出负号,函数的返回值为c的位数。如果a和b异号,也即两个正整数相减,从最低位开始相减,如果要借位则本位加10再相减,高一位要减1,然后反序将计算后的各个位的数值保存在一个数组c并输出,在前面要输出相应的符号位。2) 减法运算可将减法运算转化为加法运算,只要将被减数的符号改变即可。3) 乘法运算符号存放在最低位,将其中一个数a的每一位分别乘以另一个数b的每一位,并将结果保存在数组c中,然后重复计算a的下一位跟b的每一位的乘积,把上一次计算保存在c的值加上本次计算后的值,并保存在c自身中,直到a的最高位,最后输出符号和相应的计

3、算结果。4) 除法运算利用乘法和减法,将除数分别乘以1到9,直到其值大于等于被除数的对应的数,然后被除数对应的数减去其乘积,保存在一个数组中,下一次循环把它归到被除数中继续做除法运算,最后得到余数并输出。4. 函数功能:1. void init(int a,int b,int *p1,int p2)2. 功能说明:读入所要计算的数值,数据初始化3. int plus(int a,int b,int c,int m,int n) 4. 功能说明:两个正整数相加3。 void change(int a,int b,int m,int n)功能说明:当两异号数相加时,改变其符号以符合加法运算5. i

4、nt minus(int a,int b,int d,int m,int n) 6. 功能说明:两个正整数相减5. void minusfun(int a,int b,int d,int m,int n)功能说明:判断两个异号数的相加方式7. int multi(int a,int b,int c,int m,int n) 8. 功能说明:两个正整数相乘7. void print(long c,int flag) 功能说明:打印带符号flag(1为负)的long c数组8。 int write(long a,int flag) 功能说明:将键盘敲入的数字按4位一组放入long a,且将符号放入

5、flag9。 void mul(long a,int first,int last,long b,long c) 功能说明:乘法,a的第last到first位乘以b,答案放到c10。 int compara(long a,int first,int last,long b) 功能说明:比较数组a,b大小,first last分别为a的最高最低位11。 int minusd(long a,int first,int last,long b,long c,int flag)功能说明:a为被减数,first last为a最高最低位,b为减数,c为差,flag为符号12。 void div(long

6、a,long b,long c,int fa) 功能说明:除法,a除以b的值放入c,fa为a符号13。 void menu() 功能说明:打印菜单函数14。 void main()功能说明:主函数,调用其余函数,计算相应功能的值并输出.5。源程序:include#includestdio。h#define MAX 40 /可以修改,此时最大运算位数为四十位#define N 10 /此处应为最大位数除以4void init(int a,int b,int p1,int p2) /输入int i,j;char r,s;for(i=0;iMAX;i+)ai=0;bi=0;printf(”请输入处理

7、的第一个数的值:”);r=getchar();if(r=45) a0=r;for(i=1;(r=getchar()!=n;i+)ai=r-48;else a1=r-48;for(i=2;(r=getchar()!=n;i+)ai=r48;p1=i;printf(”请输入处理的第二个数的值:);s=getchar();if(s=45) b0=s;for(j=1;(s=getchar()!=n;j+)bj=s48;else b1=s48;for(j=2;(s=getchar()!=n;j+)bj=s-48;*p2=j;int plus(int a,int b,int c,int m,int n)

8、/加法运算int dMAX=0,i,j,k;for(i=0;i0&j0;i,j,k+)dk=ai+bj+dk;if(dk9)dk+1+;dk=dk10;while(i0) dk=dk+ai;if(dk9) dk+1+;dk=dk-10;k+;i-;while(j0) dk=dk+bj;if(dk9) dk+1+;dk=dk-10;k+;j;d0=a0+b0;c0=d0;if(dk=0) k-;for(i=1;k0;i+,k-)ci=dk;return(i);void change(int a,int b,int m,int n) /变号运算int i,j;int cMAX;if(m=n&b0=

9、45)for(i=1;im;i+)ci=ai;for(i=1,j=1;jn;i+,j+)ai=bj;for(i=1,j=1;j=n&a0=45)a0=0;b0=45;return;int minus(int a,int b,int d,int m,int n) /减法运算int cMAX=0,i,j,k;for(i=0;iMAX;i+)di=0;for(i=m-1,j=n-1,k=1;i0j0;i,j-,k+)if(ck0aibj)ck=ck+aibj;if(ck0)ck+=10;ck+1-;else ck=aibj;while(i0) ck=ck+ai;if(ck0) ck+=10;ck+1

10、-;k+;i-;ck=ai+ck;while(ck=0&k0) k-;for(i=1;k0;i+) di=ck-;return(i);void minusfun(int a,int b,int d,int m,int n) /判断是否两异号数相加int i,j,f=0,g=0;if(a1=0) if(b0!=0) printf(”);for(i=1;in;i+)printf(”d”,bi);printf(n”); return;if(b1=0) if(a0!=0)printf(”-);for(i=1;im;i+)printf(”%d”,ai);printf(n”);return;if(m=n)

11、for(i=1;im;i+)if(aibia0=45)g=1;if(ai!=bi) f=1;if(f=0)printf(0n”);return;if(g=1)change(a,b,m,n);printf(”);j=minus(a,b,d,n,m);for(i=1;ij;i+) printf(”d”,di);printf(”n”);return;else if(a0=45b0=0)j=minus(b,a,d,n,m);for(i=1;ij;i+)printf(”%d”,di);printf(n”);return;elsej=minus(a,b,d,m,n); for(i=1;ij;i+)prin

12、tf(”d”,di);printf(”n”);return;if(mnb0=45)j=minus(a,b,d,m,n); for(i=1;ij;i+) printf(”d”,di);printf(”n”);return;if(mn&b0=45)change(a,b,m,n);printf(”-”); j=minus(a,b,d,n,m);for(i=1;ij;i+) printf(”%d”,di);printf(”n”);return;if(mn&a0=45)change(a,b,m,n); printf(”);j=minus(a,b,d,m,n);for(i=1;ij;i+) printf(

13、d”,di);printf(”n”);return;if(mn&a0=45)j=minus(b,a,d,n,m); for(i=1;ij;i+) printf(”%d”,di);printf(”n”);return;int multi(int a,int b,int c,int m,int n) /正整数乘法运算int dMAX=0,eMAX=0,i,j,k,r,s,x,y;for(i=0;iMAX;i+)ci=0;if(m=n)for(i=m1,s=1;i0;i-,s+)for(r=0;rMAX;r+)dr=0;er=0;for(j=n-1,k=1*s;j0;j-,k+)dk=aibj+dk

14、;if(dk9) dk+1=dk+1+dk/10;dk=dk%10;if(dk=0)k;y=k;for(r=1;k0;r+,k-)er=dk;for(r=1;rMAX;r+)dr=er;if(s=1) x=plus(c,d,e,0,y+1);else x=plus(c,d,e,y,y+1);for(r=0;rn)for(j=n1,s=1;j0;j,s+)for(r=0;r0;r+,k-)er=dk;for(r=1;rMAX;r+)dr=er;if(s=1) x=plus(c,d,e,0,y+1);else x=plus(c,d,e,y,y+1);for(r=0;rMAX;r+)cr=er;re

15、turn(x);void print(long c,int flag) /输出int i;for(i=N-1;i=0;i) if(ci) break; if(flag) printf(”); printf(”4d,ci); for(;i=0;i-) if(ci/1000) printf( 4ld”,ci); else if(ci/100) printf( 0%3ld”,ci); else if(ci/10) printf(” 002ld”,ci); else printf(” 000%1ld”,ci); int write(long a,int flag) /将键盘敲入的数字按4位一组放入lo

16、ng a,且将符号放入flagchar numN*4; char temp;int i,j,k;for(i=0;iN4;i+) numi=getchar();if(numi=10) i-;break;if(numi=45)flag=(flag+1)%2; i-;k=0;for(j=0;j=i/2;j+) temp=numj;numj=numik;numi-k=temp;k+;k=1;for(j=0;j=0;max_i) if(bmax_i) break; for(i=0;i=max_i;i+) if(bi) for(j=first;j=last;j+) temp=ajbi; ci+jfirst

17、+=temp10000; ci+j-first+1+=(temp/10000)+(ci+jfirst/10000)); ci+jfirst=ci+jfirst10000; int compara(long a,int first,int last,long b) /比较数组a,b大小int flag=2;int i;int k=0;int len; for(len=N1;len=0;len-) if(blen)break;if((firstlast)=len)if((first-last)len) flag=1;elsefor(i=len;i=0;i-)if(afirstkbi)flag=1;

18、break; if(afirstk=0;len_a) if(alen_a)break;k=len_a;while(compara(a,len_a,0,b) while(!compara(a,len_a,k,b) k-;ck=1;mul(c,k,k,b,result); while(compara(a,len_a,k,result)) ck+;for(i=N1;i=0;i-) resulti=0;mul(c,k,k,b,result);ck-; for(i=N-1;i=0;i-)resulti=0;mul(c,k,k,b,result); minusd(a,len_a,k,result,a,0)

19、; for(i=N1;i=0;i) resulti=0;for(len_a=N-1;len_a=0;len_a-) if(alen_a)break;k=len_a; void menu() /菜单printf(=大整数计算器=”);printf(1。加法2.减法3。乘法4.除法0。退出n”);printf(”请从14中选择:”);return;void main() /主函数int flag; int max; int fa; int fb; long adN,bdN,cd2*N;int aMAX=0,bMAX=0,cMAX=0,dMAX=0;char s;int m,n,i,j;int p1

20、,p2;p1=&m;p2=n;menu();s=getchar();getchar();while(1)switch(s)case 0:return;case 1:printf(格式为:a+bn”);init(a,b,p1,p2); if(a1=0&b1=0)printf(结果是:a+b=0n”); break;if(a0=b0)j=plus(a,b,c,m,n); printf(”结果是:a+b=”);if(c0!=0)printf(”);for(i=1;ij;i+) printf(”%d”,ci);else printf(结果是:a+b=);minusfun(a,b,d,m,n);prin

21、tf(”n”);break;case 2: printf(”格式为:abn”); init(a,b,p1,p2); if(b0=0)b0=45;else if(b0=45)b0=0;if(a1=0b1=0) printf(”结果是:ab=0n); break;if(a0=b0)j=plus(a,b,c,m,n); printf(”结果是:a-b=”);if(c0!=0) printf(”-);for(i=1;ij;i+)printf(”%d”,ci);elseprintf(”结果是:ab=);minusfun(a,b,d,m,n);printf(”n); break;case 3: init(

22、a,b,p1,p2); if(a1=0b1=0) printf(结果是:0n”);break;j=multi(a,b,c,m,n); printf(结果是:);if(a0=45&b0=0)|(b0=45&a0=0))printf(”);for(i=1;ij;i+) printf(”%d,ci);printf(”n”);break;case 4: flag=fa=fb=0; for(max=0;maxN;max+)admax=bdmax=cdmax=0;printf(”请输入被除数:);fa=write(cd,fa);printf(n请输入除数:);fb=write(bd,fb);div(cd,

23、bd,ad,fa); flag=(fa+fb)2; printf(” / );print(bd,fb);printf(” = ”); print(ad,flag); printf(”(); print(cd,0); printf()n);break;menu();s=getchar();getchar();6.调试结果程序的调试是指对程序的差错和排错,为了便于差错、阅读,在设计该程序的过程中添加了尽可能多的注释,这就为接下来的调试过程带来了很多方便. 经过仔细检查之后进行上机调试。进行编译,如果在编译和连接过程中发现错误,屏幕上显示了出错信息,根据提示找到出错的位置,加以改正,在进行编译如此反

24、复,直到顺利通过编译和连接为止。以下是编译的最终结果:由上图可知,该程序可以成功运行,且运行结果正确无误。7.设计总结:此次程序设计过程中发现的主要问题有三: 1) 语法错误 :大多的语法错误在通过书本参考下能够修改。主要是平时缺乏锻炼、不太注意而产生的。如没有注意具体数据使用是有一定的范围限定;过分重视分号的重要性而在for、if、while语句中画蛇添足加分号. 2)注释的位置 :程序设计中在注释的时候不能同我们平常写字一样随心所欲,我们应该注意注释的格式。注释中不能含有C语言可执行的语句. 3)技术问题:编写到最后不会除法的算法,就上网借鉴了下,应该记住以备将来使用。8。心得体会及致谢: 经过这次困难重重的C语言编程设计,我学到了更多的编程技巧,同时也对C有了更多的认识.通过这次两个星期左右的C语言程序课程设计实习,我觉得我学到了很多,以前在课堂上学的东西以为都是一些枯燥无味的东西,可是操作在实践中的时候发现其实也有别样的魅力所在,变得生动活泼而有挑战性。同时也让我感觉到自己编程的能力还有很多不足,希望在以后的学习生活中能有更多的机会进行提高.最后也感谢郭恒宁老师的指导。

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服