写一个大数相乘的C语言程序
时间: 2024-05-31 11:08:34 浏览: 85
以下是一个大数相乘的C语言程序:
#include <stdio.h>
#include <string.h>
#define MAX_LEN 1000
void multiply(char num1[], char num2[], char result[]);
int main() {
char num1[MAX_LEN], num2[MAX_LEN], result[MAX_LEN*2];
printf("Enter first number: ");
scanf("%s", num1);
printf("Enter second number: ");
scanf("%s", num2);
multiply(num1, num2, result);
printf("Result: %s\n", result);
return 0;
}
void multiply(char num1[], char num2[], char result[]) {
int len1 = strlen(num1);
int len2 = strlen(num2);
int i, j, k = 0;
int carry = 0;
// Initialize result array with zeros
for(i = 0; i < len1+len2; i++) {
result[i] = '0';
}
result[i] = '\0';
// Multiply each digit of num1 with num2 and add to result
for(i = len1-1; i >= 0; i--) {
carry = 0;
for(j = len2-1; j >= 0; j--) {
int product = (num1[i]-'0')*(num2[j]-'0') + (result[i+j+1]-'0') + carry;
result[i+j+1] = (product % 10) + '0';
carry = product / 10;
}
result[i+j+1] = carry + '0';
}
// Remove leading zeros from result
i = 0;
while(result[i] == '0') {
i++;
}
// Copy result to final array
for(j = 0; j < len1+len2-i; j++) {
result[j] = result[i+j];
}
result[j] = '\0';
}