2012年1月22日 星期日

計算位元為1 的個數

計算機概論是一門令人又愛又恨的科目,它的內容可謂包羅萬象。遇到考試時,事前需
要花很多時間準備,才能拿到高分。在學習的內容中,有個章節是數字系統轉換,內容是將
一個十進位的數字,轉換成二進位的數字。現在請你設計一個程式,計算由十進位數字轉換
的二進位數字中,位元等於1 的個數。

輸入說明:
第一行的數字,代表有幾個十進位的數字。第二行開始的每一行,為一個十進位數字,
其範圍為[0, 2147483647]的整數。

輸出說明:
對輸入的十進位數字,以一行分別輸出轉換成二位進數字中,位元等於1 的個數。

輸入範例:
2
1027
65535

輸出範例:
3
16

6 則留言:

  1. 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, x
    For i = 1 To x
    ans = 0
    Input #1, y
    Do Until y = 0
    c = y Mod 2
    y = y \ 2
    ans = ans + c
    Loop
    Print #2, ans
    Next
    Close
    Close
    End
    End Sub

    回覆刪除
  2. 小冰好,
    這題正確。
    另外的幾個隊員呢?call 他們一塊兒作哦。

    回覆刪除
  3. 可能都在忙吧,所以就都沒有時間做。
    我會在跟他們問一下的。

    回覆刪除
  4. 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
    For i = 1 To n
    ans = 0
    Input #1, X
    A: s = X Mod 2
    X = X \ 2
    ans = ans + s
    If X > 0 Then GoTo A:
    Print #2, ans
    Next i
    Close #2
    Close #1
    End
    End Sub

    回覆刪除
  5. 晟晟好,
    很高興看到你。
    程式正確。
    用goto的方式,也可以,程式比較容易有錯找不出來就是了。

    回覆刪除
  6. 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
    ans = 0
    Input #1, x
    c = 0
    Do Until x = 0
    c = x Mod 2
    x = x \ 2
    ans = ans + c
    Loop
    Print #2, ans
    Next i
    Close #2
    Close #1
    End
    End Sub

    回覆刪除