关于调用函数的一题,我小白,求大神帮帮忙~!

小丫么小菜鸡 2018-11-13 04:50:07
使用函数求余弦函数的近似值(15 分) 本题要求实现一个函数,用下列公式求cos(x)的近似值,精确到最后一项的绝对值小于e:


#include <stdio.h>
#include<math.h>
double funcos(double e,double x);
int main(int argc, char **argv) {
double x;
double e;
scanf("%lf",&e);
scanf("%lf",&x);
double cos;
cos=funcos(e,x);
printf("%lf",cos);
}
double funcos(double e,double x){
int den=0;
int result=1;
double sum=0;
double flag=1;
double t;
int i;

do{
t=flag*pow(x,den)/result;
sum+=t;
den+=2;
for(i=1;i<=den;i++){
result*=i;
}
flag=-flag;
} while(fabs(t)>e);

return sum;
}

----------------------------------------------------------------------------------------
我输入e:0.001 x=3.1415 本来书上的结果为:-1.000004 可是我的结果为:1.933201 实在找不到原因了,求各位大佬帮忙看看,谢谢了!
...全文
58 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2018-11-14
  • 打赏
  • 举报
回复
#include <stdio.h>
#include<math.h>

double funcos(double e,double x);

int main(int argc, char **argv)
{
double x;
double e;
scanf("%lf", &e);
scanf("%lf", &x);
double cos;
cos=funcos(e, x);
printf("%lf\n",cos);

return 0;
}

double funcos(double e,double x)
{
double sum = 0;
double t;
int den = 0, flag = 1;
int result = 1, i;

do {
t = 1.0 * flag * pow(x, den)/result;
sum += t;
den += 2;

result = 1;
for(i = 1; i <= den; i++)
result *= i;
flag = -flag;
} while(fabs(t) < e);

return sum;
}


参考一下吧,
注意每次result的值每次都要复位(赋值1)
英雄@末路 2018-11-14
  • 打赏
  • 举报
回复
这个函数不对吧,这个。。。cos转换成啥式子来这?
636f6c696e 2018-11-14
  • 打赏
  • 举报
回复
书上写的是错的
0 1看天下 2018-11-14
  • 打赏
  • 举报
回复
学他的语法结构就行了 至于算法结果 确实错了

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧