C语言初学者请教!编程求sinx近似值,已写程序,求改错!

2020-07-03

C语言初学者请教!编程求sinx近似值,已写程序,求改错!


#include/*以下代通过*/
#include
main()
{
floatsum,sinx,x,s;
int i,j;/*j为-1的次方变量*/
printf("Please inter x: \n");
scanf("%f",&x);
i=1;s=1;j=-1;
sum=0;
sinx=sin(x);
printf("%f\n",sinx);
for(i=1;(fabs(sum-sinx))>=0.000001;i=i++)/*你的程这句判断有错,应该是该精度内的sum值执行for内循环语句。*/
{s=s*i;
if(i%2!=0)/*当i为奇数时,才执行,把偶数跳过,但s的值仍变化,这样除以的就是阶乘。*/
{j=-j;/*用j来控制正负号*/
sum+=(double)(pow(x,i)/s)*j;
}
}
printf("sinx=%f\n",sum);

}#include
#include
main()
{
double x,sum=0,sinx;
int i,flag=1,s=1,j;//j-1的次
printf("Please inter x: ");
scanf("%lf",&x);
sinx=(float)sin(x);
for(i=1,j=1;fabs(sum-sinx)>=0.000001;i=i+2)
{
while(j<=i)s*=j++;//求阶
sum+=flag*(pow(x,i)/s);
flag*=-1;//符号
}
printf("sin x=%lf\n",sum);
}没有改出来,只这错
for(i=1;fabs(sum-sinx)<=0.000001;i=i+2)
{ s=s*i;// 这里的s并不是接
sum+=(float)pow(j,i+1)*(pow(x,i)/s);
}
printf("sin x=%f\n",sum);

}For条件错误改为大于精大一点,否则永远为真。你那个变不能实现正,可用J乘负一实现。最后你那阶乘也求错了,最好在加个变量直接不断加一来求阶乘, 手机回答不便写代码,自己好好改下吧,那样效果较好。#include
#include
void main()
{ float x,sinx,sum,s;
int i,j;//j-1量
printf("Please inter x: \n");
scanf("%f",&x);
s=1;j=1;
sum=0;
sinx=(float)sin(x);
for(i=1;fabs(sum-sinx)>=0.000001;i=i+2)
{ s=i==1?1:s*i*(i-1);
sum+=(float)j*(pow(x,i)/s);
j=-j;
}
printf("sinx=%f\n",sum);

}
编程 求sinx近似值
#include
#include
int jiecheng(int x);
void main()
{
int i=1,j=1,x;
double sinx=0,sinx1=1,doubleNum;
scanf("%d",&doubleNum);
scanf("%d",&x);
printf("\n");
for(i=1;fabs(sinx-sinx1)>=doubleNum;i+=2)
{
j++;
sinx1=sinx;
sinx=sinx+pow(-1,j)*pow(x,i)/jiecheng(i);
}
printf("%d\n",sinx);
}

int jiecheng(int x) {
if(x==1 || x==0)
return 1;
else
return jiecheng(x-1)*x;
}追问

谢谢! 不过图片不清 里面要求你没看到

要求输入eps 和x

使误差小于给定的eps追答

doubleNum就是eps,不过我改了一个名字,你没看见?追问

看到了...谢谢!
C语言编程计算sinx的近似值


#include"stdio.h"
intmain(intargc,char*argv[]){
doublex,s,t,eps;
inti;
printf("Pleaseenterx&eps(R:0 if(scanf("%lf%lf",&x,&eps)!=2||eps<=0||eps>=1){
printf("Inputerror,exit... ");
return0;
}
printf("sin(%g)≈",x);
for(s=t=x,x*=x,i=1;t>=eps;i++){
(t*=x)/=((i*i<<2)+i+i);
s+=i&1?-t:t;
}
printf("%f ",s);
return0;
}

运行样例:

本回答被网友采纳#include
#include
void main()
{
long float x,s=0;
int n,i,k,a=1,b;
printf("Input x,n:");
scanf("%lf,%d",&x,&n);
for(i=1;i<=n;i++)
{

a*=2*n-1;
b=pow(-1,i-1);
s=s+b*pow(x,2*i-1)/(double)a;
a*=2*n;
}
printf("sinx=%lf\n",s);
}
c语言编程求sinx的近似值(泰勒展开)?
您好这样的:泰勒展开是这个:sinx=x-x^3/3!+x^5/5!-..
下面给出算20项的程序。

#include"math.h"
#include"stdio.h"
void main()
{
double x=0,y=0,z=1,s=1,mynum=0;
int i=1 ,j=0, k=1;
scanf("x=%f",&x);

for(i=1;i<20;i++)

z=1;k=1;
for(j=1;j<=2*i-1;j++)
{
z=x*z;//算j
k=k*j;//算阶乘}
s=-j*pow(-1,i);//pow(a,b)是a的b次方
z=z*s/k;

mymun=mynum+z;
}
printf("sinx=x-x^3/3!+x^5/5!-..");
printf("sinx=%f",mynum);
getch();
}