內容 :
有 1 個 bit,可以表示 0 與 1。
有 2 個 bit,可以表示 00,01,10,11。
有 n 個 bit,請產生所有 n 個 bit 所能表示的 2 進位數字。
有 2 個 bit,可以表示 00,01,10,11。
有 n 個 bit,請產生所有 n 個 bit 所能表示的 2 進位數字。
輸入說明 :
每行一個數字 n ( 0 < n < 15 )
代表 n 個bit
代表 n 個bit
輸出說明 :
請參考範例輸出
範例輸入 :
1
2
範例輸出 :
0
1
00
01
10
11
提示 :
字串是你的好朋友
Private Sub Form_Load()
回覆刪除Me.Hide
Open App.Path & "\in.txt" For Input As #1
Open App.Path & "\out.txt" For Output As #2
Do While Not EOF(1)
Input #1, N
Call ABC(N, "", "")
Loop
Close #2
Close #1
End
End Sub
Sub ABC(A, B, C)
If A = Len(B) Then
Print #2, B
Else
For i = 0 To 1
Call ABC(A, B & i, C)
Next i
End If
End Sub
有遞迴就簡單了:D
-----------------------
in.txt
1
2
3
-----------------------
out.txt
0
1
00
01
10
11
000
001
010
011
100
101
110
111
Private Sub Form_Load()
回覆刪除Me.Hide
Open App.Path & "\in.txt" For Input As #1
Open App.Path & "\out.txt" For Output As #2
Do While Not EOF(1)
Input #1, n
Call func(n, "")
Loop
Close
Close
End
End Sub
Sub func(a, s)
If Len(s) = a Then
Print #2, s
Else
For i = 0 To 1
Call func(a, s & i)
Next
End If
End Sub
////////////////////
輸入
4
5
6
輸出
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
00000
00001
00010
00011
00100
00101
00110
00111
01000
01001
01010
01011
01100
01101
01110
01111
10000
10001
10010
10011
10100
10101
10110
10111
11000
11001
11010
11011
11100
11101
11110
11111
000000
000001
000010
000011
000100
000101
000110
000111
001000
001001
001010
001011
001100
001101
001110
001111
010000
010001
010010
010011
010100
010101
010110
010111
011000
011001
011010
011011
011100
011101
011110
011111
100000
100001
100010
100011
100100
100101
100110
100111
101000
101001
101010
101011
101100
101101
101110
101111
110000
110001
110010
110011
110100
110101
110110
110111
111000
111001
111010
111011
111100
111101
111110
111111
Private Sub Form_Load()
回覆刪除Me.Hide
Open App.Path & "\out.txt" For Output As #2
Open App.Path & "\in.txt" For Input As #1
Do Until EOF(1)
Input #1, n
Call c("", n)
Loop
Close #1
Close #2
End
End Sub
Sub c(a1, b1)
If Len(a1) = b1 Then
Print #2, a1
Else
For i = 0 To 1
Call c(a1 & i, b1)
Next
End If
End Sub
--------------------
in.txt
1
2
3
--------------------
out.txt
0
1
00
01
10
11
000
001
010
011
100
101
110
111
佑, arro,緣尉好,
回覆刪除3個人都是用遞迴解了,很好,也都正確。
但是,再想一想,如果沒有用遞迴,又該如何去解呢?
10轉2的解析
回覆刪除http://e-service.puiching.edu.mo/digital/images/IMG_1623.JPG
易懂
Private Sub Form_Load()
Me.Hide
Open App.Path & "\in.txt" For Input As #1
Open App.Path & "\out.txt" For Output As #2
Do While Not EOF(1)
Input #1, N
For i = 0 To (2 ^ N - 1)
ans = ten_to_two(i)
If i = 0 Then
For j = 1 To (N - 1)
ans = ans & "0"
Next j
End If
If Len(ans) = N Then Print #2, ans
Next i
Loop
Close #2
Close #1
End
End Sub
Function ten_to_two(ByVal A)
ans = ""
Do
X = A Mod 2
If X = 0 Then ans = "0" & ans Else ans = "1" & ans
A = A \ 2
Loop Until A = 0
ten_to_two = ans
End Function
in.txt
3
4
5
6
7
--------------------
out.txt
000
100
101
110
111
0000
1000
1001
1010
1011
1100
1101
1110
1111
00000
10000
10001
10010
10011
10100
10101
10110
10111
11000
11001
11010
11011
11100
11101
11110
11111
000000
100000
100001
100010
100011
100100
100101
100110
100111
101000
101001
101010
101011
101100
101101
101110
101111
110000
110001
110010
110011
110100
110101
110110
110111
111000
111001
111010
111011
111100
111101
111110
111111
0000000
1000000
1000001
1000010
1000011
1000100
1000101
1000110
1000111
1001000
1001001
1001010
1001011
1001100
1001101
1001110
1001111
1010000
1010001
1010010
1010011
1010100
1010101
1010110
1010111
1011000
1011001
1011010
1011011
1011100
1011101
1011110
1011111
1100000
1100001
1100010
1100011
1100100
1100101
1100110
1100111
1101000
1101001
1101010
1101011
1101100
1101101
1101110
1101111
1110000
1110001
1110010
1110011
1110100
1110101
1110110
1110111
1111000
1111001
1111010
1111011
1111100
1111101
1111110
1111111
10→2 10→8 10→16
回覆刪除http://content.edu.tw/vocation/data_processing/ks_ct/ch3/3-2.htm
Private Sub Form_Load()
回覆刪除Me.Hide
Open App.Path & "\in.txt" For Input As #1
Open App.Path & "\out.txt" For Output As #2
Do Until EOF(1)
Input #1, n, m
ans = t2(n)
Print #2, n & " 的 10 進位轉成 2 進位,為 " & ans
ans = t8(n)
Print #2, n & " 的 10 進位轉成 8 進位,為 " & ans
ans = t16(n)
Print #2, n & " 的 10 進位轉成 16 進位,為 " & ans
ans = t(n, m)
Print #2, n & " 的 10 進位轉成 " & m & " 進位,為 " & ans
Print #2, "----------------------"
Loop
Close #1
Close #2
End
End Sub
Function t2(ByVal a1)
Do
remd1 = a1 Mod 2
an1 = remd1 & an1
If a1 \ 2 = 0 Then Exit Do
a1 = a1 \ 2
Loop
t2 = an1
End Function
Function t8(ByVal a2)
Do
remd2 = a2 Mod 8
an2 = remd2 & an2
If a2 \ 8 = 0 Then Exit Do
a2 = a2 \ 8
Loop
t8 = an2
End Function
Function t16(ByVal a3)
e3 = Split("A B C D E F")
Do
remd3 = a3 Mod 16
If remd3 > 9 Then remd3 = e3(remd3 - 10)
an3 = remd3 & an3
If a3 \ 16 = 0 Then Exit Do
a3 = a3 \ 16
Loop
t16 = an3
End Function
Function t(ByVal a4, ByVal b4)
e4 = Split("0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z")
Do
remd4 = a4 Mod b4
an4 = e4(remd4) & an4
a4 = a4 \ b4
Loop Until a4 = 0
t = an4
End Function
--------------------------
in.txt
105 2
10985 16
--------------------------
out.txt
105 的 10 進位轉成 2 進位,為 1101001
105 的 10 進位轉成 8 進位,為 151
105 的 10 進位轉成 16 進位,為 69
105 的 10 進位轉成 2 進位,為 1101001
----------------------
10985 的 10 進位轉成 2 進位,為 10101011101001
10985 的 10 進位轉成 8 進位,為 25351
10985 的 10 進位轉成 16 進位,為 2AE9
10985 的 10 進位轉成 16 進位,為 2AE9
----------------------
緣尉好,
回覆刪除程式ok,雖然累了一些。