#include<iostream>
#include<string>
#include<cmath>
using namespace std;
//模拟手工加法
string add(string str1, string str2)
{
int i;
string str;
int len_str1 = str1.length();
int len_str2 = str2.length();
int n = abs(len_str1-len_str2);
//长度对齐
if(len_str1 < len_str2)
for(i=0; i<n; i++)
str1 = "0"+ str1;
else
for(i=0; i<n; i++)
str2 = "0"+ str2;
len_str1 = str1.length(); //此时两个字符串的长度一样
int cf=0; //进位标志位
int temp; //存放两个数相加的和
for(i=len_str1-1; i>=0; i--)
{
temp = str1[i]-'0' + str2[i]-'0' + cf; //把字符串转化为整型
cf = temp/10;
temp = temp%10;
str = char(temp+'0') + str;
}
if(cf!=0)
str = char(cf+'0') + str;
return str;
}
//模拟手工乘法
string mul(string str1, string str2)
{
string str, tempstr;
int len_str1=str1.length();
int len_str2=str2.length();
for(int i=len_str2-1;i>=0;i--)
{
int temp=str2[i]-'0';
int t=0; //存放乘积的个位数
int cf=0; //乘积的进位标志位
if(temp!=0)
{
for(int j=1;j<=len_str2-1-i;j++) //str2每一位数字的权值
tempstr+="0";
for(int j=len_str1-1;j>=0;j--)
{
t=(temp*(str1[j]-'0')+cf)%10;
cf=(temp*(str1[j]-'0')+cf)/10;
tempstr=char(t+'0')+tempstr; //字符串拼接,相当于在结果后加几个0
}
if(cf!=0) tempstr=char(cf+'0')+tempstr;
}
str=add(str,tempstr);
}
str.erase(0,str.find_first_not_of('0')); //删除结果中多余的前导0
if(str.empty()) str="0";
return str;
}
int main()
{
string str1, str2;
cin >> str1;
cin >> str2;
cout << mul(str1, str2) << endl;
return 0;
}
<pre class="cpp" name="code">#include<iostream>
#include<string>
#include<cmath>
using namespace std;
string add(string str1, string str2)
{
int i;
string str;
int len_str1 = str1.length();
int len_str2 = str2.length();
int n = abs(len_str1-len_str2);
//长度对齐
if(len_str1 < len_str2)
for(i=0; i<n; i++)
str1 = "0"+ str1;
else
for(i=0; i<n; i++)
str2 = "0"+ str2;
len_str1 = str1.length(); //此时两个字符串的长度一样
int cf=0; //进位标志位
int temp; //存放两个数相加的和
for(i=len_str1-1; i>=0; i--)
{
temp = str1[i]-'0' + str2[i]-'0' + cf; //把字符串转化为整型
cf = temp/10;
temp = temp%10;
str = char(temp+'0') + str;
}
if(cf!=0)
str = char(cf+'0') + str;
return str;
}
int main()
{
string str1, str2;
cin >> str1;
cin >> str2;
cout << add(str1, str2) << endl;
return 0;
}