計算機概論是一門令人又愛又恨的科目,它的內容可謂包羅萬象。遇到考試時,事前需要花很多時間準備,才能拿到高分。在學習的內容中,有個章節是數字系統轉換,內容是將一個十進位的數字,轉換成二進位的數字。現在請你設計一個程式,計算由十進位數字轉換的二進位數字中,位元等於1 的個數。
輸入說明
第一行的數字,代表有幾個十進位的數字。第二行開始的每一行,為一個十進位數字,
其範圍為[0, 2147483647]的整數。
輸出說明:
對輸入的十進位數字,以一行分別輸出轉換成二位進數字中,位元等於1 的個數。
輸入範例:
2
1027
65535
輸出範例:
3
16
作者已經移除這則留言。
回覆刪除Private Sub Form_Load()
回覆刪除Open App.Path & "\in.txt" For Input As #1
Open App.Path & "\out.txt" For Output As #2
Input #1, n
For i = 1 To n
Input #1, x
ans = 0
Do Until x = 0
ans = ans + x Mod 2
x = x \ 2
Loop
Print #2, ans
Next i
Close #1
Close #2
End Sub
Private Sub Form_Load()
回覆刪除Dim qq(30) As Integer
Dim y As Long
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 x
ans = 0
Input #1, y
Do
temp = y Mod 2
If temp = 1 Then ans = ans + 1
y = y \ 2
Loop Until y < 1
Print #2, ans
Next i
Close #1
Close #2
End Sub
網誌管理員已經移除這則留言。
回覆刪除Y揚、阿瑋好,
回覆刪除你們的程式都ok,程式要丟出來之前,還是要多檢查,儘量不要一po再po,然後再刪,比賽時,最可怕的就是明明會,出了個小錯誤,而沒看到。一年的努力,(不只你們哦,還有"我"),都可惜了哦。
從平常練習就注意這些小細節吧。
另外,Y揚,你的程式中
If temp = 1 Then ans = ans + 1
這行改像阿瑋那樣比較好吧,反正不是0就是1,少個判斷,直接加了吧。
Private Sub Form_Load()
回覆刪除Open App.Path & "\in.txt" For Input As #1
Open App.Path & "\out.txt" For Output As #2
Input #1, qqq
For i = 1 To qqq
Input #1, x
ans = 0
Do
ans = ans + x Mod 2
x = x \ 2
Loop Until x = 0
Print ans
Next i
Close #2
Close #1
End Sub
Open "test5.txt" For Input As #1
回覆刪除Input #1, q
Do While Not EOF(1)
Input #1, k
Do Until k = 1
m = k Mod 2
k = k \ 2
j = j + m
Loop
j = j + 1
Open "result5.txt" For Append As #2
Write #2, j
Close #2
j = 0
Loop
Close #1