C++语言实现长整数相加减
本程序可用于多位整数加减的计算(包括负数),具体过程见如下
代码:
#include
using namespace std;
void swap(char p[]);
void plus(char m[],char n[],char y[]);
void decrease(char m[],char n[],char y[]);
void compare(char m[],char n[],int&t);
void change(char m[],char n[],char x,char y[],int&b);
void more(char m[],char n[],int i);
void less(char m[],char n[],int i);
int main()
{
char m[100],n[100],y[100];
char x;
int b=1;
cout<<"Please intput the first number."<>m;
cout<<"Please chose '+' or '-'."<>x;
cout<<"Please intput the second number."<cin>>n;
cout<<"The result is:"<=0;i--)
{
if(q[i]>47&&q[i]<58)
{
p[j]=q[i];
j++;
}
}
p[j]='\0';
}
void plus(char m[],char n[],char y[])//加法函数
{
int i,a;
for(i=0;i<100;i++)
{
if(m[i]<48&&n[i]<48)
{
}
y[i]='\0';
break;
if(m[i]>47&&n[i]>47)a=m[i]+n[i]-96;
if(m[i]>47&&n[i]<48)a=m[i]-48;
if(m[i]<48&&n[i]>47)a=n[i]-48;
if(a>=10)
{
y[i]=a-10+48;
if(m[i+1]<48)m[i+1]=49;
else m[i+1]+=1;
}
else y[i]=a+48;
}
}
void decrease(char m[],char n[],char y[])//减法函数
{
int i;
for(i=0;i<100;i++)
{
if(m[i]<48&&n[i]<48)
{
}
{
y[i]='\0';
break;
if(m[i]>47&&n[i]>47)
if(m[i]>=n[i])y[i]=m[i]-n[i]+48;
else
{
y[i]=m[i]-n[i]+58;
if(m[i+1]>48)m[i+1]-=1;
else less(m,n,i);
}
}
if(m[i]<47)
{
}
y[i]=58-n[i]+48;
if(m[i+1]>48)m[i+1]-=1;
else less(m,n,i);
if(n[i]<47)y[i]=m[i];
}
}
void compare(char m[],char n[],int&t)//m和n的绝对值比较函数
{
int i,tm=0,tn=0,a=0,b=0;
for(i=0;i<40;i++)
{
}
if(m[i]<58&&m[i]>47)tm++;
if(n[i]<58&&n[i]>47)tn++;
if(tm>tn)t=1;
else if(tm
n[b]){t=1;return;}
if(m[a]if(t>0){swap(m);swap(n);decrease(m,n,y);}
if(t<0){swap(m);swap(n);decrease(n,m,y);b=0;}
if(t=0) y[0]='0';
return;
}
if(m[0]!='-'&&x!='-'&&n[0]!='-'||m[0]!='-'&&x=='-'&&n[0]
=='-')
{swap(m);swap(n);plus(m,n,y);return;}
if(m[0]=='-'&&x!='-'&&n[0]=='-'||m[0]=='-'&&x=='-'&&n[0]!
='-')
{swap(m);swap(n);plus(m,n,y);b=0;return;}
if(m[0]=='-'&&x!='-'&&n[0]!='-'||m[0]=='-'&&x=='-'&&n[0]
=='-')
{
compare(m,n,t);
if(t<0){swap(m);swap(n);decrease(n,m,y);}
if(t>0){swap(m);swap(n);decrease(m,n,y);b=0;}
if(t=0) y[0]='0';
return;
}
}
void more(char m[],char n[],int i)//进位函数
{
}
int a;
a=m[i+1]+1-48;
if(a<10){m[i]+=1;return;}
else m[i]=m[i]+1-48-10;
i++;
more(m,n,i);
void less(char m[],char n[],int i)//退位函数
{
}
m[i+1]=48+10-1;
if(m[i+2]>48){m[i+2]-=1;return;}
i++;
less(m,n,i);