【问题描述】 输入精度e和实数x,用下列公式求cos x的近似值,精确到最后一项的绝对值小于e。

【问题描述】输入精度e和实数x,用下列公式求cosx的近似值,精确到最后一项的绝对值小于e。要求定义和调用函数funcos(e,x)求余弦函数的近似值... 【问题描述】
输入精度e和实数x,用下列公式求cos x的近似值,精确到最后一项的绝对值小于e。要求定义和调用函数funcos(e,x)求余弦函数的近似值。

【输入形式】
输入两个浮点数:精度e和实数x
【输入输出样例1】(下划线部分表示输入)
e:0.001
x:1
cos(x)=0.540
【样例说明】
输入提示符后要加一个空格。例如“e:”,其中“:”后要加一个且只能一个空格。
输出语句的“=”两边无空格
计算结果保留3位小数
英文字母区分大小写。必须严格按样例输入输出。

#include<stdio.h>
#include<math.h>
int main(void)
{
double x, e,cosx;
double funcos(double e,int x);
printf("e: ");
scanf("%lf",&e);
printf("x: ");
scanf("%d",&x);
cosx=funcos(e,x);
printf("cos(x)=%.3f\n",cosx);
return 0;
}
double funcos(double e,int x)
{
int flag,a,item,i;
double sum;
double fact(int n);
item=0;
flag=1;
a=0;
i=0;
sum=0;
while(fabs(item)>=e){
item=(flag*pow(x,a))/fact(i);
sum=sum+item;
flag=-flag;
a=a+2;
i=i+2;
}
return sum;
}
double fact(int n)
{
int i;
double result;
result=1;
for(i=1;i<=n;i++){
result=result*i;
}
return result;
}

不知道是哪里出错了 输出都是0.000!!!!
展开
 我来答
IT孤鹜
推荐于2016-12-01 · TA获得超过4198个赞
知道大有可为答主
回答量:3960
采纳率:71%
帮助的人:3977万
展开全部

#include<stdio.h>

#include<math.h>

int main(void)

{

 double x, e,cosx;

  double funcos(double e,int x);

   printf("e: ");

   scanf("%lf",&e);

   printf("x: ");

   scanf("%lf",&x);  //这里是%lf

   cosx=funcos(e,x);

   printf("cos(x)=%.3f\n",cosx);

   return 0;

  }

  double funcos(double e,int x)

  {

   int flag,a,i;

   double sum,item;

   double fact(int n);

    item=1;  //这个初始化要大于e,否则不执行下面

    flag=1;

    a=0;

    i=0;

    sum=0;

    while(fabs(item)>=e){

    item=(flag*pow(x,a))/fact(i);

    sum=sum+item;

    flag=-flag;

    a=a+2;

    i=i+2;

    }

    return sum;

   }

    double fact(int n)

    {

     int i;

     double result;

      result=1;

      for(i=1;i<=n;i++){

       result=result*i;

      }

       return result;

      }

来自飞英塔谈笑风生的波斯猫
2013-04-28 · TA获得超过1.2万个赞
知道大有可为答主
回答量:1.1万
采纳率:0%
帮助的人:6459万
展开全部
随便写写试试

double funcos(double e, double x)
{
double b, d, n, r, i;
e = fabs(e), x *= x;

r = b = 0, d = n = 1;
while( fabs(i = d / n) > e ) {
r += i;
d *= x, n *= - b * (b+1);
b += 2;
}
return r;
}
希望采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cqdjyy01234
2013-04-28 · TA获得超过1147个赞
知道小有建树答主
回答量:267
采纳率:50%
帮助的人:328万
展开全部
更更改之后的代码,注释部分为你原来的。
#include<stdio.h>
#include<math.h>
int main(void){
double x, e,cosx;
double funcos(double e,/*int*/double x);
printf("e: ");
scanf("%lf",&e);
printf("x: ");
// scanf("%d",&x);
scanf("%lf",&x);
cosx=funcos(e,x);
// printf("cos(x)=%.3f\n",cosx);
printf("cos(x)=%.3lf\n",cosx);
return 0;
}

double funcos(double e,/*int*/ double x){
int flag,a/*,item*/,i;
double sum, item;
double fact(int n);
item=0;
flag=1;
a=0;
i=0;
sum=0;
// while(fabs(item)>=e){
while(true){
item=(flag*pow(x,a))/fact(i);
if(fabs(item) < e) break;
sum=sum+item;
flag=-flag;
a=a+2;
i=i+2;
}
return sum;
}

double fact(int n){
int i;
double result;
result=1;
for(i=1;i<=n;i++){
result=result*i;
}
return result;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式