C語言OJ專案參考(2013)一元二次方程

2021-07-23 15:49:24 字數 1446 閱讀 1378

(2013)一元二次方程ⅱ

description

求一元二次方程ax

2+bx

+c=0

的解。a,b,c為任意實數。

input

輸入資料有一行,包括a b c的值。

output

按以下格式輸出方程的根x1和x2。x1和x2之間有乙個空格。 x1 x2

(1)如果x1和x2為實根,則以x1>=x2輸出。

(2)如果方程是共軛復根,x1=m+ni,x2=m-ni,其中n>0。 其中x1, x2, m,n均保留2位小數。

sample input

1 2 3

sample output

-1.00+1.41i -1.00-1.41i

[參考解答]

#include 

#include

int main ( )

else

return

0;}

完善:以上結果提交oj順利通過,儘管自知對共軛復根處的處理有點太簡單,但通過了,也樂得不追究了。

今天(2023年10月13日)上機課上,崔翔童鞋問我,題目中有「(2)如果方程是共軛復根……,其中n>0」,那個n>0怎麼整,驚出一身冷汗:老賀想逃避,休想!

讀上面的程式,其實可以看到,當a<0時,共軛復根的虛部pi<0,於是輸出的結果,就會很難看。確切的說,是錯的!

如下圖:

這樣的輸出,太低階了。我們想要的是:

但是,最愛在輸出格式上和人較勁的oj,是怎麼容忍這樣的錯誤的?很簡單,沒有提供a<0時的測試資料,自然就讓人能蒙混過關了。oj啊,你那嚴格的名聲來之不易,咋能不珍惜呢?

不管你oj了,老賀決定認真點。你讓人犯錯,咱也不降低對自己的要求了。上**:

#include 

#include

int main ( )

else

else

}return

0;}

其實,考慮共軛復根的對稱性,可以如下省點**(讀起來難懂,就執行觀察觀察,再想想):

#include 

#include

int main ( )

else

return

0;}

C語言OJ專案參考 1034 求值

1034 求值 description 求sn 1 2 3 4 5 n 之值,其中n是乙個數字。input noutput 和sample input 5sample output 153 參考解答 include int main printf ld sum return 0 本題中未指定n的大小...

C語言OJ專案參考 1942 進製轉換

description 輸入乙個十進位制數n,將它轉換成r進製數輸出。input 輸入資料報含多個測試例項,每個測試例項包含兩個整數n 32位整數 和r 2 r 16,r 10 outputt 為每個測試例項輸出轉換後的數,每個輸出佔一行。如果r大於10,則對應的數字規則參考16進製制 比如,10用...

C語言OJ專案參考 1942 進製轉換

description 輸入乙個十進位制數n,將它轉換成r進製數輸出。input 輸入資料報含多個測試例項,每個測試例項包含兩個整數n 32位整數 和r 2 r 16,r 10 outputt 為每個測試例項輸出轉換後的數,每個輸出佔一行。如果r大於10,則對應的數字規則參考16進製制 比如,10用...