分析:

本题中的方程的计算方法已经给出,重点是如何对表达式进行计算(注意求值优先级,使用小括号保证优先级顺序)以及不同方程的解的情况,在这里使用了sqrt函数用于计算平方根。

题解:

#include <bits/stdc++.h>
using namespace std;

int main() {
    double a, b, c;
    //循环读入a b c
    while(scanf("%lf %lf %lf", &a, &b, &c) != EOF) {
        //计算delta
        double delta = b*b - 4*a*c;

        //判断a为零的情况
        if(a == 0.0) {
            printf("Not quadratic equation\n");
            continue;
        }

        //delta小于0,则有两个虚数根
        if(delta < 0.0) {
            double x1 = -b / (2. * a);
            double x2 = sqrt(-delta) / (2. * a);
            printf("x1=%.2lf-%.2lfi;x2=%.2lf+%.2lfi\n", x1, x2, x1, x2);
        }
        else if(delta == 0.0) { //delta等于0有重根
            double x1 = (-b) / (2. * a);
            printf("x1=x2=%.2lf\n", x1, x1);
        } else { //否则有两个实数根
            double x1 = (-b - sqrt(delta)) / (2. * a);
            double x2 = (-b + sqrt(delta)) / (2. * a);
            printf("x1=%.2lf;x2=%.2lf\n", x1, x2);
        }
    }
    return 0;
}

总结:

经典的一元二次方程解法,if else的嵌套使用以及sqrt函数的使用。