二進位轉十進位

Download Report

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。