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;
}

