好吧,我对特定的 C 代码有疑问。我正在处理一项不使用任何“精炼”编码的任务,也就是说,用最简单的库和函数做常规的事情。特别是,我只被允许使用 stdio.h ,而不是任何库。也没有字符串。
问题:我必须使用以下表达式计算用户给出的实数 x(以双精度存储)的余弦:cos (x) = ((x^(2i))/((2i)! ))*(-1)^i,所有这些都在从 i = 0 到 i = n 的 sumatore 中,n 是用户选择的精度(一个 int 数)。好的,到目前为止,我已经设法完成了这段代码:
scanf("%lf", &x);
r1 = x;
scanf("%d", &n);
for (i = 0; i <= n; i++){
for(cont1 = 0; cont1 < 2*i; cont1++){
r1 = r1*r1;
}
for(cont2 = 1; cont2 <= 2*i; cont2++){
r2 = r2*cont2;
}
for(cont3 = 1; cont3 < i; cont3++){
r3 = (-1)*(-1);
}
result = result + (r1/r2)*r3;
}
printf("The result is %lf\n", result);
但是输出总是1.#INF00
,一直。有人知道为什么会这样吗?有人可以告诉我如何设法获得正确的代码吗?将不胜感激。
先感谢您。