输入两个数(大数),计算成绩结果。
#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;
}