用C语言写一个高精度阶乘,并提供注释
时间: 2023-05-14 16:04:52 浏览: 113
以下是用C语言写的高精度阶乘代码,注释已经添加:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_DIGITS 10000 // 最大位数
void multiply(int *result, int num) {
int carry = 0; // 进位
for (int i = 0; i < MAX_DIGITS; i++) {
int product = result[i] * num + carry; // 计算乘积
result[i] = product % 10; // 取个位数
carry = product / 10; // 计算进位
}
}
void factorial(int n) {
int result[MAX_DIGITS]; // 存储结果
memset(result, 0, sizeof(result)); // 初始化为0
result[0] = 1; // 初始值为1
for (int i = 2; i <= n; i++) {
multiply(result, i); // 乘以i
}
printf("%d! = ", n);
int start_printing = 0; // 是否开始输出
for (int i = MAX_DIGITS - 1; i >= 0; i--) {
if (result[i] != 0) {
start_printing = 1; // 找到第一个非零位
}
if (start_printing) {
printf("%d", result[i]); // 输出
}
}
printf("\n");
}
int main() {
int n;
printf("请输入一个正整数:");
scanf("%d", &n);
factorial(n);
return 0;
}
如果您有任何问题,请随时问我!
阅读全文