1. Trang chủ
  2. » Giáo Dục - Đào Tạo

ĐỀ THI và đáp án môn lập TRÌNH VISUAL BASIC, đại học SPKT TPHCM

11 5,3K 11

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 11
Dung lượng 553,5 KB

Nội dung

0.5đ Nhập N là số phần tử của một mảng số nguyên.. 0.5đ Khi nhấp nút TIM, tìm vị trí của số lẻ đầu tiên trong mảng vừa nhập.. Xuất kết quả bằng MsgBox .Nếu mảng không có số lẻ thì xuất “

Trang 1

ĐẠI HỌC SƯ PHẠM KỸ THUẬT TPHCM ĐỀ THI CUỐI KỲ NĂM HỌC 2013-2014 KHOA CÔNG NGHỆ THÔNG TIN MÔN: LẬP TRÌNH VISUAL BASIC

BỘ MÔN: HỆ THỐNG THÔNG TIN MÃ MÔN HỌC: VBPR131085

- Thời gian: 75 phút

Không được sử dụng tài liệu

Đề thi có: 02 trang

-Câu 1: (1.5 điểm) Cho hàm tính tổng TinhS như sau:

Function TinhS ( ByVal n As Integer ) As Long

Dim i As Integer

Dim kq, giaithua as Long

kq = 0

giaithua = 1

For i = 1 To n

giaithua = giaithua * i

kq = kq + giaithua

Next i

TinhS = kq

End Function

Hãy viết lại hàm TinhS sử dụng vòng lặp Do while…Loop

Câu 2: (2 điểm) Một chương trình có hai thủ tục sau, khi thủ tục CmdVidu_Click được gọi,

hãy trình bày chạy từng bước chương trình trên giấy

Private Sub P ( ByVal x As Integer, ByRef y As Integer )

y = y + x

x = x – 2 MsgBox "x = " & x & Space(5) & "y = " & y

Trang 2

End Sub

Private Sub CmdVidu_Click ( )

Dim a As Integer Dim b As Integer

a = 10

b = 5 MsgBox "a = " & a & Space(5) & "b = " & b

P b, a ‘ Lời gọi thủ tục P MsgBox "a = " & a & Space(5) & "b = " & b End Sub

Câu 3: (2.5 điểm) Viết chương trình:

a (0.5đ) Nhập N là số phần tử của một mảng số nguyên Nhấp nút NHAP MANG

thì các InputBox hiện ra để nhập mảng Xuất mảng vừa nhập ra nhãn (label) có tên là lblNhap

b (0.5đ) Khi nhấp nút TIM, tìm vị trí của số lẻ đầu tiên trong mảng vừa nhập Xuất

kết quả bằng MsgBox Nếu mảng không có số lẻ thì xuất “Khong co”

txtN cmdNhap lblNhap cmdSapXep lblKQ cmdTim

Trang 3

c (1đ) Khi nhấp nút SAP XEP, đổi chổ các số lẻ trong mảng với nhau sao cho các

số lẻ này có giá trị tăng dần từ trái sang phải, đổi chổ các số chẵn trong mảng với nhau sao cho các số chẵn này có giá trị giảm dần từ trái sang phải

d (0.5đ) Xuất mảng vừa được sắp xếp ra nhãn (lablel) có tên là lblKQ.

Câu 4: (2.5 điểm) Viết chương trình nhập 2 số nguyên dương N và M (giả sử M nhỏ hơn

hoặc bằng số ký số (chữ số) của N) Tính và in ra tổng M ký số (chữ số) cuối cùng của số

N theo mẫu giao diện sau:

(Trong ví dụ: kết quả 21 vì 7+6+8=21)

Chú ý: Sinh viên có thể sử dụng kiểu chuỗi cho N.

Câu 5: (1.5 điểm) Có ba loại giấy bạc: 1.000, 2.000 và 5.000 Viết chương trình xuất ra số

phương án kết hợp từ ba loại giấy bạc trên để có được 100.000 Xuất kết quả bằng MsgBox

Ví dụ: 5 tờ 1.000 + 40 tờ 2.000 + 3 tờ 5.000 = 100.000 là một phương án.

1 tờ 1.000 + 2 tờ 2.000 + 19 tờ 5.000 = 100.000 là một phương án.

Giả sử có tất cả là 2 phương án Dùng MsgBox xuất ra số 2.

Ghi chú: Cán bộ coi thi không được giải thích đề thi Ngày 28 tháng 5 năm 2014

Trưởng BM ĐÁP ÁN GỢI Ý

Trang 4

Chú ý: với các câu viết chương trình, sinh viên có thể làm theo cách khác miễn đúng là được.

Câu 1

Function TinhS ( ByVal n As Integer ) As Long

Dim i As Integer

Dim kq, giaithua As Long

kq = 0

giaithua = 1

i = 1

Do While i <= n

giaithua = giaithua * i

kq = kq + giaithua

i = i + 1

Loop

TinhS = kq

End Function

Câu 2

Một số sv không kẽ bảng mà debug theo cách riêng, nếu đúng, vẫn khuyến khích được một

số điểm tượng trưng từ 0.5-1.5đ tùy theo mức độ

chúng

điểm

Dim a As Integer

Dim b As Integer

0,5 đ

a = 10

b = 5

MsgBox "a=" & a &

Space(5) & "b =" & b

a=10 b=5

Call p(b,a)

p(ByVal x As Integer, ByRef

y As Integer)

0,5 đ

y = y + x

x = x - 2

x

5

ab

10 5

3

15

Trang 5

0,5 đ MsgBox "x =" & x &

Space(5) & "y =" & y

x=3 y=15

Kết thúc chương trình con Biến x và y bị xóa khỏi bộ

nhớ MsgBox "a =" & a &

Space(5) & "b =" & b

a=15 b=5

0,5 đ

Câu 3:

a Nhập xuất mảng: 0.5đ Sinh viên có thể nhập mảng có chỉ số bắt đầu từ 0 đến n-1 (vẫn tròn điểm)

Nếu sinh viên nhập đúng, không xuất đúng: 0.5đ; nếu sinh viên nhập không đúng, xuất

đúng: 0.25đ Sinh viên có thể dùng mảng Textbox (giả sử tên đặt là txtA) để nhập dữ liệu:

0.5đ

Dim a() As Integer, n As Integer

Private Sub cmdNhap_Click() (T Danh)

‘Nếu sv đặt tên hàm không đúng lắm có thể châm chước bỏ qua, ví dụ Private Sub lblNhap

_Click( )

Dim s As String

n = Val(txtN.Text)

ReDim a(1 To n)

For i = 1 To n

a(i) = InputBox("Nhap pt thu " & i)

s = s & a(i) & Space(2)

Trang 6

Next

lblNhap = s ‘sv có thể xuất theo cách lblNhap.Caption đúng

End Sub

b Tìm vị trí số lẻ đầu tiên trong mảng: 0.5đ Nếu sinh viên nhập mảng có chỉ số bắt đầu từ

0 thì chỉ số xuất ra kém hơn 1 đơn vị: vẫn đúng 0.5đ

Private Sub cmdTim_Click() (c Uyển)

For i = 1 To n

If a(i) Mod 2 <> 0 Then ‘chỗ này nếu làm Mod 2 = 1 thật ra không chính xác lắm, vì trong VB -1 Mod 2 không phải bằng 1, nhưng vẫn chấm khuyến khích tròn điểm

MsgBox i

Exit Sub

End If

Next

MsgBox "Khong co"

End Sub

c và d Sắp xếp(1đ) và xuất mảng(0.5đ): đổi chổ các số lẻ sao cho tăng dần, đổi chổ các số chẵn sao cho giảm dần Trong phần Sắp xếp: mỗi điều kiện If được 0.5đ, hai điều kiện If được 1đ Nếu sinh viên làm sai điều kiện If mà chỉ ghi được 2 vòng for: được 0.5đ

Private Sub cmdSapXep_Click() (c Uyển)

Dim temp As Integer

Dim s As String

For i = 1 To n – 1 ‘nếu sv chạy từ 0 To n-2 vẫn đúng

For j = i + 1 To n ‘nếu sv chạy từ i+1 To n-1 vẫn đúng

If a(i) Mod 2 <> 0 And a(j) Mod 2 <> 0 And a(i) > a(j) Then

temp = a(i)

a(i) = a(j)

a(j) = temp

Trang 7

End If

If a(i) Mod 2 = 0 And a(j) Mod 2 = 0 And a(i) < a(j) Then ‘ nếu sv chỉ ghi chỗ này là Else mà không có điều kiện -> sai

temp = a(i)

a(i) = a(j)

a(j) = temp

End If

Next

Next

For i = 1 To n ‘xuất mảng

s = s & a(i) & Space(2)

Next

lblKQ = s ‘sv có thể xuất theo cách lblNhap.Caption đúng

End Sub

*Sinh viên có thể sắp xếp mảng theo cách hiểu khác: các phần tử lẻ di chuyển về đầu mảng

và tăng dần, các phần tử chẵn di chuyển về cuối mảng và giảm dần: khuyến khích cho các

em tròn điểm nếu làm đúng

Private Sub cmdSapXep_Click() (c Châu)

For i = 1 To n - 1

For j = i + 1 To n

If A(i) Mod 2 <> 0 Then

If A(j) Mod 2 <> 0 Then

If A(i) > A(j) Then

tmp = A(i)

A(i) = A(j)

A(j) = tmp

End If

Trang 8

End If

Else

If A(j) Mod 2 <> 0 Then

tmp = A(i)

A(i) = A(j)

A(j) = tmp

ElseIf A(i) < A(j) Then

tmp = A(i)

A(i) = A(j)

A(j) = tmp

End If

End If

Next j

Next i

For i = 1 To n

s = s & A(i) & Space(2)

Next

lblKQ = s

End Sub

Câu 4: (Thang điểm: nhập (0,5 điểm), xử lý (1.5 điểm), xuất dữ liệu (0,5 điểm).

Private Sub cmdTim_Click()

Dim M, N As Integer

Dim Tong As Integer

N = Val(txtN.Text)

M = Val(txtM.Text)

Tong = 0

For i = 1 To M

Trang 9

Tong = Tong + N Mod 10

N = N \ 10

Next i

LblKQ = "Tong " + Str(M) + " ky so cuoi cua " _ + txtN.Text + " la " + Str(Tong) ‘sv có thể xuất cách khác LblKQ.Caption = …vẫn đúng ; nếu sv chỉ xuất ra duy nhất giá trị của Tong mà không xuất ra được câu như trên thì được 0.25đ

End Sub

*Cách dùng Do while … Loop

Private Sub cmdTim_Click()

Dim N, M, i, s As Integer

i = 1

N = Val(txtN.Text)

M = Val(txtM.Text)

Do While i <= M And N > 0

s = s + N Mod 10

i = i + 1

N = N \ 10

Loop

LblKQ = "Tong " + Str(M) + " ky so cuoi cua " _ + txtN.Text + " la " + Str(s) ‘sv có thể xuất cách khác LblKQ.Caption = …vẫn đúng ; nếu sv chỉ xuất ra duy nhất giá trị của Tong mà không xuất ra được câu như trên thì được 0.25đ

End Sub

* Sinh viên có thể xử lý theo chuỗi ( N kiểu String) :

Private Sub cmdTim_Click()

Dim Tong, M As Integer

Dim N As String

Trang 10

N = txtN.Text

M = Val(txtM.Text)

Tong = 0

For i = 1 To M

Tong = Tong + Val(Right(N, 1))

N = Left(N, Len(N) - 1)

Next i

If Len(N) = 0 Then M = Len(txtN.Text)

LblKQ = "Tong " + Str(M) + " ky so cuoi cua " _ + txtN.Text + " la " + Str(Tong) ‘sv có thể xuất cách khác LblKQ.Caption = …vẫn đúng ; nếu sv chỉ xuất ra duy nhất giá trị của Tong mà không xuất ra được câu như trên thì được 0.25đ

End Sub

Câu 5

Dim dem As Integer

For i = 1 To 93 ‘nếu sv chạy tới hơn 93 vẫn

đúng, vd: For i=1 To 100

Viết được ba vòng for: 1đ

For j = 1 To 47 ‘nếu sv chạy tới hơn 47 vẫn

đúng, vd: For i=1 To 100

For k = 1 To 19 ‘nếu sv chạy tới hơn 19 vẫn

đúng, vd: For i=1 To 100

If i * 1000 + j * 2000 + k * 5000 = 100000

Then

Viết được điều kiện này: 0.5đ

dem = dem + 1

End If

Next

Next

Trang 11

MsgBox dem

*Nếu sv làm theo cách không cần phải kết hợp đủ 3 loại giấy bạc, nghĩa là có thể 1 đến 2 loại giấy bạc không có mặt: vẫn được tròn điểm:

Dim dem As Integer

For i = 0 To 100 ‘nếu sv chạy tới hơn 100 vẫn

đúng, vd: For i=0 To 150

Viết được ba vòng for: 1đ

For j = 0 To 50 ‘nếu sv chạy tới hơn 50 vẫn

đúng, vd: For i=0 To 100

For k = 0 To 20 ‘nếu sv chạy tới hơn 20 vẫn

đúng, vd: For i=0 To 100

If i * 1000 + j * 2000 + k * 5000 = 100000

Then

Viết được điều kiện này: 0.5đ

dem = dem + 1

End If

Next

Next

Next

MsgBox dem

Ngày đăng: 25/11/2016, 07:03

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w