C++系列实例篇1——简易一元二次方程求解器
引言
一元二次方程简介
- 如果 ,方程有两个不相等的实数解。 
- 如果 ,方程有两个相等的实数解。 
- 如果 ,方程没有实数解。 
代码实现
#include <iostream>//引入输入输出流库
#include <cmath>//常用数学函数库
#include <windows.h>
using namespace std; //使用标准(std)命名空间,这样可以不用在之后的代码中加上std::前缀
int main() {
    float a, b, c; //定义浮点数a b c
    int s = 0;//记录运算次数
    cout << "一元二次方程求解器(适用于一般式且解值在实数范围内,一次运行支持计算15个方程)" << endl;//提示语
    while (true) { //循环开始
        s += 1;
        cout << "这是第 " << s << " 次计算" << endl; 
        cout << "请输入A(一般式Ax^2+Bx+C=0,退出请将A与B均输入0): ";
        cin >> a;
        if (a == 0 && cin.peek() == '\n') break; 
        cout << "请输入B(一般式Ax^2+Bx+C=0,退出请将A与B均输入0): ";
        cin >> b;
        cout << "请输入C(一般式Ax^2+Bx+C=0): ";
        cin >> c;
        cout << "正在计算,请稍等..." << endl;
        float delta = b * b - 4 * a * c;
        cout << "Delta=" << delta << endl;
        if (delta >= 0) {
            float sum1 = (-1 * b + sqrt(delta)) / (2 * a);
            float sum2 = (-1 * b - sqrt(delta)) / (2 * a);
            cout << "计算成功" << endl << "x1=" << sum1 << endl << "x2=" << sum2 << endl;
        } else {
            cout << "该方程解值不在实数范围内,无法计算!" << endl;
        }
        if (s == 15) break;
    }
    cout << "程序将在3秒后自动退出";
    Sleep(3000);
    return 0;
    }或者 源代码下载链接:点此下载
代码优化
- 初始化变量:在使用变量之前,确保它们已经被初始化。 
- 代码风格:保持代码的可读性,比如使用空格、适当的缩进和换行。 
- 循环控制:使用更清晰的循环控制逻辑。 
- 异常处理:添加对输入异常的处理,比如用户输入非数字时的情况。 
- 代码重用:将重复的代码块提取成函数,以提高代码的可维护性。 
- 用户界面:提供更友好的用户界面,比如在退出前确认。 
#include <iostream>
#include <cmath>
#include <windows.h>
using namespace std;
// 函数声明
float calculateDelta(float a, float b, float c);
void solveQuadraticEquation(float a, float b, float c);
void printBanner();
int main() {
    printBanner();
    int count = 0;
    float a, b, c;
    while (true) {
        cout << "请输入A(一般式Ax^2+Bx+C=0,退出请将A与B均输入0): ";
        cin >> a;
        if (a == 0) {
            cout << "请输入B(退出请将B也输入0): ";
            cin >> b;
            if (b == 0) break;
        }
        cout << "请输入B(一般式Ax^2+Bx+C=0): ";
        cin >> b;
        if (a == 0 && b == 0) break;
        cout << "请输入C(一般式Ax^2+Bx+C=0): ";
        cin >> c;
        solveQuadraticEquation(a, b, c);
        count++;
        if (count == 15) break;
    }
    cout << "程序将在3秒后自动退出";
    Sleep(3000);
    return 0;
}
// 计算判别式
float calculateDelta(float a, float b, float c) {
    return b * b - 4 * a * c;
}
// 解一元二次方程
void solveQuadraticEquation(float a, float b, float c) {
    float delta = calculateDelta(a, b, c);
    cout << "Delta=" << delta << endl;
    if (delta >= 0) {
        float sum1 = (-1 * b + sqrt(delta)) / (2 * a);
        float sum2 = (-1 * b - sqrt(delta)) / (2 * a);
        cout << "计算成功" << endl << "x1=" << sum1 << endl << "x2=" << sum2 << endl;
    } else {
        cout << "该方程解值不在实数范围内,无法计算!" << endl;
    }
}
// 打印欢迎信息
void printBanner() {
    cout << "一元二次方程求解器(适用于一般式且解值在实数范围内,一次运行支持计算15个方程)" << endl;
}


