題目連結
https://zerojudge.tw/ShowProblem?problemid=a225
建議類題
解題思路
為數字排序的方法有很多種,而本題採用氣泡排序法,具體的作法是從第一個元素開始往下檢查,如果兩者的相對順序錯誤,就將兩者的位置對調,接著重新檢查,直到最後一個元素的位置也被確認正確無誤為止。
以本題來說,是要將輸入的數字按個位數由小到大排列,因此我們會從第二個數字開始檢查。如果它的個位數比前一個數字的個位數還大的話,代表檢查到目前為止,它在數列中的位置是正確的,我們就不會移動他的位置,繼續檢查下去;反之則需將它與前一個數字的位置對調,然後重新檢查;若是兩個數字的個位數相同,則依照數字的數值由大到小排列。
注意事項
根據題意,測資檔會包含多組測資,因此需使用「EOF寫法」。所謂 EOF 並不是一種真實存在的字元,而是「End Of File」的縮寫,意思是一份檔案的結尾,也可以說是輸入的停止。通常程式在執行時會先讀取輸入,再依據輸入進行相對的行動,但我們未必能知道輸入有幾筆、到什麼時候結束,這時候我們就可以讓電腦自動偵測。一旦它偵測到EOF條件為True,即代表輸入停止,就會結束讀取輸入,如此我們的程式就不用事先指定輸入的筆數,可以不斷讀取輸入並執行直到輸入結束。
程式碼:C語言
1 |
|