输入两个数(大数),计算成绩结果。
#include <iostream> #include <string> using namespace std; const int MaxSize=3000; //模拟手算,大数. 2014-1-20 int data[MaxSize+5]; int *aArray,*bArray; int aSize,bSize; void gsh(int i) {//从i到j个位置格式化 int k; for(k=i;k<=aSize+bSize+1;k++) { if(data[k]>9) { data[k+1]+=data[k]/10; data[k]%=10; } } } void fun() { int relust,i,j; for(i=1;i<=bSize;i++) { for(j=1;j<=aSize;j++) { relust=bArray[i]*aArray[j]; data[i+j-1]+=relust; gsh(i);//从i进位,全部是否进位格式化 } } relust=0; for(i=bSize+aSize+1;i>=1;i--) if(data[i]) break; for(;i>=1;i--) cout<<data[i]; cout<<endl; } int main() { int i,j; string a,b; cin>>a>>b;//输入的数字保存在string中 aArray=new int[a.length()+3]; bArray=new int[b.length()+3];//将数字保存在int数组中 memset(aArray,0,sizeof(aArray)); memset(bArray,0,sizeof(bArray)); for(i=a.length(),j=1;i>=0;i--) if(a[i]>='0'&&a[i]<='9') aArray[j++]=a[i]-'0'; aSize=j-1; for(i=b.length(),j=1;i>=0;i--) if(b[i]>='0'&&b[i]<='9') bArray[j++]=b[i]-'0'; bSize=j-1; for(i=0;i<=MaxSize;i++) data[i]=0; fun(); // for(i=aSize;i>0;i--) // cout<<aArray[i]; //test // cout<<endl<<endl; // for(i=bSize;i>0;i--) // cout<<bArray[i]; return 0; }