原题链接:二级C语言-阶乘公式求值
解题思路:首先定义函数fact(k);计算数的阶乘,然后在主函数调用,用for循环计算数的阶乘分之一的和
注意事项:定义函数时要注意sum,sum1要初始化,还有要注意sum的返回值类型,以及参与到运算过程中的参数的数据类型。
参考代码:
#include<stdio.h>
double fact(int k)//先定义函数,免得声明
{
double sum=1;
int i;
for(i=1;i<=k;i++)
{
sum=sum*i;
}
return sum;//直接返回sum的值
}
int main()
{
int n,i;
double sum1=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum1=sum1+1/fact(i);//各阶乘的倒数分之一的和
}
printf("sum=%.5lf",sum1);
return 0;
}
0.0分
6 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
#include<stdio.h> double fact(int k) { int i; double sum1=1; for(i=1;i<=k;i++) { sum1*=i; } return sum1; } int main() { printf("**************************\n"); printf("dotcpp.com\n"); printf("**************************\n"); int i,n; scanf("%d",&n); double sum=1; for(i=2;i<=n;i++) { sum=sum+1/fact(i); } printf("%.5lf",sum); return 0; }#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main() { double fact(int n); int n; double x; scanf("%d", &n); x=fact(n); printf("sum=%.5lf",x); return 0; } double fact(int n) { int jc(int x); double sum=0; int y; for (int i = 1; i <= n; i++) { y = jc(i); sum += 1.0 / y; } return sum; } int jc(int x) { int m = 1; for (int i = 1; i <= x; i++) { m *= i; } return m; } 为什么只有50分???????????????#include <stdio.h> #include <stdlib.h> double fac(int a) { int c=1; double sum=0; for(int i=1;i<=a;i++) { c*=i; sum=sum+1.0/c; } return sum; } int main() { int n; double y; scanf("%d",&n); y=fac(n); printf("sum=%.5lf",y); return 0; } 我就想问直接这样怎么就不行了?double fact(int i) { double sum = 1; for (int j = 1;j <= i;i++) { sum = sum * j; } return sum; } int main() { int a; double sum = 0; scanf_s("%d", &a); for (int i = 1;i <= a;i++) { sum = sum + 1 / fact(i); } printf("sum=%.5lf", sum); return 0; } 大佬为什么我这个在vs运行输入以后就什么都没有了@加藤惠 printf("sum=%.5lf ",sum); //注意输出格式#include<stdio.h> double fact(int k) { int i; double a=1; for(i=1;i<=k;i++) { a=a*i; } return a; } int main() { int n,i; scanf("%d",&n); double sum=0; for(i=1;i<=n;i++) { sum+=1/fact(i); } printf("%.5lf\n",sum); return 0; } 搞不懂哪里错?大佬帮忙看看