鬱金香一朵50元、香水百合一朵10元、白玫瑰一朵5元、滿天星一朵1元,現王先生有一筆金額N (0<100) ,請設計一程式,計算出此金額若全部用完,能買到的花朵數。(買到的花朵數必須為最少,花朵數若非最少,則本題算錯,零分計算。)
輸入說明:輸入金額n。
輸入範例:假定王 先生有 78元。實際輸入之檔案內容如下:
實際輸入:78
輸出說明:第一列為花朵總數。第二列到第五列分別為鬱金香、香水百合、白玫瑰、滿天星的花朵數。
輸出範例:上例中王 先生有 78元,能買到最少的花朵數分別為鬱金香1朵、香水百合2朵白、玫瑰1朵、滿天星3朵。實際輸出之檔案內容如下:
實際輸出:
7
1
2
1
3
Private Sub Form_Load()
回覆刪除Me.Hide
Open App.Path & "\in.txt" For Input As #1
Open App.Path & "\out.txt" For Output As #2
Input #1, m
ans = 0
a = 0
b = 0
c = 0
d = 0
Do
If m >= 50 Then m = m - 50: ans = ans + 1: a = a + 1
If m < 50 And m >= 10 Then m = m - 10: ans = ans + 1: b = b + 1
If m < 10 And m >= 5 And m < 50 Then m = m - 5: ans = ans + 1: c = c + 1
If m < 10 And m >= 1 And m < 50 And m < 5 Then m = m - 1: ans = ans + 1: d = d + 1
Loop Until m = 0
Print #2, ans
Print #2, a
Print #2, b
Print #2, c
Print #2, d
Close
Close
End
End Sub
小冰好,
回覆刪除程式正確。
你只用一個do loop來做,如果用3個do loop來做,會看起來清楚些。
do while m>=50
m = m-50
a = a +1
loop
其它省略。
***
但是,其實,這題直接用數學的解法,會更直接。
a = m \50
m = m mod 50
b = m \10
m = m mod 10
c = m \5
d = m mod 5
就完成了。
Private Sub Form_Load()
回覆刪除Open App.Path & "\in.txt" For Input As #1
Open App.Path & "\out.txt" For Output As #2
Dim x, a, b, c, d As Integer
Input #1, n
a = n \ 50
n = n - (a * 50)
b = n \ 10
n = n - (b * 10)
c = n \ 5
n = n - (c * 5)
d = n
x = a + b + c + d
Print #2, x
Print #2, a
Print #2, b
Print #2, c
Print #2, d
Close
Close
End Sub
Private Sub Form_Load()
回覆刪除Me.Hide
Open App.Path & "\in.txt" For Input As #1
Open App.Path & "\out.txt" For Output As #2
Input #1, n
a = 0: b = 0: c = 0: d = 0
Do
n = n - 50
a = a + 1
Loop Until n < 50
Do
n = n - 10
b = b + 1
Loop Until n < 10
Do
n = n - 5
c = c + 1
Loop Until n < 5
d = n
Print #2, a + b + c + d
Print #2, a
Print #2, b
Print #2, c
Print #2, d
Close #2
Close #1
End
End Sub
晟晟好,
回覆刪除你的程式是正確的。
暑假是你加油的時候哦。
哲好,
你的程式是錯的。
你的迴圈是「後測式迴圈」,也就是至少執行一次的。
也就是說,你的abc那些數字,至少都是1。
而改正的方法,超簡單,只要將迴圈條件放到前面就對了。
do until n<50
...
loop
暑假剛開始,程式隊的3個隊員,熊掌為你們加油哦。
而且,你們的學長arro和佑,都上了國立學校哦,為他們加油,
也是告訴你們,成為隊員努力是有前途的。
熊掌
Dim a(1 To 4), b(4) As Integer
回覆刪除Private Sub Form_Load()
Me.Hide
a(1) = 50: a(2) = 10: a(3) = 5: a(4) = 1
Open App.Path & "\in.txt" For Input As #1
Open App.Path & "\out.txt" For Output As #2
Input #1, x
For i = 1 To 4
Do
If Val(x) >= a(i) Then
b(i) = b(i) + 1
x = Val(x) - a(i)
Else
Exit Do
End If
Loop
ans = ans + b(i)
Next i
Print #2, ans
For i = 1 To 4
Print #2, b(i)
Next i
Close #2
Close #1
End
End Sub