赞
踩
本关任务:编写求阶乘函数fact()
,利用它计算并返回1!+2!+3!+……+n!
的值。
对于求整数的阶乘fact()
函数,考虑到阶乘的值有可能会超出int
型数据的表示范围,可将函数的返回值类型定义成double
类型,其函数头部设计为double fact(int x)
。
为了完成本关任务,你需要掌握函数的嵌套调用。
在 C 语言中,函数的定义不允许嵌套。也就是说在定义函数时,在一个函数定义内(即函数体里),不能再出现另一个函数的定义,以形成函数的嵌套定义。但是,函数的调用可以嵌套,即主调函数在调用被调函数的过程中,这个被调函数又去调用其他函数,从而形成函数的嵌套调用。示意图如下所示:
根据提示,在右侧编辑器 Begin-End 区间补充代码,分别完成函数fact()
和函数main()
实现指定功能,具体要求如下:
fact()
实现计算并返回1*2*3*……*n
的值;fun()
实现计算并返回1!+2!+3!+……+n!
的值;main()
从后台获取整数n
,调用函数fun()
,输出结果并保留 0 位小数。平台会对你编写的代码进行测试:
测试输入: 10
预期输出: sum=4037913
开始你的任务吧,祝你成功!
- #include <stdio.h>
- #include <stdlib.h>
- int Factor(int n) //计算1-n的阶乘
- {
- int result = 1; //从1开始
- for (int i = 1; i <= n; i += 1)
- {
- result *=i; //阶乘公式
- }
- return result; //返回结果
- }
- int Factorsum(int n) //计算所有阶乘的和
- {
- int sum = 0; //定义和为0
- for (int i = 0; i <= n; i += 1)
- {
- sum += Factor(i); //从第一个数开始循环,每次加一个数
- }
- return sum; //返回和
- }
- int main()
- {
- int n;
- scanf("%d",&n);
- int result = Factorsum(n); //n
- {
- printf("sum=%d", result-1); //输出
- }
- system("pause");
- return 0;
- }
`,_+=1})),x=t}let U=l,A=l;l<0?(a=0,i<=o&&(a=s.div(s.sub(i,d),2))):0==l?i<=o&&(a=s.div(s.sub(i,d),2)):(t=s.add(4,36),t=s.add(s.add(d,t),s.add(s.mul(_,38),36)),l>S.sub(i,T)&&(A=S.sub(i,T)));let O="",L=t?s.runtime.getURL("img/video-default.png"):"https://res.stayfork.app/scripts/BB8CD00276006365956C32A6556696AD/icon.png",D='
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。