还是老规矩:话不多说,先上代码。
#include<bits/stdc++.h>
using namespace std;
typedef long double ld;
int main() {
ld a,b,c,d,x1,x2,x;
input:
scanf("%llfx^2+%llfx+%llf=0",&a,&b,&c);
if(a<=0) {
cout<<"此方程输入有问题(a≤0),请重新输入!"<<endl;
goto input;
}
d=b*b-4*a*c;
if(d>0) {
cout<<"此方程有两个不等的实数解。"<<endl;
cout<<"经过计算,得出以下结果:"<<endl;
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("x1=%.18Lf\nx2=%.18Lf\n",x1,x2);
cout<<"您如果不想解方程了,请退出程序。"<<endl;
cout<<"您如果还想解一个方程,请继续输入。"<<endl;
goto input;
}
else if(d==0) {
cout<<"此方程有两个相等的实数解。"<<endl;
cout<<"经过计算,得出以下结果:"<<endl;
x=(-b+sqrt(d))/(2*a);
printf("x=%.18Lf\n",x);
cout<<"您如果不想解方程了,请退出程序。"<<endl;
cout<<"您如果还想解一个方程,请继续输入。"<<endl;
goto input;
}
else if(d<0) {
cout<<"经过计算,此方程没有实数解。"<<endl;
cout<<"您如果不想解方程了,请退出程序。"<<endl;
cout<<"您如果还想解一个方程,请继续输入。"<<endl;
goto input;
}
return 0;
}
这次的代码质量还可以, 39 39 39 行代码。