1. 程式人生 > >一元二次方程

一元二次方程

pan printf name names 要求 bsp oot fine turn

問題描述

求一元二次方程ax2+bx+c=0(a≠0)的根。如果a=0,輸出:error;如果判別式小於0,輸出:No real roots.;如果判別式等於0,輸出:x1=x2=xxxxxx;如果判別式大於0,輸出:x1=xxxxxx,x2=xxxxxx。

輸入格式三個用空格分隔的雙精度數輸出格式按上述要求輸出根或error等樣例輸入1 3 1樣例輸出x1=-0.381966,x2=-2.618034提示

輸入:1 2 1;輸出:x1=x2=-1.000000
輸入:1 1 1;輸出:No real roots.
輸入:0 1 1;輸出:error

 
#include <stdio.h>  
#include 
<iostream> #include <math.h> #include <string.h> #define d 1e-7 using namespace std; int main() { double a,b,c; scanf("%lf %lf %lf",&a,&b,&c); double k,x1,x2; k = (b*b - 4.0*a*c); if(a==0) printf("error"); else { if
(k > 0 ) { x1 = (-b + sqrt(k))/(2.0*a); x2 = (-b - sqrt(k))/(2.0*a); if(x1<x2) printf("x1=%lf,x2=%lf",x2,x1); else printf("x1=%lf,x2=%lf",x1,x2); } else if(k==0) { x1 = -b/(2.0*a); printf(
"x1=x2=%lf",x1); } else printf("No real roots."); } return 0; }

一元二次方程