当前位置:文档之家› (完整word版)C语言长整数运算

(完整word版)C语言长整数运算

(完整word版)C语言长整数运算
(完整word版)C语言长整数运算

#include

#include

#define N 500

void plus() //加法

{

char stra[N],strb[N];

int numa[N],numb[N],c[N],len,i;

cout<<"请输入要进行加法运算的两个长整数"<

cin>>stra>>strb;

len=strlen(stra)>strlen(strb)?strlen(stra):strlen(strb);

for(i=0;i

for(i=strlen(stra);i

numa[i]=0;

for(i=0;i

for(i=strlen(strb);i

numb[i]=0;

for(i=0;i

c[len]=0;

for(i=0;i

c[i+1]=c[i+1]+c[i]/10;

c[i]=c[i]%10;

}

if(c[len]!=0) cout<

for(i=len-1;i>=0;i--)

cout<

cout<

}

void minus() //减法

{

char stra[N],strb[N];

int numa[N],numb[N],c[N],len,i,flag=0;

cout<<"请输入要进行减法运算的两个长整数"<

cin>>stra>>strb;

len=strlen(stra)>strlen(strb)?strlen(stra):strlen(strb);

for(i=0;i

numa[strlen(stra)-1-i]=stra[i]-'0';

for(i=strlen(stra);i

numa[i]=0;

for(i=0;i

cout<

cout<

for(i=0;i

numb[strlen(strb)-1-i]=strb[i]-'0';

for(i=strlen(strb);i

numb[i]=0;

for(i=0;i

cout<

cout<

for(i=0;i

c[i]=numa[i]+10-numb[i];

numa[i+1]--;

}

for(i=0;i

c[i+1]=c[i+1]+c[i]/10;

c[i]=c[i]%10;

}

c[strlen(stra)-1]=c[strlen(stra)-1]%10;

for(i=strlen(stra)-1;i>=0;i--) //输出c,从第一个不为的位置输出

{

if(c[i]!=0)

flag=1;

if(flag==1)

cout<

}

cout<

}

void multiply()

{

char stra[N],strb[N];

int numa[N],numb[N],i,j,k,dm=0;

int c[N][N],d[2*N];

cout<<"请输入要进行乘法运算的两个长整数"<

cin>>stra>>strb;

for(i=0;i

for(j=0;j

c[i][j]=0;

for(i=0;i<2*N;i++)

d[i]=0;

for(i=0;i

for(i=0;i

for(i=0;i

for(j=0;j

c[i][j]=numb[i]*numa[j];

for(k=0;k

{

for(i=1;i

for(j=0;j

if((k-i-j)==0)

c[0][k]+=c[i][j];

d[dm++]=c[0][k];

}

for(k=(strlen(stra)-strlen(strb)+1);k

{

for(i=1;i<(strlen(strb)-1);i++)

for(j=0;j

if((strlen(strb)-1+k-i-j)==0)

c[strlen(strb)-1][k]+=c[i][j];

d[dm++]=c[strlen(strb)-1][k];

}

for(i=(dm-1);i>0;i--) //整理d,每一位大于的向上一位置进

{

d[i-1]=d[i-1]+d[i]/10;

d[i]=d[i]%10;

}

cout<

cout<<"两者之积为:"<

for(i=0;i

cout<

cout<

}

int main()

{ int choice;

while(1)

{

cout<<"\n";

cout<<"\n\t\t 长整数的运算 ";//输入一个选择功能菜单cout<<"\n";

cout<<"\n\t\t 1-------长整数的加法 ";

cout<<"\n\t\t 2-------长整数的减法 ";

cout<<"\n\t\t 3-------长整数的乘法 ";

cout<<"\n\t\t 0-------退出 ";

cout<<"\n";

cout<<"\n\t\t 请选择菜单号(--3)进行操作:";

cin>>choice;

switch(choice)

{

case 1:

plus() ;

break;

case 2:

minus();

break;

case 3:

multiply();

break;

case 0:

return 0;

}

}

return 1;

}

相关主题
文本预览
相关文档 最新文档