12.2

来源:互联网 发布:淘宝返现网哪个好 编辑:程序博客网 时间:2024/04/27 11:57
/**Corpyright (c)2013,烟台大学计算机学院*All right reseved.*作   者 :曹昕卓*完成日期:2013年12月3日*版 本 号:v1.0*输入描述:*问题描述:乘法口诀*程序输出:*问题分析:*算法设计:*/#include <iostream>using namespace std;const double pi=3.1415926;double mysin(double);double mycos(double);double myabs(double);   //程序中需要求精度的绝对值,也用自定义函数完成吧int main( ){cout<<"sin(π/2)的值为"<<mysin(pi/2)<<endl;cout<<"sin(56°)的值为"<<mysin((56.0/180)*pi)<<endl;cout<<"cos(87°)的值为"<<mycos((87.0/180)*pi)<<endl;cout<<"cos(π/3)的值为"<<mycos(pi/3)<<endl;return 0;}double mysin(double x){double sum=x,x_pow=x,item;int n=1,fact=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;}//下面定义mycos函数double mycos(double x){double sum=1,x_pow=1,item;int n=0,fact=1,sign=-1;do{fact=fact*(n+1)*(n+2);x_pow*=x*x;item =x_pow/fact*sign;sum+=item;sign=-sign;n+=2;}while(myabs(item)>0.00001);return sum;}//下面定义myabs函数double myabs(double x){return ((x>=0)?x:-x);}


 

成果展示:
原创粉丝点击