【发布时间】:2021-07-10 21:41:19
【问题描述】:
老师要求去掉main函数中的圆周率减法循环。我不知道如何编写程序,以便对任何值都得出正确的结果。
#include <stdio.h>
#include <math.h>
double sinus(double x);
int main(void) {
double a, x;
scanf("%le", & x);
a = x;
while (fabs(x) > 2 * (M_PI)) {
x = fabs(x) - 2 * (M_PI);
}
if (a > 0)
a = sinus(x);
else a = (-1) * sinus(x);
printf("%le", (double) a);
return 0;
}
double sinus(double x) {
double sum = 0, h, eps = 1.e-16;
int i = 2;
h = x;
do {
sum += h;
h *= -((x * x) / (i * (i + 1)));
i += 2;
}
while (fabs(h) > eps);
return sum;
return 0;
}
【问题讨论】:
-
查找
fmod函数并使用它来代替循环。 -
你能提供更多细节吗?
-
请注意,将模运算放在
sinus函数中会更合乎逻辑。这可能是你老师关心的问题。
标签: c floating-point trigonometry taylor-series