Tải bản đầy đủ (.pdf) (9 trang)

Một Số Bài Tập Vòng Lặp trong Visual Basic 6.0 (có hướng dẫn giải)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (281.71 KB, 9 trang )

Bài t p c n b n Visual Basic.Net – Vòng l p
1. Tính n!
Ví d : 5!= 1 * 2 * 3 * 4 * 5 = 120
Thi t k form theo m u ho c t thi t k theo ý thích. Chú ý n u đ t tên các control khác v i hình bên d
c n s a l i code cho phù h p.

i thì

txtn
txtKetqua

btnTinh

Doube click vào nút btnTinh và nh p đo n code nh sau:
Private Sub btnTinh_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnTinh.Click
Dim n, tong, i As Integer
n = Val(txtn.Text)
tong = 1
For i = 2 To n
tong = tong * i
Next
txtKetqua.Text = tong
End Sub
L u ý: Vì ki u d li u ta dùng ki u String, ch có th l u tr các giá tr trong kho ng -/+2,147,483,618, do đó
n u nh p n quá l n s phát sinh l i. Ch ch y th v i n nh ho c đ i ki u d li u c a bi n tong sang ki u d li u
khác đ có s c ch a l n h n.
2.Tính t ng S=1+2+3+…+n
Thi t k form c ng t ng t nh trên. Double click nút btnTinh và nh p đo n code sau:

txtn


txtKetqua

btnTinh

Private Sub btnTinh_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnTinh.Click
Dim n, tong, i As Integer
n = Val(txtn.Text)
tong = 0
For i = 1 To n
tong = tong + i
Next
txtKetqua.Text = tong
End Sub

Trang 1


Bài t p c n b n Visual Basic.Net – Vòng l p
3a. Xu t dãy Fibonaci bé h n n
Dãy Fibonaci có d ng nh sau:
1
1
2
3

5

8


13

21

34

55

89

Hai ph n t đ u tiên là 1 và 1. T ph n t th ba tr đi, ph n t sau s b ng t ng c a 2 ph n t tr
Ví d : 2= 1 + 1
3=1+2
5=2+3
8=5+5



c nó.

Thi t k giao di n:

txtn
txtKetqua
btnXuat

Double click vào nút Xu t dãy s và nh p vào đo n code sau:
Private Sub btnXuat_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnXuat.Click
Dim a, b, c, n As Integer

Dim s As String
'Bien chuoi s dung chua chuoi so Fibonaci
c = 0
'Gan 2 gia tri dau tien cho a va b
a = 1
b = 1
'Noi 2 gia tri dau tien vao chuoi so Fibonaci
s = a & " " & b
n = Val(txtn.Text)
While (a + b < n)
c = a + b
a = b
b = c
s = s & " " & c
End While
txtKetqua.Text = s
End Sub
3b. Ki m tra n có ph i s nguyên t hay không
S nguyên t là s ch chia h t cho 1 và cho chính nó.
Ví d : 2, 3, 5, 7, 11, 13, 17... là các s nguyên t
Thu t toán:
Gi s c n ki m tra s n.
N u n=1 thì n không ph i s nguyên t .
N u n=2 thì k t lu n n là s nguyên t .
N u n>2: Kh i t o 1 bi n i ch y t 2 đ n c n b c 2 c a n. N u có 1 s nào đó mà n chia h t cho nó (t c n Mod
i=0) thì k t lu n n không ph i là s nguyên t và thoát vòng l p.

Trang 2



Bài t p c n b n Visual Basic.Net – Vòng l p

txtn
txtKetqua
btnKiemtra

Double nút btnKiemtra và nh p code nh sau:
Private Sub btnKiemtra_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnKiemtra.Click
Dim n As Integer, i As Integer
Dim blKiemtra As Boolean = True
n = Val(txtn.Text)
If n = 1 Then
blKiemtra = False
ElseIf n = 2 Then
blKiemtra = True
Else
For i = 2 To Int(Math.Sqrt(n))
If (n Mod i = 0) Then
blKiemtra = False
Exit For
End If
Next
End If
If blKiemtra = True Then
txtKetqua.Text = n & " là s nguyên t "
Else
txtKetqua.Text = n & " không ph i là s nguyên t "
End If
End Sub

3c. Ki m tra n có ph i s hoàn h o
S hoàn h o là s b ng t ng các c s c a nó.
Ví d : 6 là s hoàn h o vì các t ng các c s c a nó là 1 + 2 + 3 = 6
Gi i thu t:
Cho bi n i ch y t 1 đ n n-1, n u (n Mod i=0), ngh a là i là c c a n thì c ng i vào bi n tong: tong=tong+i
So sánh bi n tong v i n: n u tong=n thì n là s hoàn h o. Ng c l i n không ph i s hoàn h o.

txtn
txtKetqua
btnKiemtra

Trang 3


Bài t p c n b n Visual Basic.Net – Vòng l p
Double nút btnKiemtra và nh p đo n code sau:
Private Sub btnKiemtra_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnKiemtra.Click
Dim tong, n, i As Integer
n = Val(txtn.Text)
'Bien tong dung chua tong cac uoc so
tong = 0
For i = 1 To n - 1
If (n Mod i = 0) Then
tong = tong + i
End If
Next
If tong = n Then
txtKetqua.Text = n & " là s hoàn h o"
Else

txtKetqua.Text = n & " không ph i s hoàn h o"
End If
End Sub
3d. Ki m tra n có ph i là s chính ph ng
S chính ph ng là s mà c n b c 2 c a nó là 1 s nguyên. (Nó là bình ph ng c a 1 s nguyên)
Ví d : 4, 9, 16, 25 là các s chính ph ng vì 4=22, 9=32, 16=42, 15=52
ki m tra 1 s có ph i s chính ph ng. Ta s khai báo 1 bi n i ki u Integer và gán i=c n b c 2 c a n. Do là
ki u nguyên nên i s ch nh n ph n nguyên c a phép l y c n. Sau đó so sánh i*i v i n, n u i*i= n thì n là s
chính ph ng.
Ví d : n=9, i=Math.Sqrt(9)=3, 3*3=9, 9 là s chính ph ng
n=10, i=Math.Sqrt(10)=3.162278=3, 3*3=9 khác 10, v y 10 không ph i s chính ph ng.
Thi t k giao di n

txtn
txtKetqua
btnKiemtra

Code cho nút btnKiemtra nh sau:
Private Sub btnKiemtra_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnKiemtra.Click
Dim i, n As Integer
Dim blKiemtra As Boolean
n = Val(txtn.Text)
i = Math.Sqrt(n)
If i * i = n Then
blKiemtra = True
Else
blKiemtra = False
End If
If blKiemtra = True Then

txtKetqua.Text = n & " là s chính ph ng"
Else
txtKetqua.Text = n & " không ph i s chính ph
End If
End Sub

Trang 4

ng"


Bài t p c n b n Visual Basic.Net – Vòng l p
4. Li t kê các s textbox có th hi n th nhi u dòng, ta c n ch nh thu c tính Multiline c a textbox là True.

Gi i thu t:
T o 1 chu i s dùng l u tr dãy s
T o 1 bi n dem dùng l u tr s ch s th a đi u ki n đã tìm đ c
Dùng vòng l p cho bi n i ch y t 1 đ n n-1
N u i mod 3=0 thì
N i thêm i vào chu i s
T ng bi n dem lên 1: dem=dem+1
Ki m tra n u dem=5 thì thêm kí t xu ng dòng vào sau chu i s: vbNewLine và reset bi n dem
v 0: dem=0
Thi t k giao di n:

Trang 5


Bài t p c n b n Visual Basic.Net – Vòng l p


txtn

txtKetqua

btnXuat

Code c a nút btnXuat nh sau:
Private Sub btnXuat_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnXuat.Click
Dim n, i, dem As Integer
Dim s As String
n = Val(txtn.Text)
s = ""
For i = 1 To n - 1
If (i Mod 3 = 0) Then
s = s & " " & i
dem = dem + 1
If dem = 5 Then
s = s & vbNewLine
dem = 0
End If
End If
Next
txtKetqua.Text = s
End Sub

5. Tìm

c chung l n nh t 2 s a và b


txtA
txtB
txtKetqua
btnTim

Code c a nút btnTim:

Trang 6


Bài t p c n b n Visual Basic.Net – Vòng l p
Private Sub btnTim_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles btnTim.Click
Dim a, b, uocchung As Integer
a = Val(txtA.Text)
b = Val(txtB.Text)
While (a <> b)
If a > b Then
a = a - b
Else
b = b - a
End If
End While
uocchung = a
'Hoac uocchung=b cung dung
txtKetqua.Text = uocchung
End Sub

6. Nh p m ng, xu t m ng, tính t ng c a m ng, tìm max, tìm min

(Cách th c hi n có thay đ i chút ít so v i yêu c u c a đ bài đ thích h p v i môi tr ng VB.Net: các ph n t
c a m ng s đ c nh p vào b ng InputBox và xu t k t qu ra textbox, thay vì làm vi c trên màn hình đen và
xu t k t qu ra màn hình nh trên C++)
Giao di n ch

ng trình s nh sau:

btnNhapmang

txtTong
txtMax
txtMax

Sau khi nh p s ph n t và nh n nút Nh p m ng, ch

Sau khi nh p đ s ph n t , ch

ng trình s yêu c u nh p t ng ph n t :

ng trình s in các k t qu vào các textbox

Code c a nút Nh p m ng nh sau:

Trang 7


Bài t p c n b n Visual Basic.Net – Vòng l p
Private Sub btnNhapmang_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnNhapmang.Click
Dim sopt, tong, max, min, i, mang() As Integer

Dim s As String
sopt = Val(txtSopt.Text)
'O tren ta khai bao mang nhung chua khai bao so phan tu
'cau lenh nay kahi bao lai mang voi so phan tu vua duoc nhap
ReDim mang(sopt)
'Nhap mang bang InputBox
For i = 0 To sopt - 1
mang(i) = InputBox("Nh p ph n t
Next
'In mang ra textbox
s = ""
For i = 0 To sopt - 1
s = s & mang(i) & "
Next
txtMangdanhap.Text = s

th

" & i & ":", "Nh p m ng")

"

'Tinh tong cua mang va in ra textbox
tong = 0
For i = 0 To sopt - 1
tong = tong + mang(i)
Next
txtTong.Text = tong
'Tim max
max = mang(0)

For i = 1 To sopt - 1
If max < mang(i) Then max = mang(i)
Next
txtMax.Text = max
'Tim min
min = mang(0)
For i = 1 To sopt - 1
If min > mang(i) Then min = mang(i)
Next
txtMin.Text = min
End Sub
7. Nh p 1 s và in s đ o ng c
Ví d : 123 s in thành 321
H ng d n: ta s áp d ng toán t Mod dùng đ l y ph n d (123 Mod 10=3) và toán t “\” dùng l y ph n
nguyên c a phép chia (123\10=12)

txtN

txtIn
txtSodaonguoc

Trang 8


Bài t p c n b n Visual Basic.Net – Vòng l p
Code c a nút In s đ o ng

c:

Private Sub btnIn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

Handles btnIn.Click
Dim n As Integer
Dim s As String
n = Val(txtN.Text)
s = ""
Do
s = s & (n Mod 10)
n = n \ 10
Loop While (n)
txtSodaonguoc.Text = s
End Sub
Cách trên đ c dùng n u b n mu n phát tri n kh n ng vi t code, thu t toán. Bài này có th th c hi n nhanh
h n vì VB.Net có hàm StrReverse dùng đ đ o ng c 1 chu i. Ch ng trình trên có th đ c vi t l i ng n g n
h n nh sau:
Private Sub btnIn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles btnIn.Click
Dim n As String
n = txtN.Text
txtSodaonguoc.Text = StrReverse(n)
End Sub

Trang 9



×