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

上传人:日度 文档编号:145971869 上传时间:2020-09-25 格式:DOC 页数:20 大小:1.41MB
返回 下载 相关 举报
大整数的四则运算----高质量C语言程序_第1页
第1页 / 共20页
大整数的四则运算----高质量C语言程序_第2页
第2页 / 共20页
大整数的四则运算----高质量C语言程序_第3页
第3页 / 共20页
大整数的四则运算----高质量C语言程序_第4页
第4页 / 共20页
大整数的四则运算----高质量C语言程序_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《大整数的四则运算----高质量C语言程序》由会员分享,可在线阅读,更多相关《大整数的四则运算----高质量C语言程序(20页珍藏版)》请在金锄头文库上搜索。

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) 功能说明:当两异号数相加时,改变其符号以

4、符合加法运算5. int 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位一组放入lo

5、ng a,且将符号放入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. vo

6、id div(long a,long b,long c,int fa) 功能说明:除法,a除以b的值放入c,fa为a符号13. void menu() 功能说明:打印菜单函数14. void main() 功能说明:主函数,调用其余函数,计算相应功能的值并输出。5.源程序:#include#include#include#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;b

7、i=0;printf(请输入处理的第一个数的值:);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=r-48;*p1=i;printf(请输入处理的第二个数的值:);s=getchar();if(s=45) b0=s;for(j=1;(s=getchar()!=n;j+)bj=s-48;else b1=s-48;for(j=2;(s=getchar()!=n;j+)bj=s-48;*p2=j;int plus(int a,int b,i

8、nt c,int m,int n) /加法运算int dMAX=0,i,j,k;for(i=0;iMAX;i+) ci=0;if(a1=0) for(i=0;in;i+) ci=bi;return(i);if(b1=0) for(i=0;i0&j0;i-,j-,k+)dk=ai+bj+dk;if(dk9)dk+1+;dk=dk-10;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;k

9、0;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=45)for(i=1;im;i+)ci=ai;for(i=1,j=1;jn;i+,j+)ai=bj;for(i=1,j=1;jn;i+,j+)bi=cj;for(j=i;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;i0&j0;i-,j-,k+)if(ck0|a

10、ibj)ck=ck+ai-bj;if(ck0) ck=ck+ai;if(ck0) ck+=10;ck+1-;k+;i-;ck=ai+ck;while(ck0) 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)for(i=1;im;i+)if(aibi&a0=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=45&b0=0)j=minus(b,a,d,n,m);for(i=1;ij

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号