求n! ,即计算p=1×2×3×…×n的值,n的值从键盘输入

•求n! ,即计算p=1*2*3*…*n的值,n的值从键盘输入
C语言题目

n有限制吗?

如果n没有限制 需要用大数乘法

如果n限制在<=12的话 直接乘就可以了

大数乘法的例子

#include <stdio.h>
#define MAX_DIG 100
int main()
{
int num[MAX_DIG ] = {0};
int i, j;
int a,t;
int n;
scanf("%d", &n);
num[0] = 1;
for(i = 2; i <= n; i ++)
{
a = t = 0;
for(j = 0; j < MAX_DIG ; j ++)
{
t = num[j]*i + a;
num[j] = t%10;
a=t/10;
}
}
printf("%d!=", n);;
for(i = MAX_DIG - 1; i >=0; i --)
if(num[i]) break;
for(;i>=0; i --)
printf("%d",num[i]);
printf("\n");
}

这个可以算<70的阶乘 如果需要更大数字 放大num的位数就可以了


是否有问题? 有问题请追问 没问题请采纳

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-29
void main ()
{
int p=0,res=0;
printf("输入N的值:");
scanf("%d",&p);
for(inti=1;i<p+1;i++)
{
res*=i;
}
printf("平均分为%d\n",res);
}
第2个回答  推荐于2018-04-12
#include<stdio.h>int main(){int n,p=1;int i;printf("Please enter n:");scanf("%d",&n);for(i=1;i<=n;i++)p*=i;printf("%d! = %ld\n",n,p);return 0;}本回答被网友采纳
第3个回答  2013-11-29
#include<stdio.h>
int main()
{int n,p=1;
int i;
scanf("%d",&n);
for(i=1;i<=n;i++)
p*=i;
printf("%d\n",p);
return 0;
}
相似回答