#include <iostream> #include <string> using namespace std; const int N=1000; int i,j; void reverseIt(string& str) { int m=str.length(); for(i=0,j=m-1;i<=j;i++,j--) { char temp; temp=str[i]; str[i]=str[j]; str[j]=temp; } } void StrToInt(string str1,int (&a)[N]) { for(i=0;i<str1.size();i++) a[i]=str1[i]-'0'; } void Calcuate(string str1,string str2) { int m=0,n=0,count=0; int a[N]={0},b[N]={0},Result[2*N]={0}; m=str1.length();//str1*str2,a*b n=str2.length(); reverseIt(str1); reverseIt(str2); StrToInt(str1,a); StrToInt(str2,b); for(i=0;i<n;i++)//乘数 for(j=0;j<m;j++)//被乘数的位置 { Result[i+j]+=b[i]*a[j]; if(Result[i+j]>10){ Result[i+j+1]+=Result[i+j]/10; Result[i+j]=Result[i+j]%10; }//if }//for if(Result[m+n-1]!=0) count=m+n-1; else count=m+n-2; for(int i=count;i>=0;i--) { cout<<Result[i]; }//for cout<<endl; } int main() { string str1,str2; while(1) { cout<<"Please input two integer:"<<endl; cin>>str1>>str2; Calcuate(str1,str2); }//while return 0; }
大整数相乘