两个大整数相乘C语言程序,求一C语言编程:求两个大数的乘积。
时间: 2024-02-23 15:03:32 浏览: 20
以下是一个简单的大整数相乘的 C 语言程序:
```c
#include <stdio.h>
#include <string.h>
#define MAXLEN 1000
void multiply(char* num1, char* num2, char* result);
int main() {
char num1[MAXLEN], num2[MAXLEN], result[MAXLEN*2];
printf("Enter the first number: ");
scanf("%s", num1);
printf("Enter the second number: ");
scanf("%s", num2);
multiply(num1, num2, result);
printf("The product is %s.\n", result);
return 0;
}
void multiply(char* num1, char* num2, char* result) {
int len1 = strlen(num1);
int len2 = strlen(num2);
int len = len1 + len2;
int i, j, k, carry, sum;
int n1[MAXLEN], n2[MAXLEN], res[MAXLEN*2];
memset(res, 0, sizeof(res));
for (i = 0; i < len1; i++) {
n1[i] = num1[len1-1-i] - '0';
}
for (i = 0; i < len2; i++) {
n2[i] = num2[len2-1-i] - '0';
}
for (i = 0; i < len1; i++) {
carry = 0;
for (j = 0; j < len2; j++) {
sum = n1[i] * n2[j] + carry + res[i+j];
carry = sum / 10;
res[i+j] = sum % 10;
}
if (carry > 0) {
res[i+j] += carry;
}
}
i = len-1;
while (i > 0 && res[i] == 0) {
i--;
}
for (j = 0, k = i; k >= 0; j++, k--) {
result[j] = res[k] + '0';
}
result[j] = '\0';
}
```
这个程序定义了一个 `multiply` 函数,该函数接受两个大整数 `num1` 和 `num2`,并计算它们的乘积,将结果存储在 `result` 中。程序通过将输入的字符串逆序为数组,然后按位相乘并逐步累加来实现大整数相乘的过程。最后,将结果再次逆序为字符串,并将其存储在 `result` 中。