Transcript 二進位轉十進位
程式設計-使用Visual Basic 2010
第12章
綜合應用
綜合應用
本章為整合迴圈、條件判斷與陣列的實例
二進位轉十進位
十進位轉二進位
完全數(PerfectNumber)
阿姆斯壯數(Armstrong number)
二進位轉十進位
日常生活中貨幣轉換屬於十進位,亦即9元加上1元等
於10元,9加上1進位變成10,逢十就進位,這是所謂
的十進位。
而電腦屬於二進位系統,所有文字、圖片、音樂與影
片的儲存都是屬於二進位資料,所謂二進位資料為僅
由0與1所組成,進位原理如下:(001)2加上1,進位變
成(010)2,(010)2加上1,進位變成(011)2,(011)2加上
1,進位變成(100)2,逢二就進位。
二進位轉十進位(
ch12\二進位轉十進位\)
預覽結果
輸入二進位值,點選「二進位轉十進位」,則顯示轉換後的十
進位數值於下方文字方塊。
二進位轉十進位(
ch12\二進位轉十進位\)
表單配置
在表單中新增兩個TextBox,
兩個Label與一個Button。
屬性設定
物件
Label1
Label2
Button1
屬性
Text
Text
Text
設定值
請輸入二進位數值
轉成十進位為
二進位轉十進位
二進位轉十進位(
ch12\二進位轉十進位\)
程式碼新增與解說
點選「二進位轉十進位」按鈕,新增程式碼在Button1_Click函
式中,如下方程式區塊。
行號 程式碼
1 Public Class Form1
2
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
3
Dim length As Integer = Len(TextBox1.Text)
4
Dim num As Integer
5
Dim sum As Integer = 0
6
For i As Integer = 1 To length
7
num = Val(Mid(TextBox1.Text, i, 1))
8
sum = sum + num * 2 ^ (length - i)
9
Next
10
TextBox2.Text = sum
11
End Sub
12 End Class
二進位轉十進位(
ch12\二進位轉十進位\)
解說
第3行:宣告整數變數length的值為TextBox1所輸入字串的長
度。
第4行:宣告整數變數num。
第5行:宣告整數變數sum,並初始化為0。
第6到9行:使用For迴圈,迴圈變數i變化由1到變數length,使
用Mid函式切割TextBox1所輸入字串,經由i值變化,由左到右
每次取一個字元,再使用Val函式將字元轉成數值儲存入變數
num(第7行),變數sum用於暫存變數num乘以該數值所對應的
權值(第8行),計算過程如下張投影片。
二進位轉十進位(
ch12\二進位轉十進位\)
十進位轉二進位
第12-1節介紹「二進位轉十進位」的原理,而「十進
位轉二進位」是「二進位轉十進位」的逆向,「二進
位轉十進位」使用乘法計算,而「十進位轉二進位」
使用除法。其原理舉例介紹如下。
十進位轉二進位
想法:將數值除以2,求得餘數與商,商再除以2求得
餘數與商,直到商為1為止,再將最後的商為1,餘數
最後求出的先寫,倒過來順序寫出。
十進位轉二進位(
ch12\十進位轉二進位\)
預覽結果
輸入十進位值,點選「十進位轉二進位」,則顯示轉換後的二
進位數值於下方文字方塊。
十進位轉二進位(
ch12\十進位轉二進位\)
表單配置
在表單中新增兩個TextBox、
兩個Label與一個Button。
屬性設定
物件 屬性
Label1 Text
Label2 Text
Button1 Text
設定值
請輸入十進位數值
轉成二進位數值為
十進位轉二進位
十進位轉二進位(
ch12\十進位轉二進位\)
程式碼新增與解說
點選「十進位轉二進位」按鈕,新增程式碼在Button1_Click函
式中,如下方程式區塊。
行號 程式碼
1 Public Class Form1
2
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
3
Dim quo As Integer = Val(TextBox1.Text)
4
Dim rmd As Integer
5
While (quo > 1)
6
rmd = quo Mod 2
7
TextBox2.Text = TextBox2.Text & rmd
8
quo = Int(quo / 2)
9
End While
10
TextBox2.Text = TextBox2.Text & quo
11
TextBox2.Text = StrReverse(TextBox2.Text)
12
End Sub
13 End Class
十進位轉二進位(
ch12\十進位轉二進位\)
解說
第3行:宣告整數變數quo的值為TextBox1所輸入的數值。
第4行:宣告整數變數rmd。
第5到9行:當整數變數quo大於1,繼續迴圈表示可以繼續除以2,
整數變數rmd等於變數quo除以2後的餘數(第6行),將變數rmd串
接在TextBox2中(第7行),變數quo除以2後取整數(第8行)。
第10行:變數quo串接在TextBox2中。
第11行:反轉TextBox2得到結果。
十進位轉二進位(
ch12\十進位轉二進位\)
完全數(Perfect Number)(
ch12\完全數\)
完全數為一數所有因數(不含自己)的總和等於該數,
例如:6的因數有1、2、3、6,「1+2+3=6」,所以6
為完全數。寫一程式找出2到1000的所有完全數。
想法:外層迴圈變數i變化由2到1000,內層迴圈變數j
變化由1到外層迴圈變數i減1(i-1),測試每一個變數j是
否可以整除i,將可以整除的j值累加,所得加總j值檢
查是否等於變數i,若相等,變數i就為完全數,將i值
印出。當所有i值(2到1000)皆檢查過,就可找出2到
1000的所有完全數。
完全數(Perfect Number)(
ch12\完全數\)
預覽結果
點選「找出1到1000的所有完全數」,則顯示完全數於下方文字
方塊。
完全數(Perfect Number)(
表單配置
在表單中新增一個TextBox
與一個Button。
屬性設定
物件
TextBox1
TextBox1
TextBox1
屬性
Multiline
ScrollBars
Size
Button1
Text
設定值
True
Both
270,200
找出 1到1000的
所有完全數
ch12\完全數\)
完全數(Perfect Number)(
ch12\完全數\)
程式碼新增與解說
點選「找出1到1000的所有完全數」按鈕,新增程式碼在
Button1_Click函式中,如下方程式區塊。
行號 程式碼
1 Public Class Form1
2
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
3
For i As Integer = 2 To 1000
4
Dim sum As Integer = 0
5
For j As Integer = 1 To i - 1
6
If (i Mod j) = 0 Then
7
sum = sum + j
8
End If
9
Next
10
If sum = i Then
11
TextBox1.Text = TextBox1.Text & i & "為°完全數" & vbNewLine
12
End If
13
Next
14
End Sub
15 End Class
完全數(Perfect Number)(
ch12\完全數\)
解說
第3到13行:外層迴圈變數i變化由2到1000。
第4行:宣告整數變數sum,每次進入外層迴圈時初始化為0。
第5到9行:內層迴圈變數j變化由1到(i-1)。檢查j是否整除i,若
是,將j加入sum中(第6到8行)。
第10到12行:若變數sum值等於變數i值,則i值為完全數,顯示
於TextBox1。
完全數(Perfect Number)(
ch12\完全數\)
阿姆斯壯數(Armstrong number)
(
ch12\阿姆斯壯數\)
n位數中每個位數取n次方相加等於該數,該數稱為阿
姆斯壯數(Arms t rongnumber),例如:153為阿姆斯
壯數,因為13+53+33=1+125+27=153。寫一程式求
100到999的所有阿姆斯壯數。
想法:迴圈變數i變化由100到999,取i值的每一個位
數,分別相加,判斷相加結果是否等於i值。
阿姆斯壯數(Armstrong number)
(
ch12\阿姆斯壯數\)
預覽結果
點選「找出阿姆斯壯數」,
則顯示阿姆斯壯數於下方文字方塊。
表單配置
在表單中新增一個TextBox與一個Button。
阿姆斯壯數(Armstrong number)
(
ch12\阿姆斯壯數\)
屬性設定
物件
屬性
設定值
TextBox1 Multiline True
TextBox1 ScrollBars Both
TextBox1 Size
270,200
Button1 Text
找出阿姆斯壯數
阿姆斯壯數(Armstrong number)
(
ch12\阿姆斯壯數\)
程式碼新增與解說
點選「找出阿姆斯壯數」按鈕,新增程式碼在Button1_Click函
式中,如下方程式區塊。
行號 程式碼
1
2
3
4
5
6
7
8
9
10
11
12
13
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
For i As Integer = 100 To 999
Dim a As Integer = Int(i / 100)
Dim b As Integer = Int((i Mod 100) / 10)
Dim c As Integer = Int(i Mod 10)
Dim sum As Integer = a ^ 3 + b ^ 3 + c ^ 3
If i = sum Then
TextBox1.Text = TextBox1.Text & i & "為阿姆斯壯數" & vbNewLine
End If
Next
End Sub
End Class
阿姆斯壯數(Armstrong number)
(
ch12\阿姆斯壯數\)
解說
第3到11行:迴圈變數i變化由100到999。
第4行:宣告整數變數a,以Int(i / 100)求i值的百位數儲存入a。
第5行:宣告整數變數b,以Int(i mod 100 / 10)求i值的十位數儲存
入b。
第6行:宣告整數變數c,以Int(i mod 10)求i值的個位數儲存入c。
第7行:變數sum為a的三次方、b的三次方與c的三次方之和。
第8到10行:若變數sum值等於變數i值,則i值為阿姆斯壯數,顯示
於TextBox1。