大整数的四则运算 高质量C语言程序Word下载.docx

上传人:b****3 文档编号:14353312 上传时间:2022-10-22 格式:DOCX 页数:28 大小:1.35MB
下载 相关 举报
大整数的四则运算 高质量C语言程序Word下载.docx_第1页
第1页 / 共28页
大整数的四则运算 高质量C语言程序Word下载.docx_第2页
第2页 / 共28页
大整数的四则运算 高质量C语言程序Word下载.docx_第3页
第3页 / 共28页
大整数的四则运算 高质量C语言程序Word下载.docx_第4页
第4页 / 共28页
大整数的四则运算 高质量C语言程序Word下载.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

大整数的四则运算 高质量C语言程序Word下载.docx

《大整数的四则运算 高质量C语言程序Word下载.docx》由会员分享,可在线阅读,更多相关《大整数的四则运算 高质量C语言程序Word下载.docx(28页珍藏版)》请在冰豆网上搜索。

大整数的四则运算 高质量C语言程序Word下载.docx

读入所要计算的数值,数据初始化

3.int plus(inta[],int b[],intc[],intm,intn)  

4.功能说明:

两个正整数相加

3. void change(inta[],int b[],intm,int n)

功能说明:

当两异号数相加时,改变其符号以符合加法运算

5.int minus(int a[],int b[],int d[],intm,intn)

6.功能说明:

两个正整数相减

5.voidminusfun(inta[],intb[],intd[],intm,intn)ﻩ

功能说明:

判断两个异号数的相加方式

7.intmulti(inta[],intb[],int c[],int m,intn)

8.功能说明:

两个正整数相乘

7.void print(longc[],int flag)

功能说明:

打印带符号flag(1为负)的long c[]数组

8。

intwrite(longa[],intflag)

将键盘敲入的数字按4位一组放入longa[],且将符号放入flag

9.voidmul(longa[],intfirst,intlast,longb[],longc[])   

乘法,a的第last到first位乘以b,答案放到c

10.intcompara(longa[],intfirst,int last,longb[])  

比较数组a,b大小,firstlast分别为a的最高最低位

11。

intminusd(long a[],intfirst,intlast,longb[],longc[],int flag)  

a为被减数,first last为a最高最低位,b为减数,c为差,flag为符号

12.voiddiv(longa[],longb[],longc[],intfa)  

功能说明:

除法,a除以b的值放入c,fa为a符号

13。

voidmenu() 

打印菜单函数

14. void main()   

主函数,调用其余函数,计算相应功能的值并输出。

5。

源程序:

#include〈iostream。

h>

#include<math.h>

#include〈stdio.h>

#defineMAX40  //可以修改,此时最大运算位数为四十位

#define N10  //此处应为最大位数除以4

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

inti,j;

ﻩcharr,s;

ﻩfor(i=0;

i〈MAX;

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'

;

ﻩa[i]=r—48;

ﻩ}

ﻩ*p1=i;

printf(”请输入处理的第二个数的值:

);

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';

ﻩb[j]=s—48;

*p2=j;

}

intplus(inta[],intb[],intc[],int m,int n) //加法运算

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〉0&&

j〉0;

i—-,j—-,k++)

ﻩd[k]=a[i]+b[j]+d[k];

if(d[k]>

9)

ﻩﻩd[k+1]++;

d[k]=d[k]—10;

while(i〉0)

ﻩﻩd[k]=d[k]+a[i];

if(d[k]>

9)

ﻩd[k+1]++;

d[k]=d[k]-10;

ﻩk++;

ﻩi—-;

ﻩ}

while(j>0)

ﻩﻩd[k]=d[k]+b[j];

if(d[k]>9)

ﻩ{

ﻩd[k+1]++;

d[k]=d[k]-10;

ﻩk++;

ﻩj—-;

ﻩ}ﻩ

d[0]=a[0]+b[0];

c[0]=d[0];

ﻩif(d[k]==0)

ﻩk——;

ﻩfor(i=1;

k>

0;

i++,k--)

ﻩﻩc[i]=d[k];

return(i);

voidchange(inta[],intb[],intm,intn) //变号运算

int i,j;

ﻩintc[MAX];

ﻩif(m<=n&&b[0]==45)

ﻩfor(i=1;

i〈m;

ﻩﻩc[i]=a[i];

for(i=1,j=1;

j<n;

i++,j++)

ﻩﻩa[i]=b[j];

ﻩfor(i=1,j=1;

j<n;

i++,j++)

ﻩb[i]=c[j];

ﻩfor(j=i;

j<MAX;

j++)

ﻩﻩb[j]=0;

ﻩreturn;

}

ﻩif(m>

=n&

&

a[0]==45)

a[0]=0;

ﻩb[0]=45;

ﻩreturn;

intminus(inta[],intb[],intd[],intm,intn)//减法运算

{

ﻩintc[MAX]={0},i,j,k;

ﻩfor(i=0;

i〈MAX;

i++)

ﻩd[i]=0;

ﻩfor(i=m-1,j=n—1,k=1;

i〉0&&

i-—,j--,k++)ﻩ

if(c[k]<

0||a[i]〈b[j])

ﻩﻩc[k]=c[k]+a[i]-b[j];

ﻩif(c[k]<

0)

ﻩ{

ﻩﻩﻩc[k]+=10;

ﻩﻩc[k+1]—-;

ﻩ}

ﻩelsec[k]=a[i]-b[j];

ﻩwhile(i>

0)

ﻩﻩc[k]=c[k]+a[i];

if(c[k]<0)

c[k]+=10;

ﻩﻩc[k+1]—-;

k++;

i--;

c[k]=a[i]+c[k];

while(c[k]<=0&

k>

0) 

ﻩﻩk--;

ﻩfor(i=1;

k〉0;

i++)

ﻩd[i]=c[k——];

ﻩreturn(i);

voidminusfun(inta[],int b[],int d[],intm,int n)  //判断是否两异号数相加

ﻩinti,j,f=0,g=0;

if(a[1]==0)

ﻩif(b[0]!

=0)printf("

-"

ﻩfor(i=1;

i<

n;

ﻩﻩprintf(”%d”,b[i]);

ﻩﻩprintf("

\n"

 

return;

ﻩif(b[1]==0)

ﻩif(a[0]!

=0)

ﻩﻩprintf("

-”);

for(i=1;

m;

i++)

ﻩprintf("%d",a[i]);

printf(”\n"

ﻩreturn;

ﻩif(m==n)

ﻩfor(i=1;

i<m;

ﻩ{

ﻩﻩif((a[i]〈b[i]&&b[0]==45)||(a[i]>

b[i]&

a[0]==45))

ﻩﻩﻩg=1;

ﻩﻩif(a[i]!

=b[i])f=1;

if(f==0)

ﻩﻩprintf("0\n");

ﻩﻩreturn;

if(g==1)

ﻩﻩchange(a,b,m,n);

printf("—"

ﻩﻩj=minus(a,b,d,n,m);

j;

i++)printf("%d"

d[i]);

ﻩprintf(”\n");

return;

elseif(a[0]==45&&

b[0]==0)

ﻩj=minus(b,a,d,n,m);

for(i=1;

i<j;

ﻩﻩprintf("

%d"

,d[i]);

ﻩprintf("

\n”);

ﻩreturn;

else

ﻩj=minus(a,b,d,m,n);

ﻩﻩfor(i=1;

j;

ﻩﻩprintf(”%d”,d[i]);

printf("

\n”);

return;

if(m>n&

&b[

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1