写一个大数相乘的C语言代码
时间: 2024-05-02 20:21:38 浏览: 256
以下是一个大数相乘的C语言代码示例:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 1000
void multiply(char num1[], char num2[], char result[]) {
int len1 = strlen(num1);
int len2 = strlen(num2);
int i, j, k, carry, sum;
int temp[MAX_LEN] = {0};
for (i = len1 - 1; i >= 0; i--) {
carry = 0;
for (j = len2 - 1; j >= 0; j--) {
sum = (num1[i] - '0') * (num2[j] - '0') + carry + temp[i + j + 1];
temp[i + j + 1] = sum % 10;
carry = sum / 10;
}
temp[i + j + 1] = carry;
}
k = 0;
for (i = 0; i < len1 + len2; i++) {
if (temp[i] != 0) {
break;
}
}
if (i == len1 + len2) {
result[k++] = '0';
}
for (; i < len1 + len2; i++) {
result[k++] = temp[i] + '0';
}
result[k] = '\0';
}
int main() {
char num1[MAX_LEN];
char num2[MAX_LEN];
char result[MAX_LEN * 2];
printf("Enter the first number: ");
scanf("%s", num1);
printf("Enter the second number: ");
scanf("%s", num2);
multiply(num1, num2, result);
printf("The result of multiplication is: %s\n", result);
return 0;
}
```
该代码实现了两个大数相乘的功能。在`multiply`函数中,使用了一个`temp`数组来保存中间结果。首先从低位开始遍历两个数,将每一位相乘的结果加上进位值和`temp`数组中原来的值,然后将结果的个位数保存在`temp[i+j+1]`中,十位数保存在`temp[i+j]`中。最后,将`temp`数组中的结果转换成字符型,保存在`result`数组中。这个代码能够处理最大长度为1000的大数相乘。
阅读全文