提高篇第2-5课第七题

来源:互联网 发布:云计算平台性能指标 编辑:程序博客网 时间:2024/05/01 20:53
#include <stdio.h>#include <stdlib.h>#include <math.h>#define pi 3.1415926//第七题double mysin(double x);double myabs(double x);int main( ){    printf("sin(π/2)的值为%.5f\n", mysin(pi/2));    printf("sin(56°)的值为%.5f\n", mysin(56*pi/180));    return 0;}//下面定义mysin函数,求sin值double mysin(double x){    int i=3,n=-1;    double t=x;    double sin=x;    double fact=1;    printf("%lf\n",sin);    while(myabs(t)>=1e-5)    {        fact*=i*(i-1);        t*=(n*x*x)/fact;        sin+=t;        i+=2;        n=-n;    }    return sin;}//下面定义myabs函数double myabs(double x){    double r;    if(x>=0)        r=x;    else        r=-x;    return r;}

上述代码存在着错误,编写的时候有点恍惚了,没有仔细调试,下面给出老师给出的标准代码

#include<stdio.h>#define pi 3.1415926double mysin(double x);double myabs(double x);int main( ){    printf("sin(π/2)的值为%.5f\n", mysin(pi/2));    printf("sin(56°)的值为%.5f\n", mysin((56.0/180)*pi));    return 0;}//下面定义mysin函数,求sin值double mysin(double x){    double sum=x,x_pow=x,item,fact=1;    int n=1,sign=1;     //定义变量时赋初值,已经将第一项考虑到累加和sum中    do    {        fact=fact*(n+1)*(n+2);  //fact用于表示阶乘,在公式中作分母        x_pow*=x*x;             //x_pow是分子中用于表示阶乘,在公式中作分母        sign=-sign;             //确定即将要累加的这一项的符号        item =x_pow/fact*sign; //计算出要累加的项        sum+=item;              //将该项累加上去        n+=2;    }while(myabs(item)>1e-5);    return sum;}//下面定义myabs函数double myabs(double x){    return ((x>=0)?x:-x);}


0 0