输入1,结果是0.632,但是正确结果是0.841,不知道哪里错了,请帮忙看看,谢谢啦!
你这个循环不对啊,你每次只乘一次,但实际公式中每一项都是奇数次方啊
很明显,你的item和nume错了
1.nume错了
for(int i=0;i<10;i++)
nume=pow(x,i*2+1);
2.deno也不对,指数是奇数,可是分母是阶乘,你不能只乘奇数不乘偶数啊
#include <stdio.h>
#include <math.h>
int fact(int n)
{
int ans = 1;
for(int i=1; i<=n; i++)
{
ans *= i;
}
return ans;
}
int main()
{
double x;
scanf("%lf", &x);
double sum1 = 0, sum2 = 0, ans;
for(int i = 1; i <= 10; i++)
{
if(i % 2 != 0)
{
sum1 += pow(x, (2*i - 1)) / fact(2*i - 1);
}
if(i % 2 == 0)
{
sum2 += pow(x, (2*i - 1)) / fact(2*i - 1);
}
}
ans = sum1 - sum2;
printf("%.3f", ans);
return 0;
}
#include <math.h>
#include <stdio.h>
#define EPSILON 1e-4
double my_sin(double x) {
double x2 = x * x;
double f = x;
double s = f;
int n = 0, n2;
while (fabs(f) > EPSILON) {
n++;
n2 = 2 * n;
f *= x2 / (n2 * (n2 + 1));
if (n % 2 == 0)
s += f;
else
s -= f;
}
return s;
}
int main() {
double x;
scanf("%lf", &x);
printf("%.3lf\n", my_sin(x));
return 0;
}