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

查看4道真题和解析