解题思路:
首先通过拆分,可分为以下几步:
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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
#include <stdio.h> #include <math.h>> double fact(double n) { int i; double j=1; for(i=1;i<=n;i++) { j=i*j; } return j; } double mypow(double x,int n) { int i; double m,fac; for(i=1;i<=n;i++) { fac=fact(n); m=(pow((-1),i-1)*pow(x,i))/fac+m; } return m; } int main () { int n; double x,w; scanf("%lf %d",&x,&n); w=mypow(x,n); printf("%.4lf",w); } 输出1.000问题在哪求解#include <stdio.h> #include <math.h> int fact(int n) { int i; double p=1; for(i=1;i<=n;i++) p=(double)p*i; return p; } int mypow(int x,int n) { double y=1; int i; for(i=0;i<n;i++) y=(double)y*x; return y; } int main() { double x,r=0,t=0,sum=0; int n,i,q=1; scanf("%lf%d",&x,&n); for(i=1;i<=n;i++) { q=1; if(i%2==0) { q=-1; } r=fact(i); t=mypow(x,i); sum=(double)sum+q*t/r; } printf("%.4lf",sum); } 这个哪里有问题呢??大佬们拜托拜托!!