【学堂在线】|【学堂在线】 一元二次方程求解

题目描述
对于一元二次方程ax^2 + bx + c = 0,解可以分为很多情况。
若该方程有两个不相等实根,首先输出1,换行,然后从小到大输出两个实根,换行;
若该方程有两个相等实根,首先输出2,换行,然后输出这个这个实根,换行;
若该方程有一对共轭复根,输出3,换行;
若该方程有无解,输出4,换行;
若该方程有无穷个解,输出5,换行;
若该方程只有一个根,首先输出6,换行,然后输出这个跟,换行;
【【学堂在线】|【学堂在线】 一元二次方程求解】要求使用c++ class编写程序。

#include #include //sqrt开平方函数需要用到的头文件 #include//保留小数点后两位需要的头文件 using namespace std; class Equation{ private: int _a, _b, _c; public: Equation(int a, int b, int c){//构造函数 _a = a; _b = b; _c = c; } void solve(); //成员函数 }; void Equation::solve(){//类外实现成员函数 double a = _a, b = _b, c = _c; if (a == 0){ if (b == 0){ if (c == 0) cout << 5 << endl; else cout << 4 << endl; } else{ cout << 6 << endl; cout << fixed << setprecision(2) << -c / b << endl; /*<< fixed << setprecision(2)表示保留小数点后两位*/ } } else{ double delta = b*b - 4 * a*c; if (delta > 0){ cout << 1 << endl; double i = (-b + sqrt(b*b - 4 * a*c)) / (2 * a); double j = (-b - sqrt(b*b - 4 * a*c)) / (2 * a); if (i > j){//为了满足题目条件:结果按从大到小的顺序输出 double temp; temp = i; i = j; j = temp; } cout << fixed << setprecision(2) << i <<" "<< j << endl; } else if (delta = 0){ cout << 2 << endl; cout << fixed << setprecision(2) << -b / (2 * a) << endl; } else cout << 3 << endl; } }int main(){ int a, b, c; cin >> a >> b >> c; Equation tmp(a, b, c); tmp.solve(); return 0; }

    推荐阅读