永发信息网

这个那错了?利用级数和计算Y=x/1-x^3/3!+x^5/5!-x^7/7!+x^9/9!+..........+(-1)^(n-1)*x^(2n-1)

答案:1  悬赏:20  手机版
解决时间 2021-01-16 04:34
  • 提问者网友:饥饿走向夜
  • 2021-01-15 16:52
这个那错了?利用级数和计算Y=x/1-x^3/3!+x^5/5!-x^7/7!+x^9/9!+..........+(-1)^(n-1)*x^(2n-1)/(2n-1)!
最佳答案
  • 五星知识达人网友:夜余生
  • 2021-01-15 17:49
y=y+(-1.)*t/s; 错了,应改为:

y=y+(-1)^((i-1)/2)*t/s

你忘记了符号的变化,(-1)^(n-1)追问哥哥,为什么我用while(scanf("%d%d",&n,&x)==1)是错的,
用scanf("%d%f",&n,&x);是对的啊追答这涉及到浮点数运算,它需要用浮点数寄存器的,x是float,它是浮点数,所以必须用%f, 而%d并不会去初始化并将输入值放入浮点数寄存器。所以一般使用时只要记住格式符必须与变量类型相对应。 如果有用请不要忘记采纳一下。:)追问这个为什么输入一个是对的,输入2个以上就错了
#include
int main()
{
int n,i,j;
float x,y,t=1.,s=1.;
while (scanf("%d %f",&n,&x)==2)
{ y=x/1;
t=t*x;
for (i=3;i<=2*n-1;i=i+2)
{t=t*x*x;
s=i*(i-1)*s;
t=-t;
y=y+t/s;
}
printf("%.3f\n",y);
}
}追答这个为什么输入一个是对的,输入2个以上就错了 ??

具体是什么意思?追问输入一组数据后结果是对的,在重新输入这组数据后就错了追答因为t,s的值在第一次运算后变化了。初值不一样了。
解决方法:

while (scanf("%d %f",&n,&x)==2)
{
t=1, s=1;
y=x/1;
...
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯