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

设计题目:大整数的四则运算1.功能简介:编写出实现大整数之间相加,相减,相乘,相除的程序,并输出计算结构。课程设计要求:采用模块化程序设计源程序中应有足够的注释必须上机调试通过注重算法运用,优化存储效率与运算效率)()(需提交源程序含有注释及相关文件数据或数据库文件;提交设计报告书。2.总体结构:数据初判断运算符号乘法除法减法退出加法转变为非正整转变为正整数转变为流程图:概要设计:3.1)加法运算利用两个整形数组分别存放两个数a和b的每一位的数值,最低位存放符号。如果a和b同号,从最低为开始计算,如果有进位则保存在高一位,本为则减10,然后反序将计算后的各个位的数值保存在一个数组c并输出,如果a和b都是负数则在前面要输出负号,函数的返回值为c的位数。如果a和b异号,也即两个正整数相减,从最低位开始相减,如果要借位则本位加10再相减,高一位要减1,然后反序将计算后的各个位的数值保存在一个数组c并输出,在前面要输出相应的符号位。2)减法运算可将减法运算转化为加法运算,只要将被减数的符号改变即可。3)乘法运算符号存放在最低位,将其中一个数a的每一位分别乘以另一个数b的每一位,并将结果保存在数组c中,然后重复计算a的下一位跟b的每一位的乘积,把上一次计算保存在c的值加上本次计算后的值,并保存在c自身中,直到a的最高位,最后输出符号和相应的计算结果。4)除法运算利用乘法和减法,将除数分别乘以1到9,直到其值大于等于被除数的对应的数,然后被除数对应的数减去其乘积,保存在一个数组中,下一次循环把它归到被除数中继续做除法运算,最后得到余数并输出。4.函数功能:voidinit(inta[],intb[],int*p1,int*p2)1.功能说明:读入所要计算的数值,数据初始化2.intplus(inta[],intb[],intc[],intm,intn)3.功能说明:两个正整数相加4.3.voidchange(inta[],intb[],intm,intn)功能说明:当两异号数相加时,改变其符号以符合加法运算5.intminus(inta[],intb[],intd[],intm,intn)功能说明:两个正整数相减6.5.voidminusfun(inta[],intb[],intd[],intm,intn)功能说明:判断两个异号数的相加方式7.intmulti(inta[],intb[],intc[],intm,intn)功能说明:两个正整数相乘8.7.voidprint(longc[],intflag)longc[]数组flag(1为负)的功能说明:打印带符号8.intwrite(longa[],intflag)功能说明:将键盘敲入的数字按4位一组放入longa[],且将符号放入flag9.voidmul(longa[],intfirst,intlast,longb[],longc[])c答案放到b,位乘以first到last的第,a功能说明:乘法.10.intcompara(longa[],intfirst,intlast,longb[])功能说明:比较数组a,b大小,firstlast分别为a的最高最低位11.intminusd(longa[],intfirst,intlast,longb[],longc[],intflag)功能说明:a为被减数,firstlast为a最高最低位,b为减数,c为差,flag为符号12.voiddiv(longa[],longb[],longc[],intfa)功能说明:除法,a除以b的值放入c,fa为a符号13.voidmenu()功能说明:打印菜单函数14.voidmain()功能说明:主函数,调用其余函数,计算相应功能的值并输出。5.源程序:#include<iostream.h>#include<math.h>#include<stdio.h>#defineMAX40//可以修改,此时最大运算位数为四十位#defineN10//此处应为最大位数除以4voidinit(inta[],intb[],int*p1,int*p2)//输入{inti,j;charr,s;for(i=0;i<MAX;i++){a[i]=0;b[i]=0;}牰湩晴尨请输入处理的第一个数的值:);r=getchar();if(r==45){a[0]=r;for(i=1;(r=getchar())!='\n';i++)a[i]=r-48;}else{a[1]=r-48;for(i=2;(r=getchar())!='\n';i++)a[i]=r-48;}*p1=i;牰湩晴尨请输入处理的第二个数的值:);s=getchar();if(s==45){b[0]=s;for(j=1;(s=getchar())!='\n';j++)b[j]=s-48;}else{b[1]=s-48;for(j=2;(s=getchar())!='\n';j++)b[j]=s-48;}*p2=j;}intplus(inta[],intb[],intc[],intm,intn)//加法运算{intd[MAX]={0},i,j,k;for(i=0;i<MAX;i++)c[i]=0;if(a[1]==0){for(i=0;i<n;i++)c[i]=b[i];return(i);}if(b[1]==0){for(i=0;i<m;i++)c[i]=a[i];return(i);}for(i=m-1,j=n-1,k=1;i>0j>0;i--,j--,k++){d[k]=a[i]+b[j]+d[k];if(d[k]>9){d[k+1]++;d[k]=d[k]-10;}}wh...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

文秘专家
机构认证
内容提供者

1

确认删除?