这个c程序怎样修改才能求出20的阶乘或者更大数的阶乘?
发布网友
发布时间:2022-04-22 22:05
我来回答
共2个回答
热心网友
时间:2023-07-14 15:29
如果对精度要求不高,可以用double类型,如果要求精确结果,那就要自己组织数据了
以前写过一个暴力计算的,计算算到10000!没问题,你可以参考下:
//暴力模拟手工阶乘计算,用数组保存结果,每元素保存4位
#include <stdio.h>
#define N 10000
int main()
{
static long int r[N] = { 1 };
int i, j,n;
int k = 0, l = 0;
printf("输入一个数求其阶乘\n");
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
for (j = 0; j <= l; j++)
{
r[j] = r[j] * i + k;
k = r[j] / 10000;
r[j] = r[j] % 10000;
}
if (k)
{
l++;
r[j] = k;
k = 0;
}
}
j = l;
printf("%d!=%d", i-1, r[j--]);
for (; j >= 0; j--)
{
printf("%04d", r[j]);
}
printf("\n");
return 0;
}
热心网友
时间:2023-07-14 15:29
这是数据类型*的,要想求20,就把int改成long就行。
要想求更大,就得好好设计一下了,比如说,整个链表什么的,把一个大数拆成几个小一点的的数追问能不能帮我改一下程序?
追答给你个建议吧,你上网搜一搜计算器代码,也许对你有帮助。