先贴上代码
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <cmath>
#include <iomanip>
using namespace std;
int main() {
double a = 0, b = 0, c = 0, x1 = 0, x2 = 0, r = 0, f = 0;
cin >> a >> b >> c;
double delta = pow(b, 2) - 4 * a * c;
if (delta > 0) {
x1 = (-b + sqrt(b * b - 4 * a * c)) / (2 * a);
x2 = x2 = (-b - sqrt(b * b - 4 * a * c)) / (2 * a);
cout << "x1=" << fixed << setprecision(5) << x1 << ";" << "x2=" << x2 << endl;
}
else if (delta == 0) {
x1 = (-b + sqrt(b * b - 4 * a * c)) / (2 * a);
cout << "x1=x2=" << fixed << setprecision(5) << x1 << endl;
}
else {
r = -b / (2 * a);
f = sqrt(4 * a * c - b * b) / (2 * a);
cout << "x1=" << fixed << setprecision(5) << r << "+" << f << "i" << ";" << "x2=" << r << "-" << f << "i" << endl;
}
return 0;
}
请忽略里面多余的引用,纯粹是懒2333(实际情况是把所有代码放进同一个cpp中,不需要了就引用掉,所以头文件是一路引用下来的23333)。这是一个求一元二次方程根的程序,问题其实很简单,在输入1 0 7.3时在本应输出0.00000处输出了-0.00000,也就是在0前面加了负号,请问有解决方法吗?不尽感激!