c语言编程计算sin0.5

c语言编程计算sin0.5,第1张

有一个错误,用do循环计算z阶乘时,忘了重新赋值为1。改正后我的测试结果是0479426,之所以这样,是因为double的精度仍然不够。你可以尝试输出中间结果,几次运算之后结果就趋于0。解决的方法是使用大数运算类或参考大学计算方法教材来加以解决

你的factorial是一个函数,好象不可以直接乘以一个整数的吧,还有double

factorial(int

n)是不是需要一个返回值呢。if(n==0)

return

1;只是在n=0的时候有返回值,n!=0就没有了

//用sinx=x-x^3/3!+x^5/5!……+(-1)^(n-1)(x^(2n-1)/(2n-1)!

#include<iostream>

#include<mathh>

using namespace std;

double power(double x,int n)

{

if(n==0)

return 1;

return xpower(x,n-1);

}

long f(int n)

{

if(n==0)

return 1;

else

return nf(n-1);

}

int main()

{

float x,t,sum=0;int i=2;

cin>>x;

t=x;

while(fabs(t)>1e-6)

{

sum+=t;t=-t;

t=(t/fabs(t))power(x,2i-1)/f(2i-1);

i++;

}

cout<<sum<<endl;

return 0;

}

for(j=1;j<=2n-1;j=j+2)

{for(i=1;i<=j;i++)

t=ti;

sinx=pow(x,j)/t;

sinx=sinx+0;}

printf("sinx=%f",sinx);

修改为

for(j=1;j<=2n-1;j=j+2)

{

t=1;//t需要赋值为1,否则每次都是上个循环的值

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

t=ti;

sinx + =pow(x,j)/t; //这个才是累加

}

#include<stdioh>

void main(){

int i,b;

double a,x,s;

scanf("%lf",&x);

a=x;b=1;s=00;

for(i=0;fabs(a/b)>1e-6;){

s= s+a/b;

a=-axx;

i++;

b=b(2i+1)(2i);

}

printf("sinx=%lf",s);

}

#include <stdioh>

#include <mathh>

double PI = 314159265358979;

int main() {

double n = 1,x,sinx = 0,fn,alpha;

printf("x(度) = ");

scanf("%lf",&x);

alpha = x;

x = x  PI/ 180;

    fn = x;

    while(fabs(fn) >= 1E-6) {

sinx += fn;

fn = -fnxx/(2n(2  n + 1));

++n;

    }

printf("sin(%0lf) = %lf\n",alpha,sinx);

    return 0;

}

#include<stdioh>

#include<mathh>

main()

{

float a,b=1;

float i,sinx,x;

scanf("%f",&x);

a=x;

sinx=0;

for(i=1;fabs(a/b)>=1e-6;i++)

{

sinx+=a/b;

a=-axx;

b=b2i(2i+1); }

printf("%f",sinx);

}

我刚回答了一个类似的问题;

>

以上就是关于c语言编程计算sin0.5全部的内容,包括:c语言编程计算sin0.5、用C语言求sinx的值,望高人指点、在C++中如何用循环语句编写求sin函数的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10032102.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存