內容 : 正體->简体
考試成績出爐了,大家開始討論自己的分數高低
一個接著一個參與討論,新加入的那個人,想要知道自己目前排名是多少
但是太多人了,導致沒辦法一時得到他的排名
大家開始請求小光這個答案,
不過小光非常討厭排名,一點都不想幫忙
現在就交給你了
一個接著一個參與討論,新加入的那個人,想要知道自己目前排名是多少
但是太多人了,導致沒辦法一時得到他的排名
大家開始請求小光這個答案,
不過小光非常討厭排名,一點都不想幫忙
現在就交給你了
輸入說明 :
每組輸入的第一行有一個數字N(1≦N≦10,0000),
代表接下來會有N個人陸續與討論,接下來會有N行,
代表接下來陸續加入的人的成績M, (1≦M≦N)
而且每個人的成績都不會重複
代表接下來會有N個人陸續與討論,接下來會有N行,
代表接下來陸續加入的人的成績M, (1≦M≦N)
而且每個人的成績都不會重複
輸出說明 :
對於已經知道的成績,請陸續對每個加入的輸出他的排名
範例輸入 :
6
1
5
6
3
4
2
範例輸出 :
1
1
1
3
3
5
Dim ans As Long, x(100000) As Long
回覆刪除Private Sub Form_Load()
Me.Hide
Open App.Path & "\in.txt" For Input As #1
Input #1, tt
For i = 1 To tt
Input #1, x(i)
Next i
Close #1
Open App.Path & "\out.txt" For Output As #1
For i = 1 To tt
ans = 1
For j = 1 To i
If x(i) < x(j) Then ans = ans + 1
Next j
Print #1, ans
Next i
Close #1
End
End Sub
BY 小白
小白好,
回覆刪除1.程式OK。
2.不過,這樣的題目,原意是要讓程式設計者用「插入排序」的方式來解的。
你們學過,氣泡排序,選擇排序,而插入排序尤其適合外部排序資料,可以重新寫寫這題,用插入排序的方式。
Dim darr(1000) As Integer
回覆刪除Private Sub Form_Load()
Open App.Path & "\in.txt" For Input As #1
Open App.Path & "\out.txt" For Output As #2
Input #1, o
For j = 1 To o
Input #1, x
k = k + 1
darr(k) = x
For i = 1 To k - 1
If darr(i) > darr(k) Then
st = darr(i)
darr(i) = darr(k)
darr(k) = st
End If
Next i
Next j
For l = 1 To 10
Print #2, darr(l)
Next l
Close #1
Close #2
End Sub
BY 阿揚
阿揚好,
回覆刪除1.不要用o或O,i/I,l/L當變數,害死自己。
2.你的範圍到底在那兒呢?
10,0000? 1000?10?
3.所以,這題是錯的吧。要多小心些。