|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
求幂级数展开的部分和
已知函数e的x次方可以展开为幂级数1+x+x ​2 ​​/2!+x ​3 ​​/3!+⋯+x ​k ​​/k!+⋯。现给定一个实数x,要求利用此幂级数部分和求e的x次方的近似值,求和一直继续到最后一项的绝对值小于0.00001。
输入格式: 输入在一行中给出一个实数x∈[0,5]。
输出格式: 在一行中输出满足条件的幂级数部分和,保留小数点后四位。
输入样例:
1.2
输出样例:
3.3201
- #include <stdio.h>
- #include "math.h"
- #define N 10
- int main()
- {
- int i=0,k=1,j;
- double s=1,s1=1.0,item=1,x;
- double a[N]={0};
- double eps=0.00001;
- scanf("%lf",&x);
- if(x>=0&&x<=5){
- for(i=1;i<=9;i++){
- a[i]=pow(x,i);
- }
- while(fabs(item)>eps){
- for(j=1;j<=k;j++){
- s1=s1*j;
- }
- item=a[k]/s1;
- s=s+item;
- k++;
- s1=1.0;
- }
- printf("%.4lf",s);
- }
- return 0;
- }
复制代码
结果貌似没有问题,但是有一个测试点一直不通过,求大佬给看看哪里有问题?是while的执行条件控制有问题还是理解什么的有问题?QAQ
你的N设置小了。因为k超过了9.导致while语句里面a[k]溢出了。将N修改成20,并将for(i=1;i<=9;i++){ 修改成for(i=1;i<N;i++){。程序可以稳定运行,测试通过
|
|