题目:
求一元二次方程ax2+bx+c=0的根,三个系数a, b, c由键盘输入,且a不能为0,但不保证b2-4ac>0。
程序中所涉及的变量均为double类型。
输入格式:
以空格分隔的一元二次方程的三个系数,双精度double类型
输出格式:
分行输出两个根如下(注意末尾的换行):
r1=第一个根
r2=第二个根
结果输出时,宽度占7位,其中小数部分2位。
如果方程无实根,输出一行如下信息(注意末尾的换行):
No real roots!
输入样例:
1 2 3
输出样例:
No real roots!
AC代码:
#include<iostream>
#include<math.h>
#include<iomanip>
using namespace std;
int main(){
double a,b,c;
cin>>a>>b>>c;
if(a==0||b*b-4*a*c<=0){
cout<<"No real roots!";
}
else{
double r1,r2;
r1=(-b+sqrt(b*b-4*a*c))/(2*a);
r2=(-b-sqrt(b*b-4*a*c))/(2*a);
cout.setf(ios::fixed);
cout<<"r1="<<setw(7)<<setprecision(2)<<r1<<endl<<"r2="<<setw(7)<<r2;
}
return 0;
}