#include <iostream> #include <Windows.h> using namespace std; void multiply(char* a, char* b, char* c) //c = a*b { int len_a = strlen(a); int len_b = strlen(b); int total = len_a + len_b; int* data = new int[total]; //两个数相乘最多只有len_a + len_b位 for (int i = 0; i < total; ++i) { data[i] = 0; } //逐位相乘 for (int i = 0; i < len_a; ++i) { for (int j = 0; j < len_b; ++j) { data[i + j + 1] = ( a[i] - '0') * ( b[j] - '0'); } } for (int i = total - 1; i >= 0; --i) { if (data[i] >= 10 ) //如果大于10的话 { data[i - 1] = data[i]/10 + data[i - 1]; data[i] = data[i]%10; } } int i = 0; //过滤掉0 while(data[i] == 0) ++i; int j = 0; //转换整数到字符串 for (j = 0; i < total; ++i, ++j) { c[j] = data[i] + '0'; } c[j] ='/0'; delete []data; } int main() { char* a = "12345"; char* b = "100000000"; char c[1000]; multiply(a, b, c); cout<<c<<endl; }