常见的有两种:
递归版本:
int Fac(int n){if(n==0) return 1
return n*Fac(n-1)
}
还有一种是循环版:
int ans=1for(int i=1i<=ni++) ans*=i
测试方法:
#include<stdio.h>int Fac(int n){
if(n==0) return 1
return n*Fac(n-1)
}
int main(){
int n
while(scanf("%d",&n)!=EOF){
int ans=1
for(int i=1i<=ni++) ans*=i
printf("%d %d\n",ans,Fac(n))
}
return 0
}
有个值得注意的地方:阶乘时,数增大的很快,在n达到13时就会超过int的范围,此时可以用long long或是 __int64来存储更高精度的值,如果还想存储更高位的,需要用数组来模拟大数相乘。
思路很简单:乘法中判断0个数:
首先判断要乘的书数字中有多少10。
然后出现一个5就找一个偶数配对,
最后统计就行了、、、
阶乘就更简单,直接判断整数的大小,
例如:整数是n
那么输出就是n/5..就行了
在编辑页面输入以下源代码:
#include<stdio.h>
int main()
{
int i=1,mul=1
printf("5!=")
do
{
mul=mul*i
i++
}while(i<=5)
printf("%d\n",mul)
return 0
}
算的是5的阶乘,所以,在我们的语句里,我们需要向计算机表达这一个要求,这里我们的阶乘的算法是:mul=mul*i。在我们的程序编写完成之后,我们点击“运行”,即可得到我们的5!的最终结果了。
扩展资料:
C语言包含的数据类型广泛,不仅包含有传统的字符型、整型、浮点型、数组类型等数据类型,还具有其他编程语言所不具备的数据类型,其中以指针类型数据使用最为灵活,可以通过编程对各种数据结构进行计算。
与其他高级语言相比,C语言可以生成高质量和高效率的目标代码,故通常应用于对代码质量和执行效率要求较高的嵌入式系统程序的编写。