翛之上人 2021-04-08 09:54 采纳率: 0%
浏览 22

问求cosx的代码错误原因

 

能运行,但是跑不出正确结果

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
	int even = 0, factorial = 1, sgn;
	double x, term = 1, cosx = 0, sxm = 0, i = 0;
	scanf_s("%lf", &x);
	while (term > 1e-7)
	{
		factorial = 1;
		for (even = 2 * i; even > 0; even--)
			factorial *= even;
		even = i * 2;
		sxm = pow(x, even);
		term = sxm / factorial;
		sgn = pow(-1, i + 1);
		cosx = cosx + sgn * term;
		i++;
	}
	printf("cosx=%lf", cosx);
	return 0;
}

后来找了一个循环语句换成for语句的代码,就跑对了

#include <stdio.h>
#include<stdlib.h>
#include <math.h>
int main()
{
	int t, sgn = 1;
	double x, term=0, factorial = 1, sum = 1, sxm;
	scanf_s("%lf", &x);
	for (t = 2;; t++)
	{
		factorial = factorial * t;
		if (t % 2 == 0)
		{
			sgn = sgn * (-1);
			sxm = pow(x, t);
			term = sxm / factorial;
			sum = sgn * term + sum;
		}
		if (fabs(term) <= 1e-7)
			break;
	}
	printf("cosx=%lf", sum);
	return 0;
}

for的那个是对的,while那个就不对,求大佬解释下

  • 写回答

2条回答 默认 最新

  • 关注

    第一个的i初始值是0,后面用到i++,乘以2条件是不一样的。这个条件if (fabs(term) <= 1e-7)与while循环的退出条件也不一样呀。

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#c语言#的问题,请各位专家解答!
  • ¥15 这个如何解决详细步骤
  • ¥15 在微信h5支付申请中,别人给钱就能用我的软件,这个的所属行业是啥?
  • ¥30 靶向捕获探针设计软件包
  • ¥15 别人给钱就能用我的软件,这个的经营场景是啥?
  • ¥15 react-diff-viewer组件,如何解决数据量过大卡顿问题
  • ¥20 遥感植被物候指数空间分布图制作
  • ¥15 安装了xlrd库但是import不了…
  • ¥20 Github上传代码没有contribution和activity记录
  • ¥20 SNETCracker