C语言求方程式 ax^2+bx+c=0 的根, 分别考虑: 1、有两个不等的实根 2、有两个相等的实根
前言
实际上ax^2+bx+c=0 方程的解应该有以下几种可能:
程序源码
#include <stdio.h>
#include <math.h>
int main()
{
double a, b, c, disc, x1, x2;
printf("请输入a,b,c:");
scanf("%lf,%lf,%lf",&a,&b,&c);
if( fabs(a) <= 1e-6 )//绝对值小于0.000001就是0了( 1e-6表示1乘以10的负6次方。)
printf("不是二次方程\n");
else
{
disc = b * b - 4 * a * c;
if( fabs(disc) <= 1e-6 )
printf("两个相等的实根:%8.4f\n", -b / (2 * a));
else
if( disc > 1e-6 )
{
x1 = (-b + sqrt(disc) ) / (2 * a);
x2 = (-b - sqrt(disc) ) / (2 * a);
printf("两个不等的实根:x1 = %8.4f x2 = %8.4f\n", x1, x2);
}
else
{
//共轭复根
x1 = -b / ( 2 * a ); //复根的实部
x2 = sqrt(-disc) / ( 2 * a ); //复根的虚部
printf("%8.4f+%8.4fi\n", x1, x2);
printf("%8.4f-%8.4fi\n", x1, x2);
}
}
return 0;
}
运行结果