求解一元二次方程的解 (分支语句)

  • Post author:
  • Post category:其他




求解一元二次方程的解 (分支语句)



一元二次方程

只含有一个未知数(一元),并且未知数项的最高次数是2(二次)的整式方程叫做一元二次方程 。一元二次方程经过整理都可化成一般形式ax²+bx+c=0(a≠0)。其中ax²叫作二次项,a是二次项系数;bx叫作一次项,b是一次项系数;c叫作常数项 。

由一元二次方程求根公式知

当 a != 0时:

在这里插入图片描述

判别式

利用一元二次方程根的判别式( δ)可以判断方程的根的情况 。

一元二次方程 的根与根的判别式 有如下关系:

①当 δ >0时,方程有两个不相等的实数根;

②当 δ=0时,方程有两个相等的实数根;

③当 δ<0时,方程无实数根,但有2个共轭复根

//求一元二次方程组的解
#include<stdio.h>
#include<math.h>


int main()
{
	int a = 0, b = 0, c = 0,d=0;
	double x1 = 0, x2 = 0;
	printf("请输入一元二次方程组的a,b,c的值:\n");
	scanf("%d%d%d", &a, &b, &c);
	if (a==0)
	{
		if (b == 0)
		{
			if (c==0)
			{
				printf("方程有无数解\n");
			}
			else
			{
				printf("方程无解\n");

			}
			
		}
		else
		{
			x1 = x2 = -c / (double)b;//因为x1,x2是double型的,所以要强转
			printf("方程的解为:x1=x2=%.2lf\n", x1);
		}		
	}
	else
	{
		d = b*b - 4 * a*c;
		if (d > 0)
		{
			//sqrt是开平方函数,离开所以上面要引用#include<math.h>的头文件
			x1 = (-b + sqrt(d)) / (2.0 * a);
			x2 = (-b - sqrt(d)) / (2.0 * a);
			printf("方程的解为:x1=%.2lf x2=%.2lf\n", x1, x2);
		}
		else if (d==0)
		{
			x1 = x2 = (-b) / (2.0 * a);//这也是强转为浮点型
			printf("方程的解为:x1=x2=%.2lf\n", x1);
		}
		else
		{
			printf("无实根\n");
		}	
	}
	return 0;
}


定义函数:


#include<stdio.h>
#include<math.h>
int Fac(int a, int b, int c)
{
	double x1 = 0, x2 = 0;
	int  d = 0;
	if (a == 0)
	{
		if (b == 0)
		{
			if (c == 0)
			{
				printf("方程有无数解\n");
			}
			else
			{
				printf("方程无解\n");

			}

		}
		else
		{
			x1 = x2 = -c / (double)b;//因为x1,x2是double型的,所以要强转
			printf("方程的解为:x1=x2=%.2lf\n", x1);
		}
	}
	else
	{
		d = b*b - 4 * a*c;
		if (d > 0)
		{
			//sqrt是开平方函数,离开所以上面要引用#include<math.h>的头文件
			x1 = (-b + sqrt(d)) / (2.0 * a);
			x2 = (-b - sqrt(d)) / (2.0 * a);
			printf("方程的解为:x1=%.2lf x2=%.2lf\n", x1, x2);
		}
		else if (d == 0)
		{
			x1 = x2 = (-b) / (2.0 * a);//这也是强转为浮点型
			printf("方程的解为:x1=x2=%.2lf\n", x1);
		}
		else
		{
			printf("无实根\n");
		}
	}
}


int main()
{
	int a = 0, b = 0, c = 0;
	
	printf("请输入一元二次方程组的a,b,c的值:\n");
	scanf("%d%d%d", &a, &b, &c);
	Fac(a, b, c);
	return 0;
}

结果:

在这里插入图片描述


定义函数的好处,使得在主函数内部显得不那么拥挤,还有就是简化代码,代码复用



注意


sqrt函数是开平方函数,要引用头文件#include<stdio.h>

转换类型可以强转(即:在前面加(int)(double))

int转double 也可以给这个数*1.0



版权声明:本文为weixin_52142731原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。