用C语言编写程序从键盘输入一个正整数数n,输出n!

 我来答
supboy306
推荐于2019-10-18 · TA获得超过2.6万个赞
知道答主
回答量:243
采纳率:100%
帮助的人:13.1万
展开全部

编程实现计算n!,也就是n*(n-1)*(n-2)*....*1,可以通过递归函数来实现,具体实现方法:

#include <stdio.h>

int Func(int n)
{
if(n < 2)

return 1;

else

return n*Func(n-1);

}

void main()
{
int n =0,m=0;

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

scanf("%d",&n);  

m=Func(n);

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

在以上程序代码中,Func()为递归函数,主函数main()中接收键盘输入整数值后,调用Func()递归函数,首层m=n*(n-1)!,继续递归调用,m=n*(n-1)(n-2)!,这样逐层递归,直到计算出N!。

程序输出结果如下:

扩展资料:

所谓n的阶乘就是从1到n的乘积,所以除了递归法来实现以外,其实我们也可以通过一个for循环,从1到n依次求积同样可以达到计算n!的目地。

具体实现代码如下:

#include <stdio.h>

int main() {
int n,i,s=1;
scanf("%d",&n);

for(i=1;i<=n;i++)//for循环求累积

s=s*i;

printf("%d\n",s);

return 0;

}


/*
运行结果:(例如求5的阶乘)
5
120
*/

跪着作揖
高粉答主

推荐于2019-08-27 · 繁杂信息太多,你要学会辨别
知道答主
回答量:598
采纳率:100%
帮助的人:16.8万
展开全部

#include <stdio.h>        //定义头文件

int main(  )                   //声明主函数

{

int n,i=1,j=1;          //设定数据类型

printf("input n: ");      //输入一个正整数

scanf("%d", &n);       //输入

while (i<=n)              //小于n

{

j=j*i;             //求阶乘

i++;             //累加

}

printf("%d!=%d\n",n,j);         //输出j

return 0;                        //返回主函数值

}

扩展资料

其他方法得到n的阶乘:

#include <stdio.h>

int prime(int x);

void main(  )

{

int m,n;

printf("Please input numbers: ");

scanf("%d",&m);

n=prime(m);

printf("%d! 的阶乘是: %d\n", m,n);

}

int prime(int x)

{

int s;

if(x>0)

{

s=prime(x-1)*x;

}

else{

return 1;

}

return s;

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
推荐于2017-11-25
展开全部
源程序如下:
#include <stdio.h>//定义头文件
int main()//声明主函数
{
int n,i=1,jc=1;//设定数据类型
printf("input n: ");//输入一个正整数
scanf("%d", &n);//输入
while (i<=n)//小于n
{
jc=jc*i;//求阶层
i++;//累加
}
printf("%d!=%d\n",n,jc);//输出jc
return 0;//返回主函数值
}
VC++测试如下:
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-03-05
展开全部
#include <stdio.h>
int main()
{
int input = 0;
int result = 1;
printf("请输入整数n:“);
scanf("%d", &input);
if (input < 2)
result = 1;
else
{
for (int i=2; i<=input; ++i)
result *= i;
}
printf("%d的阶乘 = %d\n", input, result);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-03-05
展开全部
晚上好楼主,我已经编译通过请看图 谢谢采纳!
#include <stdio.h>
int Cacu(int n)
{
int i,sum=1;
for(i=1;i<=n;i++)
sum=sum*i;
return sum;
}
void main()
{
int n,result;
printf("please input a number for you to operate\n");
scanf("%d",&n);
result=Cacu(n);
printf("the result you want to get is:\n");
printf("%d\n",result);
}

图:
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式