解决一元二次方程通过C语言

嗯主要就做个学习记录以后还可以当作复习求解一般有三种情况
d=bb-4a*c
根据d的大小判断
d>0 不相等实数根
d=0 相等的
d<0 共轭复数根
那既然了解了大概了就贴上代码了

#define exp pow(10,-7)//C语言中一般float都会转换double 估计是因为double精度可以15位的原因把 float只可以6位 ,而如过你想跟高的精度可以定义下面的longdoule 可以达到19位的精度了
void FangCheng()
{
	double a, b, c,d,x1,x2;
	printf("请输入3个数逗号隔开例如\n");
	scanf("%lf,%lf,%lf", &a, &b, &c);
	d = b*b - 4*a*c;
	if (d==0||d>0)
	{
		if (d > 0)//2 不同根
		{
			x1 =( -b + sqrt(d)) / (2 * a);
			x2 = (-b - sqrt(d)) / (2 * a);
		}
		if (d == 0)//相同的
		{
			x1 = x2 = (-b + sqrt(d)) / (2 * a);
		}
		printf(" x1:%.5f\n x2:%.5f\n", x1, x2);
	}
	else
	{
		double p, q;
		p = -b / (2 * a)+ exp;     //实部
		q = sqrt(-d) / (2 * a);//虚部
		//if(p==0)	
		//	printf("	x1:%.1f i\n	x2:%.1f i\n",q,q);
			printf("	x1:%.6f+%.6f i\n	x2:%.6f-%.6f i\n", p, q, p, q);
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值