我是编程新手,我无法弄清楚我的代码出了什么问题。如果有人可以通过任何方式帮助我了解我的程序出了什么问题,我将非常感激。我已经研究这个问题两个小时了,我知道我让它变得比需要的更加困难。这是我的新代码。我的新输出是 0.000000476837158。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main() {
double x, sinx, z, factorial, term;
int j, n, i;
x=0.5;
n=10;
i=0;
z=sin(0.5);
for(int i=0; i<=n; i++){
factorial = 1;
for(j=2*i +1; j<=i; j++)
{
factorial = factorial * j;
}
term=(pow(-1,i)*pow(x,2*i+1))/(factorial);
sinx=term++;
i=i++;
}
printf("sin(0.5) is approximately %.15lf\n", sinx);
printf("sin(0.5) by default function is %.15lf\n", z);
system("pause");
return 0;
}
最佳答案
这个循环没有意义。
for(j=0; j<=i; j++){
factorial=2*j+1;
}
它没有做任何不同的事情
factorial = 2*i+1;
如果您想计算阶乘(例如 i!
),那么我会执行以下操作
// initialize `factorial`
factorial = 1;
for(j=1; j<=i; j++)
{
//multiply `factorial` by `j`.
factorial = factorial * j;
}
<小时/>
您继续使用sinx
和term
,但它们从未初始化。这意味着它们将包含垃圾值。
i++
本身就会增加,您不必使用任何额外的赋值运算符。
改变
i=i++;
简单
i++;
或者更好的是,使用 for
循环而不是 while
循环
for(int i=0; i<=n; i++)
关于c - 如何用 C 语言编写一个程序来估计正弦函数作为泰勒级数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19009653/