C语言题目:求正弦函数值。

已知求正弦sin(x)的近似值的多项式公式为:sin(x)=x-x3/3!+x5/5!-x7/7!+……+(-1)nx2n+1/(2n+1)!+…编写程序,要求输入x(单... 已知求正弦 sin(x) 的近似值的多项式公式为:

sin(x) = x - x3/3! + x5/5! - x7/7!+ …… + (-1)n x2n+1/(2n+1)! + …

编写程序,要求输入 x (单位是弧度)和ε,按上述公式计算 sin(x) 的近似值,要求计算的误差小于给定的ε。
我的程序设计如下:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int damn(int a,int b)
{for(b=1;a>0;--a)
b*=a;
return(b);}
main()
{
float x,y,z;int n,o;
scanf("%f %f",&x,&z);
y=x;o=2*n+1;
for(n=1;fabs(sin(x)-y)>=z;n++)
y=y+((pow(-1,n))*(pow(x,o))/(damn(n,o)));
int _isnan(double y);
printf("%f\n",y);
system("pause");
}
输入1.57079 0.000001后,输出结果是-1.#IND00,求各位高手帮帮忙呀,谢谢啦。。
发错了,我的程序设计应该是如下的:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int damn(int a,int b)
{for(b=1;a>0;--a)
b*=a;
return(b);}
main()
{
float x,y,z;int n,o;
scanf("%f %f",&x,&z);
y=x;
for(n=1;fabs(sin(x)-y)>=z;n++)
y=y+((pow(-1,n))*(pow(x,2*n+1))/(damn(n,2*n+1)));
printf("%f\n",y);
system("pause");
}
求解,谢谢哈。。。。。
展开
 我来答
zyh1141298056
2012-03-25 · TA获得超过1308个赞
知道小有建树答主
回答量:500
采纳率:100%
帮助的人:598万
展开全部
你要把o=2*n+1放在循环内部。你的程序中o始终是个系统默认的值,而且应该是个很大的负数。
追问
那应如何改正呢?
追答
把o=2*n+1放在循环内部就好了。我把你的求阶乘的函数稍微改动了一下,你的也没错,我只是按照我的习惯来的。
下面是我改过的代码:
#include
#include
#include
int damn(int a)
{
int b = 1;
for(b=1;a>0;--a)
b*=a;
return(b);
}
int main()
{
float x,y,z;int n,o;
scanf("%f %f",&x,&z);
y=x;
for(n=1;fabs(sin(x)-y)>=z;n++)
{
o=2*n+1;
y=y+((pow(-1,n))*(pow(x,o))/(damn(o)));
}
int _isnan(double y);
printf("%f\n",y);
system("pause");
return 0;
}
按照你的输入,结果应该是1
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式