要机试了,练了几道题。贴一下大数相乘的写法,关键是加法:
#include<iostream>
#include<string>
using namespace std;
#define Max 100
void Add(char*cA,int nNum)
{
nNum=nNum+*cA-'0';
int high=nNum/10;
int low=nNum%10;
*cA=low+'0';
if(high==0)
return;
else
{
Add(cA+1,high);
}
}
void main()
{
char cA1[Max],cA2[Max],cA3[Max+Max];
int cA1length=0,cA2length=0;
string str;
for(int i=0; i<Max;++i)
{
cA1[i]='0';
cA2[i]='0';
}
for(int i=0;i<Max*2;++i)
{
cA3[i]='0';
}
cout<<"输入两个大数:"<<endl;
cin>>str;
for(int i=0;i<str.length();++i)
{
cA1length++;
cA1[i]=str[str.length()-1-i];
}
str.clear();
cin>>str;
for(int i=0;i<str.length();++i)
{ cA2length++;
cA2[i]=str[str.length()-1-i];
}
for(int i=0;i<cA2length;++i)
{
for(int j=0;j<cA1length;++j)
{
int Temp=(cA2[i]-'0')*(cA1[j]-'0');
Add(cA3+i+j,Temp);
}
}
int nUp=cA1length+cA2length;
while(cA3[nUp]=='0')
nUp--;
while(nUp!=-1)
{
cout<<cA3[nUp];
nUp--;
}
}