問題 L 求一元二次方程的根

2021-09-29 12:21:52 字數 2346 閱讀 8836

題目描述

一元二次方程的標準形式為ax2+bx+c=0(a≠0),其中a、b、c為常數。求解一元二次方程的根x時有三種情況,分別為(記δ=b2-4ac):

δ>0,有兩個不等的實根;

δ=0,有兩個相同的實根;

δ<0,有兩個共軛的虛根。輸入

輸入為多行,每行為一元二次方程的三個常數a,b,c,在double型別範圍之內。當輸入的a為0時,表示輸入結束。

輸出每行輸入的樣例對應三行輸出。

第一行輸出為樣例的編號。

第二行輸出為所輸入常數a,b,c對應的一元二次方程的標準形式,要求輸出滿足a>0。

第三行輸出為所輸入方程的根,分為三種情況:

若方程滿足δ>0,即有兩不等實根x1、x2,則按順序(先小後大)輸出這兩個實根。

若方程滿足δ=0,即有兩相同實根x,則輸出乙個實根。

若方程滿足δ<0,即有兩共軛的虛根x1、x2,則輸出兩個虛根,虛部符號為正的(即u+vi形式)先輸出,虛部符號為負的(x-yi形式)後輸出。

以上輸出均不輸出數學上無意義或可省略的的符號,所有數值最多保留6位有效數字。每個樣例之後都有乙個空行分隔。

樣例輸入

121

-12-

1-52

-0.2-3

2030

12244

0

樣例輸出

case1:

x^2+

2x+1

=0only

onereal

root:-

1case2:

x^2-

2x+1

=0only

onereal

root:1

case3:

5x^2

-2x+

0.2=

0only

onereal

root

:0.2

case4:

3x^2

-2x=

0two

real

roots:0

,0.666667

case5:

3x^2

+12=0

twoimaginary

roots:2

i,-2

icase6:

2x^2

+4x+

4=0two

imaginary

roots:-

1+i,

-1-i

#include

<

stdio.h

>

#include

<

math.h

>

intmain()

printf

("case %d :\n",i

);i+

+;if(

a==1

)printf

("x^2 ");

else

printf

("%gx^2 ",a

);if(

b==0

);elseif(

b==1

)printf

("+ x ");

elseif(

b==-

1)printf

("- x ");

else

printf

("%c %gx ",b

>0?

'+':

'-',

fabs(b

));if

(c==

0);else

printf

("%c %g ",c

>0?

'+':

'-',

fabs(c

));printf

("= 0\n");

m=b*

b-4*a

*c;d

=sqrt(m

);if(

m>

1e-12

)elseif(

fabs(m

)<

1e-12

)else

else

printf

(", ");

if(t!

=0)printf

("%g",t

);if(

s!=1

)printf

("-%gi\n",s

);else

printf

("-i\n");

}printf

("\n");

}}return0;

}

求一元二次方程的根

求一元二次方程的根 總時間限制 1000ms 記憶體限制 65536kb 描述 利用公式x1 b sqrt b b 4 a c 2 a x2 b sqrt b b 4 a c 2 a 求一元二次方程ax2 bx c 0的根,其中a不等於0。輸入 輸入一行,包含三個浮點數a,b,c 它們之間以乙個空格...

求一元二次方程的根

描述 利用公式x1 b sqrt bb 4ac 2a x2 b sqrt bb 4ac 2a 求一元二次方程ax2 bx c 0的根,其中a不等於0。輸入輸入一行,包含三個浮點數a,b,c 它們之間以乙個空格分開 分別表示方程ax2 bx c 0的係數。輸出輸出一行,表示方程的解。若b2 4 a c...

求一元二次方程的根

從鍵盤上任意輸入 a,b,c 的值,程式設計計算並輸出一元二次方程 ax2 bx c 0 的根 當 a 0 時,輸出 not quadratic equation with one unknown 當 a 0 時,分 b2 4ac 0 b2 4ac 0 b2 4ac 0 三種情況計算並輸出方程的根。...