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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

设计题目: 大整数的四则运算

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. 函数功能:

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. 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为负)的Iong c[]数组

8. int write(long a[],int flag)

功能说明:将键盘敲入的数字按4位一组放入Iong a[],且将符号放入flag

9. void mul(long a[],int first,int last,long b[],long C[])

功能说明:乘法,a的第last到first位乘以b,答案放到C

10. 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 IaSt为a最咼最低位,b为减数,c为差,flag为符号

12. void 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 //此处应为最大位数除以 4

void init(int a[],int b[],int *p1,int *p2) //输入

{

int i,j;

char r,s; for(i=0;i

{

a[i]=0;

b[i]=0;

}

printf(" 请输入处理的第一个数的值:"); 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;

}

相关文档
最新文档