博客
关于我
计算一元二次方程
阅读量:58 次
发布时间:2019-02-25

本文共 1376 字,大约阅读时间需要 4 分钟。

计算一元二次方程的根

问题描述

编写一个程序,接受一行输入,包含三个浮点数a, b, c,表示一元二次方程ax² + bx + c = 0的系数。根据a的值判断方程的类型,并计算根的情况。

输入描述

输入是一行,包含三个浮点数a, b, c,以空格分隔。

输出描述

对于每组输入,输出一元二次方程ax² + bx + c = 0的根的情况:

  • 如果a = 0,输出“Not quadratic equation”;
  • 如果a ≠ 0,根据判别式△ = b² - 4ac的值:
    • △ = 0,输出两个相等的实根;
    • △ > 0,输出两个不等的实根;
    • △ < 0,输出两个复数根,格式为“x1=实部-虚部i;x2=实部+虚部i”。

所有实数部分精确到小数点后2位,数字和符号之间无空格。

代码实现

#include 
#include
int main() { float a, b, c; while (scanf("%f %f %f", &a, &b, &c) != EOF) { double discriminant = b * b - 4 * a * c; if (a == 0) { printf("Not quadratic equation"); } else { if (discriminant == 0) { double x = (-b) / (2 * a); printf("x1=x2=%.2f", x); } else if (discriminant > 0) { double x1 = (-b - sqrt(discriminant)) / (2 * a); double x2 = (-b + sqrt(discriminant)) / (2 * a); printf("x1=%.2f;x2=%.2f", x1, x2); } else { double real_part = (-b) / (2 * a); double imaginary_part = sqrt(-discriminant) / (2 * a); printf("x1=%.2f-%.2fi;x2=%.2f+%.2fi", real_part, imaginary_part, real_part, imaginary_part); } } printf("\n"); } return 0;}

运行结果

程序运行时,输入一行三个浮点数,输出相应的方程根情况。例如,输入“1 2 3”会输出x1=1.00;x2=3.00,输入“1 -2 -3”会输出x1=1.00;x2=1.00,输入“2 4 8”会输出x1=1.00-2.00i;x2=1.00+2.00i。

转载地址:http://jko.baihongyu.com/

你可能感兴趣的文章
opencv19-霍夫直线变化
查看>>
opencv2-矩阵掩膜操作
查看>>
opencv20-霍夫圆检测
查看>>
opencv21-像素重映射
查看>>
opencv22-直方图均衡化
查看>>
opencv23-直方图计算
查看>>
opencv24-直方图比较
查看>>
opencv25-直方图反向投影
查看>>
opencv26-模板匹配
查看>>
opencv27-轮廓发现
查看>>
opencv28-凸包
查看>>
opencv29-轮廓周围绘制矩形框和圆形框
查看>>
OpenCV3 install tutorial for Mac
查看>>
opencv3-Mat对象
查看>>
opencv30-图像矩
查看>>
opencv32-基于距离变换和分水岭的图像分割
查看>>
opencv4-图像操作
查看>>
opencv5-图像混合
查看>>
opencv6-调整图像亮度和对比度
查看>>
opencv7-绘制形状和文字
查看>>