求编写一个求100的阶乘的程序。
- 提问者网友:棒棒糖
- 2021-05-09 16:30
- 五星知识达人网友:青尢
- 2021-05-09 17:32
#include<stdio.h>
main()
{int i,j=0;
for(i=1;i<=100;i++)
j=i*j ;
printf("%ld\n",j);
getch();
}
100!=9.33262154 × 10157
数值太大。。。int可能不行。你尝试使用double类型的数据
- 1楼网友:青尢
- 2021-05-09 22:06
double 也不行,超出范围了!
要用高精度运算,用数组模拟运算
- 2楼网友:酒醒三更
- 2021-05-09 20:31
========================
#include<stdio.h> void main() { int i; long double sum=1; for(i=1; i<=100; i++) sum *= i; printf("100! = %lf",sum); } =================
C语言的。
由于100!的结果非常大,所以结果使用了long double
- 3楼网友:未来江山和你
- 2021-05-09 19:49
#include<stdio.h>
long power(int n)
{
if(n==0||n==1)
return 1;
else return power(n-1)*n;
}
void main()
{
printf("100!=%d\n",power(100));
}
- 4楼网友:山河有幸埋战骨
- 2021-05-09 19:25
- 5楼网友:傲气稳了全场
- 2021-05-09 18:30
#include <stdio.h> #define N 100 //计算10的阶乘,最多只能算到9999
long a[8916];
int main(int argc, char* argv[]) { long n,i,c,len; a[0]=1; len=1; for( n=N;n>1;n--) { for(c=0,i=0;i<len;i++) { long p=a[i]*n+c; a[i]=p%10000; c=p/10000; } a[i]= c; if(c>0) { len++; } }
printf("%d",a[len-1]); for(i=len-2;i>=0; i--) { printf("%04d",a[i]); } printf("\n"); return 0; }