输入:两个字符串表示的大数(正整数),大数的含义是指超过了C++内嵌的数据类型(int,long等等)。
输出:两个数进行乘法的结果。
/* 输入两个数字表示的字符串,计算其乘法的结果 */ #include <iostream> #include <string> using namespace std; char* GetMUL(const char* a, const char* b) { int *pRt = new int[strlen(a) + strlen(b) + 1]; memset(pRt, 0, (strlen(a) + strlen(b) + 1) * sizeof(int)); //逐次对每一次进行乘法操作 for (int i = 0; i < strlen(a); i++) { for (int j = 0; j < strlen(b); j++) { pRt[i + j + 1] += (a[i] - '0') * (b[j] - '0'); } } //进位操作 for (int i = strlen(a) + strlen(b); i >= 0; i--) { if (pRt[i] >= 10) { pRt[i - 1] += pRt[i] / 10; pRt[i] %= 10; } } //创建一个字符串,用于对结果的保存 char* str = new char[strlen(a) + strlen(b) + 1]; memset(str, 0, (strlen(a) + strlen(b) + 1) * sizeof(char)); int index = 0; while (pRt[index] == 0) index++; //将结果重新转换成字符串表示 for (int i = 0; index < strlen(a) + strlen(b); i++) { str[i] = pRt[index++] + 0x30; } delete pRt; return str; } int main() { char a[127] = {0}; char b[127] = {0}; char *pRt; while (std::cin >> a >> b) { pRt = GetMUL(a, b); std::cout <<"a * b = " << pRt << std::endl; delete pRt; } return 0; }