实例三:讨论一元二次方程的根——根据系数计算判别式
问题描述:
讨论一元二次方程的根
#include <stdio.h>
#include <math.h>
int main(void)
{
float a, b, c, x1, x2, realpart, imagepart, p;
printf("请输入一元二次方程的系数a,b,c的值:");
scanf("%f,%f,%f",&a,&b,&c);
if(a == 0 && b == 0)
printf("方程无解!\n");
else if(a==0 && b!=0)
printf("方程只有一个解:%.3f\n",-c/b);
else
{
p = b * b - 4 * a * c;
realpart = -b / (2 * a);
imagepart = sqrt(fabs(p)) / (2 * a);
if(p<0)
{
printf("方程有虚数解:");
printf("%.3f+%3fi",realpart,imagepart);
printf("%.3f+%.3fi\n",realpart,imagepart);
}
else if(p>0)
{
x1 = realpart + imagepart;
x2 = realpart - imagepart;
printf("方程有俩个实数解:");
printf("%.3f and %.3f\n",x1,x2);
}
else
printf("方程只有一个实数解:%.3f\n",realpart);
}
return 0;
}
心得:
- 判断一元二次方程的解的情况,一定要回想起中学学过的韦达定理,根与系数的关系,来作为条件判断解的情况,也要考虑周全,对于中学时代的扩展———非实根也要有在程序中扩展体现到。
拓展:
- 实际上就是条件判断,话不多说:if()条件注意灵活性,从 初始化 测试 更新 三个语言表达式中找到灵活性,还要注意一个运算符:” ,“ 。