c语言实现给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式
时间: 2024-06-13 15:06:05 浏览: 173
以下是C语言实现给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式的代码:
```c
#include <stdio.h>
#include <string.h>
char* multiply(char* num1, char* num2) {
int len1 = strlen(num1), len2 = strlen(num2);
int len = len1 + len2;
int i, j, k, carry, n1, n2, sum;
char* res = (char*)malloc(sizeof(char) * (len + 1));
memset(res, '0', len + 1);
for (i = len1 - 1; i >= 0; i--) {
carry = 0;
n1 = num1[i] - '0';
k = len2 + i + 1;
for (j = len2 - 1; j >= 0; j--) {
n2 = num2[j] - '0'; sum = n1 * n2 + carry + res[k] - '0';
carry = sum / 10;
res[k--] = sum % 10 + '0';
}
res[k] += carry;
}
for (i = 0; i < len; i++) {
if (res[i] != '0') {
break;
}
}
if (i == len) {
res[i - 1] = '\0';
} else {
for (j = 0; i <= len; i++, j++) {
res[j] = res[i];
}
res[j] = '\0';
}
return res;
}
```
阅读全文