C语言 求方程ax^2+bx+c=0的根

本文介绍了一个C程序,用于计算一元二次方程ax^2+bx+c=0的根,根据判别式的值(b^2-4ac),分为实数根(两个相同或不同)、共轭复数根三种情况,并分别调用fun1、fun2和fun3函数输出结果。
摘要由CSDN通过智能技术生成

一、求方程ax^2+bx+c=0的根,用三个函数分别求当:b^2-4ac大于0,等于0,和小于0时的根并输出结果。从主函数输入a,b,c的值。

#include <stdio.h>
#include<math.h>
float x,x1,x2,disc;
int main()
{
	void fun1(float i,float j);
	void fun2(float l,float m,float n);
	void fun3(float o,float p,float q);
	float a,b,c;
	printf("请分别输入a,b,c的值:");
		scanf("%f %f %f",&a,&b,&c);
		if(a==0)
		{
			x=(-c)/b;
			printf("该方程不是一元二次方程,但解为x=%f\n",x);
		}
		if (a!=0)
		{
			disc=b*b-4*a*c;
			if(fabs(disc)<=1e-8)
			 fun1(a,b);
			else if(disc>0)
			fun2(a,b,c);
			else if(disc<0)
		    fun3(a,b,c);
		}
		return 0;
}
void fun1(float i,float j)
{
	float x;
	x=-j/(2*i);
	printf("该方程有两个相同的实根x1=x2=%f\n",x);
}
void fun2(float l,float m,float n)
{
	disc=m*m-4*l*n;
	x1=(-m+sqrt(disc))/(2*l);
	x2=(-m-sqrt(disc))/(2*l);
	printf("该方程有两个不同的实根\nx1=%f\nx2=%f\n",x1,x2);
}
void fun3(float o,float p,float q)
{
	float e,f;
	disc=p*p-4*o*q;
	e=-p/(2*o);
	f=sqrt(fabs(disc))/(2*o);
	printf("该方程有两个共轭复数根\nx1=%f+%fi\nx2=%f-%fi\n",e,f,e,f);
}
运行结果

a=0

disc=0

disc>0

disc<0

  • 16
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值