c语言 求1!+2!+3!+...+n!的值.n由键盘输入

 我来答
帐号已注销
2020-11-12 · TA获得超过77.1万个赞
知道小有建树答主
回答量:4168
采纳率:93%
帮助的人:166万
展开全部

n的值不能超过13,否则会因为数据溢出而导致结果错误。

#include <stdio.h>

int main()

{

long i,n,m,sum=0

scanf("%d",&n);

for(i=m=1;i<=n;i++);

{

m*=i;

sum+=m;

}

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

return 0;

}

例如:

#include <stdio.h>

/* 通过递归计算一个数的回阶乘 */

int factorial(int num)

{

if (num==1)

return 1;

else

return (num * factorial(num - 1));

}

int main()

{

int i,n;

long sum = 1;

scanf("%d",&n);

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

sum += factorial(i);

printf("%ld\n",sum);

return 0;

}

扩展资料:

由于正整数的阶乘是一种连乘运算,而0与任何实数相乘的结果都是0。所以用正整数阶乘的定义是无法推广或推导出0!=1的。即在连乘意义下无法解释“0!=1”。

通常我们所说的阶乘是定义在自然数范围里的(大多科学计算器只能计算 0~69 的阶乘),小数科学计算器没有阶乘功能,如 0.5!,0.65!,0.777!都是错误的。但是,有时候会将Gamma 函数定义为非整数的阶乘,因为当 x 是正整数 n 的时候,Gamma 函数的值是 n-1 的阶乘。

参考资料来源:百度百科-阶乘

记忆光年2009
推荐于2018-05-05 · TA获得超过4671个赞
知道小有建树答主
回答量:1178
采纳率:25%
帮助的人:1350万
展开全部
#include<stdio.h>
void main()
{int i,n;
int m=1;
int sum=0;
printf("请输入n的值:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
m=m*i;
sum=sum+m;
}
printf("1!+2!+3!+...+n!的值=%d\n",sum);
}
运行过了 没什么错误了
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
p_roust
2010-11-09 · TA获得超过349个赞
知道答主
回答量:203
采纳率:0%
帮助的人:231万
展开全部

我刚在做这道题呢,你可以看看这个例题,稍微改一下就行了:

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
记忆光年2009
2017-12-28 · TA获得超过4671个赞
知道小有建树答主
回答量:1178
采纳率:25%
帮助的人:1350万
展开全部
#include<stdio.h>
void main()
{int i,n;
int m=1;
int sum=0;
printf("请输入n的值:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
m=m*i;
sum=sum+m;
}
printf("1!+2!+3!+...+n!的值=%d\n",sum);
}
运行过了 没什么错误了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
炎狼先生
2010-11-09 · TA获得超过102个赞
知道答主
回答量:146
采纳率:0%
帮助的人:0
展开全部
#include <stdio.h>
int func(int n)
{
int num = 0;
if (n > 1)
num = n * func(n-1);
else if (n == 1)
num += 1;
return num;
}
int main()
{
int n, i, sum = 0;;
printf("pelase enter n :\n");
scanf("%d", &n);
for (i = 1; i <= n; ++i)
sum += func(i);
printf("1! + 2! + 3! +...+ %d! = %d\n", n, sum);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(11)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式