分析:
本题中的方程的计算方法已经给出,重点是如何对表达式进行计算(注意求值优先级,使用小括号保证优先级顺序)以及不同方程的解的情况,在这里使用了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函数的使用。