具体的方法和加法是类似的
不过中间有可以简化的步骤比较巧
进位要计算好
没有写在小函数里,要用的话在函数里写很方便
#include <iostream>
#include <string.h>
#define maxle 1000
using namespace std;
int main()
{
char a[maxle], b[maxle];
char c[maxle * 2] = {};//c结尾
cin >> a >> b;
int i, j, m, n;
long sum, upper;//标记进位
m = strlen(a) - 1;
n = strlen(b) - 1;//ab长度
for (i = m; i >= 0; i--)
a[i] -= '0';
for (i = n; i >= 0; i--)
b[i] -= '0';//数字化
upper = 0;
for (i = m + n; i >= 0; i--)
{
sum = upper;
j = i - m;
if (j < 0)
{
j = 0;
}
for (; j <= i && j <= n; j++)
{
sum += a[i - j] * b[j];
}
c[i + 1] = sum % 10 + '0'; //计算结果
upper = sum / 10;//进位
}
c[0] = upper + '0';
if (c[0] == '0')//如果没有进位
{
for (int i = 1; i < strlen(c); i++)
{
cout << c[i];
}
}
else
{
cout << c;
}
return 0;
}