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

Đề thi đáp án lập trình visual basic sư phạm kỹ thuật

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 (723.99 KB, 5 trang )

ĐẠI HỌC SƯ PHẠM KỸ THUẬT TPHCM
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MƠN: HỆ THỐNG THƠNG TIN
---------------

ĐÁP ÁN LẬP TRÌNH VISUAL BASIC
HỌC KỲ II NĂM HỌC 2017-2018
MÃ MÔN HỌC: VBPR131085
Thời gian: 75 phút
Đề thi có: 08 trang
Sinh viên làm bài trực tiếp trên đề thi
(được sử dụng tài liệu giấy viết tay, 2 tờ A4)
----------------------------Chữ ký Giám thị 1
Chữ ký Giám thị 2
STT: .....................................................................
Mã số sinh viên (MaSV): ....................................
Họ tên thí sinh:
Điểm

Cán bộ chấm thi 1

Cán bộ chấm thi 2

Bài 1 (1.5 điểm): Căn cứ vào đoạn code bên trái. Trả lời câu hỏi và điền vào các chỗ còn trống (____) ở
cột bên phải.
Function F1(ByVal s As String) As Boolean
Dim i As Integer, d As Integer
d=0
F1 = False
For i = Len(s) To 1 Step -1
If Mid(s,i,1) <> space(1) Then


d=d+1
End If
Next i
If d Mod 2 = 0 then F1 = True
End Function

Số hiệu: BM1/QT-KĐ-RĐTV/00

Cho biết đoạn mã bên trái làm gì?
Nếu số ký tự khác khoãng trắng của s là số chẵn
hàm trả về True, ngược lại hàm trả về False.
Viết lại đoạn mã bên trái
Function F1(ByVal s As String) As Boolean
Dim i As Integer, d As Integer
F1 = False
d=0
i = Len(s)
Do While i >= 1
If Mid(s,i,1)<> Space(1) Then
d=d+1
End If
i=i-1
Loop
If d Mod 2 = 0 then F1 = True
End Function

Trang 1


Bài 2. (2.5 điểm) Cho lưu đồ:

Bắt đầu
n
n< 2

Đ

S
s=0
i=2
S

i <= n\2
Đ

S

n mod i <> 0

Đ
i mod 2 <> 0

S

Đ

1. (1 điểm) Chạy tay lưu đồ với n = 24 (điền giá trị tương
ứng vào bảng sau).
i
s
0

0
2
0
3
0
4
0
5
5
6
5
7
12
8
12
9
21
10
21
11
32
12
32

s= s+i

i = i+1

s
Kết thúc


2. (1.5 điểm) Viết chương trình theo lưu đồ trên.
Private Sub Command1_Click()
Dim n As Integer, i As Integer, s As Integer
Do
n = Val(InputBox("Nhap n:"))
Loop Until n >= 2
s=0
For i = 2 To n \ 2
If n Mod i <> 0 And i Mod 2 <> 0 Then s = s + i
Next i
MsgBox s
End Sub

Số hiệu: BM1/QT-KĐ-RĐTV/00

Trang 2


Bài 4a. (1 điểm) Viết hàm kiểm tra số nguyên n. Nếu n là số nguyên tố hàm trả về giá trị True còn ngược
lại hàm trả về giá trị False.
Function SNT(ByVal n As Integer) As Boolean
Dim i As Integer
If n <= 1 Then
SNT = False
Exit Function
End If
SNT = True
For i = 2 To n - 1
If n Mod i = 0 Then SNT = False

Next i
End Function

Bài 4b. (1 điểm) Sử dụng hàm SNT() ở câu 4.a viết hàm in số nguyên tố thứ k có trong mảng a(). Nếu
khơng có số ngun tố thứ k hàm trả về thông báo “Khong co so nguyen to thu k”. Mảng a() và k là các
tham số thực.
(VD: cho dãy số : 2, 3, 4. 6. 11, 12, 17; k = 3. In ra 11
cho dãy số : 4, 5, 6, 8, 10, 15, 20; k=3. In ra “Khong co so nguyen to thu 3”
Function In_SNT_k(a() As Integer, ByVal k As Integer) As String
Dim i As Integer, m As Integer
If k > (UBound(a) - LBound(a) + 1) Then
In_SNT_k = "Khong co so nguyen to " & k
Exit Function
End If
m=0
Chú ý : vẫn cho đúng nếu sử dụng cách in trực
For i = LBound(a) To UBound(a)
tiếp thay cho cách sử dụng tên hàm để trả lại trị,
If m = k Then Exit For
thông báo.
If SNT(a(i)) Then
In_SNT_k = a(i)
m=m+1
End If
Next i
If m < k Then In_SNT_k = "Khong co so nguyen to " & k
End Function

Bài 5. (1 điểm) Viết hàm trả về câu dài nhất cuối cùng dạng chuẩn hóa có trong chuỗi s. Câu là 1 dãy ký tự
kết thúc bằng dấu chấm. Hàm trả về “Chuoi rong” nếu s là chuỗi rỗng hoặc chuỗi s chỉ có 1 dấu chấm.

VD: s = “Di

dau. Di

về dau . O noi dau ”. Hàm trả vê câu “O noi dau”

Số hiệu: BM1/QT-KĐ-RĐTV/00

Trang 3


Function CauDaiNhat(ByVal s As String) As String
Dim i As Integer, d As Integer
If Len(s) = 0 Then
Chú ý : vẫn cho đúng nếu câu trả về dạng không
CauDaiNhat = "Chuoi rong"
chuẩn hóa.
Exit Function
End If
s = Trim(s)
i = InStr(s, Space(2))
Do While i > 0
s = Replace(s, Space(2), Space(1))
i = InStr(s, Space(2))
Loop
If Right(s, 1) <> "." Then s = s & "."
d=0
CauDaiNhat = ""
i = InStr(s, ".")
Do While i > 0

If Len(Left(s, i - 1)) >= d Then CauDaiNhat = Left(s, i - 1)
s = Mid(s, i + 1)
i = InStr(s, ".")
Loop
CauDaiNhat = Trim(CauDaiNhat)
If Len(CauDaiNhat) = 0 Then CauDaiNhat = "Chuoi rong"
End Function
Bài 6. (1 điểm) Viết hàm đếm số ký tự đặc biệt có trong chuỗi s. Ký tự đặc biệt là các ký tự khơng phải là
chữ, số và khỗng trắng. VD: s=”Dai hoc ## SPKT@ co **43 Lop hoc $@#!”. Hàm cho kết quả là 9.
Function SoKTDB(ByVal s As String) As Integer
Dim i As Integer
SoKTDB = 0
For i = 1 To Len(s)
Select Case Mid(s, i, 1)
Case "a" To "z", "A" To "Z", "0" To "9", Space(1)
Case Else
SoKTDB = SoKTDB + 1
End Select
Next i
End Function

Số hiệu: BM1/QT-KĐ-RĐTV/00

Trang 4


Bài 5. (1 điểm) Cho hai chuỗi s=”a1a2..an” và t=”b1b2..bn” có cùng số ký tự và khác rỗng. Hãy viết hàm trả
về một chuỗi có nội dung là i và j với i là vị trí đầu tiên mà ai  bi và j là vị trí cuối mà aj  bj. Ví dụ s =
“ABBCDEFI” , t = “ABCAEBFI” , hàm cho chuỗi “3, 6”. Nếu hai chuỗi giống nhau thì hàm trả về “0, 0”.
Cách 1

Function DauCuoi(ByVal s As String, ByVal t As String) As String
Dim i As Integer, vt1 As Integer, vt2 As Integer
If s <> t Then
For i = 1 To Len(s)
If Mid(s, i, 1) <> Mid(t, i, 1) Then
vt1= i : Exit For
End If
Next i
For i = Len(s) To 1 Step -1
If Mid(s, i, 1) <> Mid(t, i, 1) Then
vt2= i : Exit For
End If
Next i
DauCuoi = vt1 & “, “ & vt2
Else
DauCuoi = ”0, 0”
End If
End Function

Cách 2
Hai vòng lặp For ở hàm bên có thể
được thay bằng hai vịng lặp Do While
như sau (phần còn lại giữ nguyên):
n = Len(s)
i=1
j=n
Do While Mid(s, i, 1) = Mid(t, i, 1)
i=i+1
Loop
Do While Mid(s, j, 1) = Mid(t, j, 1)

j=j-1
Loop
DauCuoi = i & “, “ & j

Bài 6. (1 điểm) Cho a là mảng gồm các số thực. Viết hàm (Function) trả về mảng các số nguyên b có cùng
số phần tử với mảng a và b(i) có giá trị là số nguyên bé nhất  a(i). Ví dụ: với mảng a gồm các giá trị {-1.3,
-2.6, 3.2, 4.3, 5} thì hàm trả về mảng b là {-1, -2, 4, 5, 5}.
Function MangChanTren(a() As Double) As Long()
Dim b() As Long
Redim b(LBound(a) To UBound(a))
For i= LBound(a) To UBound(a)
b(i) = Round(a(i))
If b(i) < a(i) Then b(i) = b(i) + 1
Next i
MangChanTren = b
End Function

Số hiệu: BM1/QT-KĐ-RĐTV/00

Trang 5



×