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ưới thì cần sửa lại code cho phù hợp. 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 tong = 1 For i = 2 To n tong = tong * i.text = tong 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: btntinh Private Sub btntinh_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles btntinh.click Dim n, tong, i As Integer tong = 0 For i = 1 To n tong = tong + i.text = tong Trang 1
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ước nó. Ví dụ: 2= 1 + 1 3=1+2 5=2+3 8=5+5 Thiết kế giao diện: 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 While (a + b < n) c = a + b a = b b = c s = s & " " & c End While.Text = s 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
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 If n = 1 Then blkiemtra = False If n = 2 Then blkiemtra = True For i = 2 To Int(Math.Sqrt(n)) If (n Mod i = 0) Then blkiemtra = False Exit For If blkiemtra = True Then.Text = n & " là số nguyên tố".text = n & " không phải là số nguyên tố" 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. btnkiemtra Trang 3
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 tong = 0 'Bien tong dung chua tong cac uoc so For i = 1 To n - 1 If (n Mod i = 0) Then tong = tong + i If tong = n Then.Text = n & " là số hoàn hảo".text = n & " không phải số hoàn hảo" 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=2 2, 9=3 2, 16=4 2, 15=5 2 Để 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 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 i = Math.Sqrt(n) If i * i = n Then blkiemtra = True blkiemtra = False If blkiemtra = True Then.Text = n & " là số chính phương".text = n & " không phải số chính phương" Trang 4
4. Liệt kê các số <n và chia hết cho 3, xuất ra textbox, mỗi dòng 5 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
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 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.Text = s 5. Tìm ước chung lớn nhất 2 số a và b txta txtb btntim Code của nút btntim: Trang 6
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 b = b - a End While uocchung = a 'Hoac uocchung=b cung dung.text = uocchung 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ương trình sẽ yêu cầu nhập từng phần tử: Sau khi nhập đủ số phần tử, chươ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
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ử thứ " & i & ":", "Nhập mảng") 'In mang ra textbox s = "" For i = 0 To sopt - 1 s = s & mang(i) & " " txtmangdanhap.text = s 'Tinh tong cua mang va in ra textbox tong = 0 For i = 0 To sopt - 1 tong = tong + mang(i) txttong.text = tong 'Tim max max = mang(0) For i = 1 To sopt - 1 If max < mang(i) Then max = mang(i) txtmax.text = max 'Tim min min = mang(0) For i = 1 To sopt - 1 If min > mang(i) Then min = mang(i) txtmin.text = min 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 txtsodaonguoc txtin Trang 8
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 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) Trang 9