C语言编程 N的阶乘

用C语言编写... 用C语言编写 展开
 我来答
听不清啊
高粉答主

2015-12-16 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部

#include<stdio.h>

int main() 

{

int n,i,f=1;

printf("请输入一个整数:");

scanf("%d",&n);

for(i=2;i<=n;i++)

f*=i;

printf("%d!=%d\n",n,f);

getch();

return 0;

}

机晏藤映真
2019-04-03 · TA获得超过3705个赞
知道大有可为答主
回答量:3130
采纳率:25%
帮助的人:202万
展开全部
你是不是求C语言编写求n阶乘的代码?
/*求n的阶乘
*/#include
"stdio.h"int
main(void){

int
num,
i,
result;

printf
("请输入一个数\n\n");

scanf
("%d",
&num);

for
(i
=
1,
result
=
1;
i
<=
num;
++i)

result
*=
i;

printf
("\n%d!=
%d",
--i,
result);

return
0;}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lambozhang
2010-05-10 · TA获得超过396个赞
知道答主
回答量:183
采纳率:0%
帮助的人:50万
展开全部
int recursion(int x)
{
if (x==1)
return x;
else
return x*(recursion(x-1));
}
递归,在main函数里面调用就好了,好久没看过C了,不知对不对,你试试吧,重要的是这个思想.......
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
高宠_小霸王
2010-05-11
知道答主
回答量:2
采纳率:0%
帮助的人:0
展开全部
#include<iostream>
#include"stdio.h"
int input(int min,int max);
void main()
{int n,m,i,j,k,len=2570;
static int s[2570];
s[0]=1;
printf("请给出n的值:\n");
n=input(0,1000);
printf("请给出m的值:\n");
m=input(0,n);
j=n; k=m;
while(k--)
{for(i=0;i<=2569;i++) s[i]*=j;
for(i=0;i<=2568;i++)
while(s[i]>=10)
{s[i]-=10; s[i+1]++;}
j--;}
for(i=2569;!s[i--];) len--;
if(n==m) printf("%d!=",n);
else printf("A%d %d=",n,m);
if(len<=20)
for(i=len-1;i>=0;i--)
printf("%d",s[i]);
else
{printf("%d.",s[len-1]);
for(i=len-2;i>=len-10;i--)
printf("%d",s[i]);
printf("e%d",len-1);}
printf("\n");}
int input(int min,int max)
{int result,again;
do
{scanf("%d",&result);
if((result<=max)&&(result>=min)) again=0;
else {printf("输入错误,请重新输入:\n"); again=1;}
}while(again);
return result;}

我的这个程序不只能算阶乘,还能算排列数就是高中学的An m,比如A5 3=5*4*3,你从键盘输入的第一个数是n,第二个数是m。int型变量最大能表示到32767,但是我做的程序能突破这个上限,而且如果结果过长,可以用e指数表示。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友386d571
2012-12-24 · 超过12用户采纳过TA的回答
知道答主
回答量:62
采纳率:100%
帮助的人:31.8万
展开全部
高精度阶乘
#include<cstdio>
#include<cstdlib>
#include<cstring>
struct hp{int len,a[10000000];};
hp x,y,z;
int main()
{
int n;
scanf("%d",&n);
memset(z.a,0,sizeof(z.a));
z.a[0]=1;z.len=1;
for(int i=2;i<=n;i++)
{
for(int j=0;j<z.len;j++)
{
z.a[j]=z.a[j]*i;
}
for(int j=0;j<z.len;j++)
{
z.a[j+1]=z.a[j+1]+z.a[j]/10;
z.a[j]=z.a[j]%10;
}
while(z.a[z.len]!=0)
{
z.a[z.len+1]=z.a[z.len]/10;
z.a[z.len]=z.a[z.len]%10;
z.len++;
}
}
for (int i=z.len-1;i>=0;i--)
printf("%d",z.a[i]);
//system("pause");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式