您的位置:首页 > 编程语言 > C语言/C++

算法:求一元二次方程ax^2 + bx + c = 0的根

2017-11-07 22:55 253 查看
一元二次方程ax2+bx+c=0

判别式D=b2−4ac

一元二次方程的实根:x=−b±D√2a

一元二次方程的虚根:x=−b2a±D√2ai

用switch语句实现:

#include "stdio.h"
#include "math.h"

int main(void)
{
float a = 0, b = 0, c = 0;
float discriminant = 0, x1 = 0, x2 = 0;
float p = 0, q = 0;

printf("Please input three coefficient:");
scanf_s("%f %f %f", &a, &b, &c);

discriminant = pow(b, 2) - 4 * a * c;

switch (discriminant >= 0)
{
case 1:
switch (discriminant > 0)
{
case 1:
x1 = (-b + sqrt(discriminant)) / (2 * a);
x2 = (-b - sqrt(discriminant)) / (2 * a);
printf("两个不相等的实根为:x1 = %f, x2 = %f\n", x1, x2);
break;
case 0:
x1 = -b / (2 * a);
printf("两个相等的实根为:x1 = x2 = %f\n", x1);
break;
}
break;
case 0:
p = -b / (2 * a);
q = sqrt(-discriminant) / (2 * a);
printf("两个不相等的虚根为:x1 = %f + %fi, x2 = %f - %fi\n", p, q, p, q);
break;
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 aix switch x