阶乘如何用c语言实现?

如题所述

1、首先打开CodeBlocks编辑器,新建一个空白页面,写入头文件和主函数:

2、然后定义需要的变量,编写一个输入函数接受用户输入的数值,使用for循环实现阶乘计算,每次循环都用sum变量乘以循环的下标即可实现阶乘,最后需要编写输出函数,输出结果:

3、最后编译程序,输入一个数字,即可看到计算出正确的结果:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-18
#include<stdio.h>
#define N 50 /*可以是任意一个数的阶乘,当然要计算机能够存的下*/

int main()
{
int a[100], l=0, i, j;
for(i=0; i<100; i++)
a[i]=0;
a[0]=1;

for(i=2; i<=N; i++)
{
for(j=0; j<=l; j++)
a[j] *= i;
l+=3;
for(j=0; j<l; j++)
if(a[j]>9)
{
a[j+1]+=a[j]/10;
a[j] %=10;
}
while(a[l]==0) l--;
}

for(i=l; i>=0; i--)
printf("%d", a[i]);
printf("\n");
}

看了 楼下两个 用int 存储 50!
感觉有点不可思议, 至少应该用double啊,用double虽然不能保证精度,但至少可以很接近结果。

3楼的 一句话:“老师说过,可以自已定义一个类型来表示更大的数。。。”

自己是可以定义,你可以定义任意类型。只不过需要你自己来实现。 50!这种问题 就相当于 大数 的操作。
网上可以下载到大树类, 支持 大数的+ - * / 开平方, 开根号,(几乎所有math里的函数)...。
第2个回答  2017-11-10
#include<stdio.h>
int main()
{
int n=1,i,sum=1;
for(i=0;i<5;i++) /*这里就是1一直乘以到5,你要乘以10就修改成 i<10*/
{sum=sum*n;
n++;}
printf("sum=%d\n",sum);
return 0;
}
第3个回答  推荐于2017-11-11
下面是求10的阶乘,你参考下:

void main
{
int fn =1,i=1;
int n = 10;
//下面就是求10的阶乘
for(i=1;i<=n;i++)
{
fn = fn * i;
}
printf("10的阶乘 是 %d",fn);
}本回答被提问者和网友采纳
第4个回答  2011-05-26
//求n的阶乘
int sum=0;
for(int i=1;i<=n;i++)
sum=sum+i;
return sum;
相似回答