logo资料库

C++语言实现长整数相加减.docx

第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
资料共8页,全文预览结束
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(tmn[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);
分享到:
收藏