解题思路:
首先通过拆分,可分为以下几步:
1.实现fact()函数 ,完成阶乘
阶乘可以看成1*2*3*..*n, 其中由1到n可以借用循环变量,
再使用一个变量用于存储前一次的乘积,最后该变量所存储的值就是n的阶乘
for(i=1;i<=n;i++)
m=m*i;
2.实现mypow()函数,完成xn次方
xn次方可以看为n个x相乘的结果,即一个循环n次的乘法,
注意此时x累乘后值发生变化,因用一变量存储初始x
t=x;
for(i=1;i<n;i++)
x=x*t;
3.实现奇数项为+,偶数项为-,并求和
该功能易于实现,即奇数项乘以1,偶数项乘以-1,
只需一个变量不断替换为相反数,再累积再变量上即可
sum=0;
for(i=1,t=1;i<=n;i++)
{
sum+=t * mypow( x,n ) / fact( n );
t=-t;
}
注意事项:
1.合理使用数据类型
2.注意格式要求
参考代码:
#include <stdio.h> double Fact(long long n) { long long m=1; for (int i = 2; i <= n; i++) m=m * i; return m; } double MyPow(double x, long long n) { double t = x; for (int i = 1; i < n; i++) x = x * t; return x; } int main(void) { double x; long long n; double sum = 0; scanf("%lf", &x); scanf("%lld", &n); for (int i = 1, t = 1; i <= n; i++, t = -t) sum += t * MyPow(x, i) / Fact(i); printf("%.4lf", sum); return 0; }
0.0分
17 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复