C语言实现大数相乘的算法。
int main(void){
char num1[100],num2[100];
char resString[100000];
int length1 = strlen(num1);
int length2 = strlen(num2);
int arrayBuf[100][100] = {0};
int curNum1 = 0;
int curNum2 = 0;
int multiBuf = 0;
int postion = 0;
int carry = 0;
scanf("%s %s",num1,num2);
for (int i = 0; i < length1; i++) {
if (num1[i] > '9' || num1[i] < '0') {
return -1;
}
for (int j = 0; j < length2; j++) {
if (num2[i] > '9' || num2[i] < '0') {
return -1;
}
curNum1 = num1[i] - '0';
curNum2 = num2[j] - '0';
multiBuf = curNum1 * curNum2;
arrayBuf[i][i + j] = multiBuf;
}
}
for (int j = length2 + length2 - 2; j >= 0; j--) {
multiBuf = 0;
for (int i = length1 - 1; i >= 0; i--) {
multiBuf = multiBuf + arrayBuf[i][j];
}
multiBuf = multiBuf + carry;
carry = multiBuf/10;
resString[postion] = multiBuf%10 + '0';
postion++;
}
for (int i = postion - 1; i >= 0; i--) {
printf("%c",resString[i]);
}
printf("\n");
return 0;
}