题目所说的“当取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;
}