实例3 求一元二次方程的根
问题描述:
用else if结构在负数范围内求解一元二次方程的根。
//******求解一元二次方程的根******
//作者: Shelly
//版本: v1.0
//创建时间: 2014年10月6日
//主要功能: 在复数范围内求解一元二次方程的根
//使用语言: C语言
//*********************************
#include <stdio.h> //标准输入输出头文件
#include <math.h> //数学函数的头文件
/***********主函数main()***********
函数说明:
用else if结构在复数范围内求解一元二次方程的根
函数功能:
实现在复数范围内求解一元二次方程的根
变量说明:
a,b,c为一元二次方程的三个系数
p为一元二次方程判别式b*b-4*a*c的结果
x1,x2为一元二次方程的两个实根 realpart,imagepart为一元二次方程的实部和虚部
函数返回值:
此处不需要返回值,因此返回值为0.
***********************************/
int main()
{
//临时变量,存放输入的系数
float a,b,c,p;
//临时变量,存放两个实根
float x1,x2;
//临时变量,存放虚部和实部
float realpart,imagepart;
printf("请输入一元二次方程的系数a,b,c:\n");
scanf("%f%f%f",&a,&b,&c);
//当a等于0并且b等于0时无解
if(0 == a && 0 == b )
{
printf("无解!");
}
//当a等于0并且b不等于0时只有一个解
else if(0 == a && 0 != b)
{
printf("方程只有一个解:%.3f\n",-c/b);
}
else
{
p = b*b - 4*a*c;
realpart = -b/(2*a);
imagepart = sqrt(fabs(p)/(2*a));
//当判别式p小于0时,有虚数解
if(p < 0)
{
printf("方程有虚数解:\n");
printf("%.3f+%.3fi\n",realpart,imagepart);
printf("%.3f+%.3fi\n",realpart,imagepart);
}
//当判别式p大于0时,有实数解
else if(p > 0)
{
x1 = realpart + imagepart;
x2 = realpart - imagepart;
printf("方程有两个实数解:\n");
printf("x1=%.3f\n",x1);
printf("x2=%.3f\n",x2);
}
//当判别式p等于0时,只有一个实数解
else
{
printf("方程只有一个实数解:%.3f\n",realpart);
}
}
return 0;
}</span>
实现效果图:
(上面只是小编思路,如果你有更好的思路可以自己上机尝试下。)