#include<stdio.h>
#include<math.h>
#define ACCURARY 0.00000001
main()
{
int i=1,j=1,k,n=1,x
printf("sinx=x-x^3/3!+x^5/5-x^7/7!...\n请输入一个x\n")
scanf("%d",&x)
double sinx=0
for(i=1fabs(t)>=ACCURARYi+=2)
{
for(k=1k<=ik++)
{n=n*i}
j++
t=pow(-1,j)*pow(x,i)/n
sinx=sinx+t
}
printf("sin%d=%.8f\n",x,sinx)
}
你编译一下,看看行不,我好久没弄了。
#include "stdio.h"int main(int argc,char *argv[]){
double x,s,t,eps
int i
printf("Please enter x & eps(R:0<eps<1)...\n")
if(scanf("%lf%lf",&x,&eps)!=2 || eps<=0 || eps>=1){
printf("Input error, exit...\n")
return 0
}
printf("sin(%g)≈",x)
for(s=t=x,x*=x,i=1t>=epsi++){
(t*=x)/=((i*i<<2)+i+i)
s += i&1 ? -t : t
}
printf("%f\n",s)
return 0
}
运行样例:
修改及测试代码如下:#include <stdio.h>
#include <math.h>
double fact(n)
//数据类型使用有误
{
int x
double y
y=1
for(x=1x<=nx++){
y=y*x
}
return y
}
int main()
{//思路有些乱
double i,sum,x
int n=1,flag=1
scanf("%lf",&x)
i=x//第一项
sum=0
while(fabs(i)>=0.000001) //少了一个0
{
sum+=i
flag=-flag
n=n+2
i=(flag*pow(x,n)/fact(n))
}
printf("%.10f\n",sin(x))
printf("sin<%f>=%.10f",x,sum)
return 0
}