利用公式:
计算sinx的值,直到最后一项的绝对值小于10^-5时为止。要求在计算的过程中统计出参与累加的项数。
输入格式:
从键盘输入x的值。
输出格式:
按输出样例的形式输出sinx的值和累加的项数,其中sinx的值保留两位小数。
输入样例:
1.57
输出样例:
sin(x)=1.00
count=6
这道题目还是很简单的。话不多说,反手上代码。
注意:
1.求阶乘的函数类型采用double型,如果你做题多的话,就会知道有一些求阶乘的题目测试样例会有很大的数据,如果采用int 型 会导致数据溢出。为了避免这种问题,在求阶乘函数我建议一律使用double型。
2.注意题目中要求的是 先判断再加,还是 先加在判断,这会导致最后的结果不同。
#include<stdio.h>
#include<math.h>
double jie(double l);
int main()
{
double x,y,z=0;
scanf("%lf",&x);
double y1,y2,i1=1,i2=0;
do
{
y1=pow(x,i1);
y2=jie(i1);
y=y1/y2*pow(-1,i2);
z+=y;
i1+=2;
i2++;
}while(fabs(y)>=0.00001);
printf("sin(x)=%.2f\ncount=%.0f",z,i2);
}
double jie(double l)//函数用来求阶乘,阶乘函数采用double类型。
{
int i;
for(i=l;i>=1;i--)
{
if(i==l)continue;
l=l*i;
}
return l;
}