求高手解答C语言编程题~~~

编程按下列的级数求cos(x)的值并输出:cos(x)=1-x²/2!+x4/4!-x6/6!+……要求:X的值由键盘输入(代表弧度),运算精度保持到最后一项的... 编程按下列的级数求cos(x)的值并输出:
cos(x)=1-x²/2!+x4/4!-x6/6!+……
要求:X的值由键盘输入(代表弧度),运算精度保持到最后一项的绝对值小于10的-6此方为止。注明(X4是x的4次方,X6是X的6次方)

求高手~
展开
 我来答
dexahh
2011-05-27 · TA获得超过354个赞
知道答主
回答量:216
采纳率:100%
帮助的人:285万
展开全部
#include<stdio.h>
double get_cos(double x);
double fun(double x,int n);
void main()
{
//cos(x)=1-x2/2!+x4/4!-x6/6!+……
// 要求:X的值由键盘输入(代表弧度),
//运算精度保持到最后一项的绝对值小于10的-6此方为止。
//注明(X4是x的4次方,X6是X的6次方)
printf("%lf\n",get_cos(1.57));

}

double get_cos(double x)
{
double val;
double rtn = 1;
int n = 2;
while (1)
{
val = fun(x,n);
if(n%2)
{
rtn += val;
}
else
{
rtn -= val;
}
n++;
if (val < 10e-6)
{
break;
}
}
return rtn;
}

double fun(double x,int n)
{
long val = 1;
for(int i = 1; i < n; ++i)
{
x *=x;
val*=i;
}
return (x/val);
}

按你提供的思路写的,没测过。。。
追问
有问题啊。。都没有键入的,直接一个乱码的结果
追答
#include
#include "math.h"
long double get_cos(long double x);
long double fun(long double x,int n);
void main()
{
//cos(x)=1-x2/2!+x4/4!-x6/6!+……
// 要求:X的值由键盘输入(代表弧度),
//运算精度保持到最后一项的绝对值小于10的-6此方为止。
//注明(X4是x的4次方,X6是X的6次方)
printf("%lf\n",get_cos(3.1415926));
printf("%lf\n",cos(3.1415926));

}

long double get_cos(long double x)
{
long double val;
long double rtn = 1;
int n = 2;
while (1)
{
val = fun(x,n);
if(n%4)
{
rtn -= val;
}
else
{
rtn += val;
}
if (val = 1; i--)
{
val*= (x/i);
}
return (val);
}
随手写的,没考虑到精度方面的问题,改过了~你试试。
WebNotify
2011-05-27 · TA获得超过104个赞
知道小有建树答主
回答量:102
采纳率:0%
帮助的人:40.7万
展开全部
通过了大量的测试,希望能对你有所帮助!
#include <stdio.h>
#include <math.h>
#define PI 3.1415926
#define EPS 1e-6

double get_cos(double x)
{
int i = 0;
int j = 0;
int flag = 1;
double result = 1.0;
double temp = 0.0;
double t_r = 1.0;

while ( i += 2 )
{
temp = 1.0;
flag = -flag;

for (j=1; j<=i; j++)
temp *= x/j;
t_r += flag * temp;

if (fabs(result-t_r)<EPS)
break;
result = t_r;
}
return result;
}

int main()
{
int n = 3;
double x = PI/n;
printf("cos(PI/%d) = %lf\n", n, get_cos(x));
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-05-27
展开全部
#include<math.h>
#include<stdio.h>
main()
{
int n=2,count=1,sign=-1;
float x;
double sum ,term;
printf("input x:");
scanf("%f",&x);
sum=1;
term=1;
do
{
term=-term*x*x/(n*(n-1));
sum+=term;
n=n+2;
count++;
}
while (fabs(term)>=1e-6);
printf("cos(x)=%f,count=%d\n",sum,count);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式