高精度四則運算 完整版
阿新 • • 發佈:2019-01-10
1.A+B問題
#include<cstdio> #include<iostream> #include<cmath> #include<cstring> #include<stack> using namespace std; const int maxn=1000; int *Str2Int(char *str){ int i,len=strlen(str); int *a=new int[(len+1)*sizeof(int)]; for(i=0;i<len;i++) a[i]=(int)str[len-i-1]-48; return a; }// 將字元陣列str轉化為整型陣列; int check(int *a,int n){ int k=0,len=n; while(a[len-1]==0&&len>1) len--; for(k=0;k<len;k++){ if(a[k]>=10) { a[k+1]=a[k+1]+a[k]/10; a[k]=a[k]%10; } } if(a[k]!=0) len=k+1; return len; }//歸整 char *Int2Str(int *a,int n){ int i; char *str=new char [(n+1)*sizeof(char)]; for(i=0;i<n;i++) str[i]=(char)a[n-i-1]+48; str[n]='\0'; return str; }//將整型陣列化為字元陣列 char *addition(char *m1,char *m2){ int i,len1,len2,len,c=0; int *t1,*t2; len1=strlen(m1);len2=strlen(m2); len=(len1>=len2)?len1:len2; t1=new int[(len+2)*sizeof(int)]; t2=new int[(len+2)*sizeof(int)]; t1=Str2Int(m1); t2=Str2Int(m2); for(i=len1;i<len+1;i++) t1[i]=0; for(i=len2;i<len+1;i++) t2[i]=0; for(i=0;i<len;i++) t1[i]=t1[i]+t2[i]; len=check(t1,len); return Int2Str(t1,len); } int main(){ char s1[maxn],s2[maxn]; while(cin>>s1>>s2) cout<<addition(s1,s2)<<endl; return 0; }