题目所说的“当取8位小数时,结果约为1.86602621”有误。经用WINDOWS计算器验证,程序的计算是正确的。输出的第一行是验证用的,可以删除。
#include
#include
double mycos(double x)
{double y=1,t=1,p;
p=3.14159265358979*2;
if(x<0)x=-x;
while(x>p)x-=p;
x*=x;
for(int i=1;t>1e-6;i+=2)
{t*=x/(i*(i+1));
y+=i%4==1?-t:t;
}
return y;
}
int main()
{double y;
printf("cos0=%.8lf cos(Pi)=%.8lf cos300=%.8lf cos600=%.8lf\n",mycos(0),mycos(3.1415926),mycos(300),mycos(600));
//上面一行printf(...);应当删除
y=mycos(300)+mycos(600); //弧度为单位
printf("%.8lf\n",y*y);
return 0;
}
#include
#define PI 3.14159265
double MYCos(double x){ //以弧度为单位
int i,k=1;
double sum=1,an=1;
x=x-((int)(x/2/PI))*2*PI;
for(i=2;an>=1e-6;i+=2){
k=-k;
an=an*x*x/i/(i-1);
sum+=an*k;
}
return sum;
}
double MYCosd(double x){ //以角度为单位
return MYCos(x*PI/180);
}
int main()
{
printf("cos(%d角度)=%f\n",60,MYCosd(60));
printf("cos(%d角度)=%f\n",30,MYCosd(30));
printf("%10.8f\n",(MYCosd(30)+MYCosd(60))*(MYCosd(30)+MYCosd(60)));
}