这是一个示例代码,用于在 C 语言中模拟大整数乘法:
``` #include <stdio.h> #include <stdlib.h> #include <string.h>
#define MAX_DIGITS 200 // 最大位数
// 大整数结构体 typedef struct { int digits[MAX_DIGITS]; // 每一位上的数字 int size; // 大整数的位数 } bignum_t;
// 初始化大整数 void bignum_init(bignum_t *n) { memset(n->digits, 0, sizeof(int) * MAX_DIGITS); n->size = 1; }
// 读入大整数 void bignum_read(bignum_t *n, char *s) { int len = strlen(s), i; bignum_init(n); for (i = 0; i < len; i++) { n->digits[i] = s[len - i - 1] - '0'; } n->size = len; }
// 大整数乘法 void bignum_multiply(bignum_t *a, bignum_t *b, bignum_t *c) { int i, j; bignum_init(c); for (i = 0; i < a->size; i++) { for (j = 0; j < b->size; j++) { c->digits[i + j] += a->digits[i] * b->digits[j]; c->digits[i + j + 1] += c->digits[i + j] / 10; c->digits[i + j] %= 10; } } c->size = a->size + b->size; while (c->digits[c->size - 1] == 0 && c->size > 1) { c->size--; } }
// 输出大整数 void bignum_print(bignum_t *n) { int i; for (i = n->size - 1; i >= 0; i--) { printf("%d", n->digits[i]); } printf("\n"); }
int main() { bignum_t a, b, c; char s[MAX_DIGITS]; while (scanf("%s", s) == 1) { bignum_read(&a, s); scanf("%s", s); bignum_read(&b, s); bignum_multiply(&a, &b, &c); bignum_print(&c); } return 0; } ``