标题:求大神帮忙!我做了很久还是做不出来……
只看楼主
limited
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2013-3-26
结帖率:66.67%
已结贴  问题点数:20 回复次数:2 
求大神帮忙!我做了很久还是做不出来……
程序填空,不要改变与输入输出有关的语句。
输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:
输入精度 e 和 x,用下列公式求cos(x)的近似值,精确到最后一项的绝对值小于e。
cos(x) = x^0/0!-x^2/2!+x^4/4!-x^6/6!+……
要求定义并调用函数 funcos(e,x)计算 cos(x) 的值,函数形参e和x的类型均为double,函数类型是double。
输入输出示例:括号内是说明
输入:
2            (repeat=2)
0.001  0      (e=0.001, x=0)
0.0001 -3.14    (e=0.0001, x=-3.14)
输出:
sum = 1.000000
sum = -0.999999



这个我编的程序 很有问题 因为新手  所以不懂 求解答!!
#include "stdio.h"
#include "math.h"
double funcos(double e, double x);
int main(void)
{
    int repeat, ri;
    double e, sum, x;

    scanf("%d", &repeat);
    for(ri = 1; ri <= repeat; ri++){
        scanf("%le%le", &e, &x);
        sum=funcos(e,x);
/*---------*/
        printf("sum = %f\n", sum);
    }
return 0;
}

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


int fact(int i)
{
    int sum,m;
    if(i==1)sum=1;
    else
        sum=1;
        for(m=1;m<=i;m++){
            sum=sum*m;
        }

    return sum;
}
搜索更多相关主题的帖子: double repeat 绝对值 
2013-04-17 23:44
Juson
Rank: 4
等 级:业余侠客
帖 子:70
专家分:235
注 册:2013-4-8
得分:10 
double fact(int i)          //变成double型函数,此时funcos函数中的声明要随之改变
{
    double  sum ;          //阶乘的增长趋势很快,int 型表示的数据范围有限,很容易越界, 用double 更保险
    int m;
    if(i <= 1)    //还有i=0这种情况的
         sum=1;
    else
    {              //加括号
        sum=1;
        for(m=1;m<=i;m++){
            sum=sum*m;
        }
    }
  return sum;
}


[ 本帖最后由 Juson 于 2013-4-18 00:46 编辑 ]
2013-04-18 00:07
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2391
专家分:13384
注 册:2013-3-3
得分:10 
要求定义并调用函数 funcos(e,x)计算 cos(x) 的值,函数形参e和x的类型均为double,函数类型是double。
 item=1.0;
    while(fabs(item)>=e)
因为所有数据都是double类型的,所以需要  double fact(int i);,这样就好了

[ 本帖最后由 邓士林 于 2013-4-20 14:50 编辑 ]

Maybe
2013-04-18 07:39



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-404628-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.158990 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved