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

Tuyển tập 25 đề thi tin học đại cương và cách 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 (681.33 KB, 37 trang )


Sinh viên: Trần Văn Khôi-Khoan khai thác B K57-Email:
Page | 1


ĐỀ THI TIN HỌC ĐẠI CƯƠNG (SỐ 1)
Thời gian 60 phút
1/ Viết chương trình nhập vào một dãy số nguyên dương 





(n < 100), sau đó tìm các
phần tử 

vừa là sô chẵn vừa chia hết cho 13, nếu không có phần tử 

nào như vậy thì in ra thông
báo ?

Bài giải
Private Sub Command1_Click()
Dim x%(100), i As Byte, n As Byte, kq As String, kq1 As String, dem As Byte
Const xd = vbCrLf
dem = 0
kq = "Day nhap vao la: " & xd
kq1 = "Cac phan tu vua la so chan vua chia het cho 13 la: " & xd
Do
n = InputBox("Nhap so luong phan tu")
Loop Until n > 0 And n < 100


For i = 1 To n
Do
x(i) = InputBox("Nhap phan tu thu " & i)
Loop Until x(i) > 0
kq = kq & x(i) & " "
If x(i) Mod 2 = 0 And x(i) Mod 13 = 0 Then
dem = dem + 1
kq1 = kq1 & x(i) & " "
End If
Next
Print kq
If dem = 0 Then
MsgBox "Khong co phan tu nao thoa man"
Else
Print kq1
End If
End Sub














Sinh viên: Trần Văn Khôi-Khoan khai thác B K57-Email:
Page | 2


2/ Viết chương trình nhập vào số nguyên dương n, sau đó kiểm tra xem tích các chữ số của n có
phải là số chia hết cho 3 và có 2 chữ số không ?

Bài giải
Private Sub Command1_Click()
Dim n%, s$, i As Byte, tich%
Do
n = InputBox("Nhap so nguyen duong n")
Loop Until n > 0
Print "So ban nhap vao la: " & n
s = CStr(n): tich = 1
For i = 1 To Len(s)
tich = tich * Mid(s, i, 1)
Next
If tich Mod 3 = 0 And Len(tich) = 2 Then
Print "So vua nhap co tich cac chu so vua co 2 chu so vua chia het cho 3"
Else
Print "So vua nhap khong thoa man"
End If
End Sub

ĐỀ THI TIN HỌC ĐẠI CƯƠNG (SỐ 2)
Thời gian 60 phút
1/ Xây dựng chương trình nhập số liệu từ tệp “DAYSO.DAT” vào một dãy số nguyên 







gồm n phần tử. Hãy in ra vị trí của phần tử âm đầu tiên của dãy. Nếu không có phần tử âm thì đưa
ra thông báo.
Ví dụ: Dãy nhập vào là :



vậy phần tử âm đầu tiên trong dãy
là 3.
Bài giải
Private Sub Command1_Click()
Dim n%, x%(500), i%, dem%
Open App.Path & "\DAYSO.DAT " For Input As #21
Input #21, n
For i = 1 To n
Input #21, x(i)
If x(i) < 0 Then
dem = i
Exit For
End If
Next
Close #21
If dem = 0 Then MsgBox "Khong co phan tu am nao trong day."
If dem > 0 Then Print "Phan tu am dau tien trong day o vi tri thu: " & dem
End Sub



Sinh viên: Trần Văn Khôi-Khoan khai thác B K57-Email:
Page | 3


2/ Xây dựng chương trình cho phép nhập vào một số nguyên dương n. Hãy tách n thành 2 số
nguyên dương a, b (n = a + b), sao cho tích P = a*

đạt cực đại.

Bài giải
Private Sub Command1_Click()
Dim n%, i%, j%, p%
Do
n = InputBox("Nhap so nguyen duong n")
Loop Until n > 0
Print "So nguyen duong nhap vao la: " & n
p = 0
For i = 1 To n - 1
For j = n - 1 To 1 Step -1
If i + j = n And i * (j ^ 2) > p Then
a = i: b = j: p = i * (j ^ 2)
End If
Next j
Next i
Print "So " & n; " bang tong cua " & a & " + " _
& b; " va tich " & a & " * " & "(" & b & " ^ 2) lon nhat"
End Sub
























Sinh viên: Trần Văn Khôi-Khoan khai thác B K57-Email:
Page | 4


ĐỀ THI TIN HỌC ĐẠI CƯƠNG (SỐ 3)
Thời gian 60 phút
1/ Viết chương trình nhập vào một số nguyên dương n, sau đó tính biểu thức sau:
S 





.






) , trong đó j!! = 




Bài giải
Private Sub Command1_Click()
Dim n%, i%, j%, k%, kq$, bt2!, bt3!, gtc%
Const xd = vbCrLf
Do
n = InputBox("Nhap so nguyen duong n")
Loop Until n > 0
Print "So nguyen duong nhap vao la: " & n
kq = "Gia tri cua bieu thuc voi n = " & n & " la: " & xd
bt2 = 0: bt3 = 0: gtc = 1
For i = 1 To n
For j = 1 To i
If j Mod 2 = 0 Then
For k = 1 To j
If k Mod 2 = 0 Then gtc = gtc * k
Next k

Else
For k = 1 To j
If k Mod 2 = 1 Then gtc = gtc * k
Next k
End If
bt3 = bt3 + 1 / gtc
gtc = 1
Next j
bt2 = bt2 + Tan(i) * bt3
Next i
kq = kq & bt2
Print kq
End Sub











Sinh viên: Trần Văn Khôi-Khoan khai thác B K57-Email:
Page | 5

2/ Viết chương trình nhập vào một số nguyên dương n, sau đó chèn chữ số nhỏ nhất của n vào sau
các chữ số chẵn của n.
Ví dụ: n = 4123, chữ số nhỏ nhất là 1, chèn 1 vào sau các chữ số chẵn của n sẽ được số 411213.

Bài giải
Private Sub Command1_Click()
Dim n%, s$, i%, j%, min$, s1$
Do
n = InputBox("Nhap so nguyen duong n")
Loop Until n > 0
Print "So nguyen duong n: " & n
s = CStr(n): min = Mid(s, 1, 1)
For i = 1 To Len(s)
If Mid(s, i, 1) < min Then min = Mid(s, i, 1)
Next
Print "Chu so nho nhat cua n la: " & min
s1 = ""
For i = 1 To Len(s)
If Mid(s, i, 1) Mod 2 = 1 Then
s1 = s1 & Mid(s, i, 1)
Else
s1 = s1 & Mid(s, i, 1) & min
End If
Next i
Print "Ket qua sau khi chen la: " & Val(s1)
End Sub

ĐỀ THI TIN HỌC ĐẠI CƯƠNG (SỐ 4)
Thời gian 60 phút
1/ Xây dựng chương trình nhập vào họ tên của một người. Sau đó in ra xâu họ tên với ký tự đầu
tiên của các từ được đổi thành chữ hoa, các ký tự còn lại là chữ thường.
Ví dụ: Họ tên nhập vào là “trAN VAN hUng” xâu sau khi in ra sẽ là “Tran Van Hung”.
Bài giải
Private Sub Command1_Click()

Dim s$, i%, kq$
Const xd = vbCrLf
s = InputBox("Nhap ho va ten cua mot nguoi")
s = LCase(Trim(s))
Do While InStr(s, " ") >= 2
s = Replace(s, " ", " ")
Loop
For i = 1 To Len(s)
Mid(s, 1, 1) = UCase(Mid(s, 1, 1))
If Mid(s, i, 1) = " " Then Mid(s, i + 1, 1) = UCase(Mid(s, i + 1, 1))
Next
Print "Ho va ten da xu ly la: " & xd & s
End Sub

Sinh viên: Trần Văn Khôi-Khoan khai thác B K57-Email:
Page | 6

2/ Xây dựng chương trình nhập vào tọa độ (x;y) của hai điểm, tính và hãy kiểm tra xem hai điểm
đó có đối xứng nhau qua gốc tọa độ hay không ?
Bài giải
Private Sub Command1_Click()
Dim xa%, ya%, xb%, yb%
xa = hoanhdo1.Text: ya = tungdo1.Text: xb = hoanhdo2.Text: yb = tungdo2.Text
If xa = -xb And ya = -yb Then
Print "Hai diem nhap vao doi xung voi nhau qua O"
Else
Print "Hai diem nhap vao khong doi xung qua O"
End If
End Sub



ĐỀ THI TIN HỌC ĐẠI CƯƠNG (SỐ 5)
Thời gian 60 phút
1/ Xây dựng chương trình cho phép nhập vào 1 số nguyên dương n. Hãy kiểm tra xem số đó có
phải số chính phương và chia hết cho 2 hay không ? (Số chính phương là số nguyên có giá trị bằng
bình phương của một số nguyên khác, ví dụ 25 = 

).
Bài giải
Private Sub Command1_Click()
Dim n%, i%, a As Byte
Do
n = InputBox("Nhap so nguyen duong n")
Loop Until n > 0
a = 0
For i = 1 To n / 2
If i * i = n Then a = 1
Next
If n Mod 2 = 0 And a = 1 Then Print "So " & n & " vua la so chinh phuong vua chia het cho 2"
If n Mod 2 = 0 And a <> 1 Then Print "So " & n _
& " la so chan nhung khong phai la so chinh phuong"
If n Mod 2 = 1 And a = 1 Then Print "So " & n _
& " la so chinh phong nhung khong chia het cho 2"
End Sub












Sinh viên: Trần Văn Khôi-Khoan khai thác B K57-Email:
Page | 7

2/ Xây dựng chương trình nhập vào một danh sách cán bộ gồm họ tên, ngày sinh, đơn vị. Hãy in
ra thông tin của những cán bộ mang họ “Trần”.

Bài giải
Private Type canbo
hoten As String
ngaysinh As Date
donvi As String
End Type
______________________________________________________________________________
Private Sub Command1_Click()
Dim cb(100) As canbo, i As Byte, kq$, kq1$
Const xd = vbCrLf
Do
n = InputBox("Nhap so luong can bo")
Loop Until n > 0
kq = "Danh sach can bo nhap vao: " & xd
kq1 = "Danh sach can bo co ho Tran la: " & xd
For i = 1 To n
cb(i).hoten = InputBox("Nhap ho ten can bo thu " & i)
cb(i).ngaysinh = InputBox("Nhap ngay sinh can bo thu " & i)
cb(i).donvi = InputBox("Nhap don vi cua can bo thu " & i)

Next
For i = 1 To n
kq = kq & "Ho ten: " & cb(i).hoten & _
". Ngay sinh: " & cb(i).ngaysinh & ". Don vi: " & cb(i).donvi & xd
Next
Print kq
For i = 1 To n
If Mid(cb(i).hoten, 1, 4) = "Tran" Then kq1 = kq1 & "Ho ten: " & cb(i).hoten & _
". Ngay sinh: " & cb(i).ngaysinh & ". Don vi: " & cb(i).donvi & xd
Next
If kq1 = "Danh sach can bo co ho Tran la: " & xd Then
Print "Trong danh sach khong co nguoi nao ho Tran"
Else
Print kq1
End If
End Sub









Sinh viên: Trần Văn Khôi-Khoan khai thác B K57-Email:
Page | 8


ĐỀ THI TIN HỌC ĐẠI CƯƠNG (SỐ 6)

Thời gian 60 phút
1/ Viết chương trình nhập vào một số thực a (a 0) và một số nguyên dương n, sau đó tính:
S =











  





Bài giải
Private Sub Command1_Click()
Dim a!, n%, i%, s!
Do
a = InputBox("Nhap so thuc a")
n = InputBox("Nhap so nguyen duong n")
Loop Until n > 0 And a <> 0
Print "So thuc a = " & a & ", so nguyen duong n = " & n
a = Abs(a)
s = 0

For i = n To 1 Step -1
s = Sqr(s + a ^ (-i))
Next
Print "Gia tri cua bieu thuc bang: " & xd & s
End Sub

2/ Nhập vào hai số nguyên dương a và b, xét xem tổng các chữ số của (a + b) có phải là số chẵn
không ?

Bài giải
Private Sub Command1_Click()
Dim a%, b%
Do
a = InputBox("Nhap so nguyen duong thu nhat")
b = InputBox("Nha so nguyen duong thu 2")
Loop Until a > 0 And b > 0
Print "So thu nhat la: " & a: Print "So thu hai la: " & b
If (a + b) Mod 2 = 0 Then
Print "Tong " & a & " + " & b & " chia het cho 2"
Else
Print "Tong " & a & " + " & b & " khong chia het cho 2"
End If
End Sub






Sinh viên: Trần Văn Khôi-Khoan khai thác B K57-Email:

Page | 9


ĐỀ THI TIN HỌC ĐẠI CƯƠNG (SỐ 7)
Thời gian 60 phút
1/ Viết chương trình nhập vào một dãy số nguyên 





(0 < n <100), sau đó đếm các phần
tử 

là số chẵn và nằm trong khoảng (-1000, 1000).
Bài giải
Private Sub Command1_Click()
Dim x%(100), i As Byte, dem%
Do
n = InputBox("Nhap so luong phan tu")
Loop Until n > 0 And n < 100
dem = 0
For i = 1 To n
x(i) = InputBox("Nhap phan tu thu " & i)
If x(i) Mod 2 = 0 And x(i) > -1000 And x(i) < 1000 Then dem = dem + 1
Next
If dem = 0 Then
Print "Khong co phan tu nao chia het cho 2 vao thuoc (-1000,1000)"
Else
Print "So phan tu chia het cho 2 va thuoc khoang (-1000,1000) la: " & dem & " so."

End If
End Sub

2/ Viết chương trình nhập vào một số nguyên dương n và tính giá trị sau:
S = ln( n + ln((n – 1) + ln((n – 2) + + ln(2 + ln(1)) )
Bài giải
Private Sub Command1_Click()
Dim n%, i%, s!
Do
n = InputBox("Nhap so nguyen duong n")
Loop Until n > 0
s = 0
For i = 1 To n
s = Log(s + i)
Next
Print "Gia tri cua bieu thuc bang: " & s
End Sub





Sinh viên: Trần Văn Khôi-Khoan khai thác B K57-Email:
Page | 10

ĐỀ THI TIN HỌC ĐẠI CƯƠNG (SỐ 8)
Thời gian 60 phút
1/ Viết chương trình nhập vào một dãy số nguyên dương 






(n < 100), kiểm tra xem
phần tử max của dãy số này có phải là số lẻ và chia hết cho 7 không ?
Bài giải
Private Sub Command1_Click()
Dim x%(100), i As Byte, max%, n As Byte
Do
n = InputBox("Nhap so luong phan tu")
Loop Until n > 0 And n < 100
For i = 1 To n
x(i) = InputBox("Nhap phan tu thu " & i)
Next
max = x(1)
For i = 2 To n
If x(i) > max Then max = x(i)
Next
Print "Gia tri lon nhat cua day so la: " & max
If max Mod 2 = 1 And max Mod 7 = 0 Then Print max & " vua la so le vua chia het cho 7"
If max Mod 2 = 1 And max Mod 7 <> 0 Then Print max & " la so le nhung khong chia het cho
7"
If max Mod 2 <> 1 And max Mod 7 = 0 Then Print max & " khong la so le nhung chia het cho
7"
If max Mod 2 <> 1 And max Mod 7 <> 0 Then Print max & " khong la so le va cung khong
chia het cho 7"
End Sub
2/ Viết chương trình nhập vào một số thực dương a và một số nguyên dương n , tính giá trị sau:
S =














 




Bài giải
Private Sub Command1_Click()
Dim a!, n%, s!, i%
Do
a = InputBox("Nhap so thuc duong a")
n = InputBox("Nhap so nguyen duong n")
Loop Until n > 0 And a > 0
Print "So thuc a = " & a & ", so nguyen n = " & n
s = 0
For i = n To 1 Step -1
s = Sqr(s + 1 / (a ^ i))
Next
Print "Gia tri cua bieu thuc bang: " & s

End Sub

Sinh viên: Trần Văn Khôi-Khoan khai thác B K57-Email:
Page | 11


ĐỀ THI TIN HỌC ĐẠI CƯƠNG (SỐ 9)
Thời gian 60 phút
1/ Viết chương trình nhập vào một dãy số thực 





(n < 100), tìm trung bình cộng của các
phần tử của dãy nằm trong đoạn



?
Bài giải
Private Sub Command1_Click()
Dim x!(100), i As Byte, n As Byte, tong!, dem%, kq$
Do
n = InputBox("Nhap so luong phan tu")
Loop Until n > 0 And n < 100
tong = 0: dem = 0: kq = "Day nhap vao: " & vbCrLf
For i = 1 To n
x(i) = InputBox("Nhap phan tu thu " & i)
kq = kq & x(i) & " "

If x(i) >= -100 And x(i) <= 100 Then
tong = tong + x(i)
dem = dem + 1
End If
Next
Print kq
If dem = 0 Then
Print "Khong co phan tu nao nam trong doan da cho"
Else
Print "Trung binh cong cua cac phan tu nam trong doan da cho bang: " & tong / dem
End If
End Sub




















Sinh viên: Trần Văn Khôi-Khoan khai thác B K57-Email:
Page | 12


2/ Viết chương trình nhập số thực x và một số nguyên dương n , tính và in ra giá trị sau:
 =










Bài giải
Private Sub Command1_Click()
Dim x!, n%, i%, u!, j%, gt%
x = InputBox("Nhap so thuc x")
Do
n = InputBox("Nhap so nguyen duong n")
Loop Until n > 0
Print "So thuc x = " & x & ", so nguyen duong n = " & n
u = 0: gt = 1
For i = 1 To n
For j = 1 To n - i
gt = gt * j
Next

u = u + (x ^ i) / gt
gt = 1
Next
Print "Gia tri cua bieu thuc bang: " & u
End Sub














Sinh viên: Trần Văn Khôi-Khoan khai thác B K57-Email:
Page | 13

ĐỀ THI TIN HỌC ĐẠI CƯƠNG (SỐ 10)
Thời gian 60 phút
1/ Có n người thi chạy nhanh , hãy nhập dãy thời gian chạy 






(n < 100) của những người
đó , sau đó tìm ra thời gian của người chạy nhanh nhất ?
Bài giải
Private Sub Command1_Click()
Dim x(100) As Date, n As Byte, i As Byte, max As Date, kq$
Do
n = InputBox("Nhap so nguoi chay")
Loop Until n > 0 And n < 100
kq = "Thoi gian chay cua " & n & " nguoi la: " & vbCrLf
For i = 1 To n
x(i) = InputBox("Nhap thoi gian chay cua nguoi thu " & i)
kq = kq & "So " & i & ": " & Hour(x(i)) & " gio " & Minute(x(i)) _
& " phut " & Second(x(i)) & " giay" & vbCrLf
Next
Print kq: max = x(1)
For i = 2 To n
If Hour(x(i)) < Hour(max) Then max = x(i)
If Hour(x(i)) = Hour(max) And Minute(x(i)) < Minute(max) Then max = x(i)
If Hour(x(i)) = Hour(max) And Minute(x(i)) = Minute(max) _
And Second(x(i)) < Second(max) Then max = x(i)
Next
Print "Thoi gian cua nguoi chay nhanh nhat la: " & Hour(max) & " gio " _
& Minute(max) & " phut " & Second(max) & " giay"
End Sub

2/ Viết chương trình nhập vào một số nguyên dương n và một số thực dương a , sau đó tính:
S =










 




Bài giải
Private Sub Command1_Click()
Dim a!, n%, i%, s!
Do
a = InputBox("Nhap so thuc duong a")
n = InputBox("Nhap so nguyen duong n")
Loop Until a > 0 And n > 0
s = 0
For i = n To 1 Step -1
s = Sqr(s + a ^ i)
Next
Print "Gia tri cua bieu thuc bang: " & s
End Sub



Sinh viên: Trần Văn Khôi-Khoan khai thác B K57-Email:
Page | 14


ĐỀ THI TIN HỌC ĐẠI CƯƠNG (SỐ 11)
Thời gian 60 phút
1/ Viết chương trình nhập vào một dãy số nguyên dương 





(0 < n < 100), sau đó tính
tổng các phần tử 

(i = 1,2, n) là số lẻ và lớn hơn 99 ?
Bài giải
Private Sub Command1_Click()
Dim x%(100), n As Byte, i As Byte, tong%, dem As Byte, kq$
Do
n = InputBox("Nhap so luong phan tu")
Loop Until n > 0 And n < 100
tong = 0: dem = 0: kq = "Cac chu so le va lon hon 99 la: " & vbCrLf
For i = 1 To n
x(i) = InputBox("Nhap phan tu thu " & i)
If x(i) Mod 2 = 1 And x(i) > 99 Then
tong = tong + x(i)
dem = dem + 1
kq = kq & x(i) & " "
End If
Next
If dem = 0 Then
Print "Khong co phan tu nao la so le va lon hon 99"
Else

Print kq
Print "Tong cac so le va lon hon 99 bang: " & tong
End If
End Sub
2/ Viết chương trình nhập số thực x và một số nguyên dương n , sau đó tính:
S =










Bài giải
Private Sub Command1_Click()
Dim x!, n%, i%, s!
x = InputBox("Nhap so thuc x")
Do
n = InputBox("Nhap so nguyen duong n")
Loop Until n > 0
Print "So thuc x = " & x & ", so nguyen duong n = " & n
s = 0
For i = 1 To n
s = s + Log(Abs((x ^ i) * i))
Next
Print "Gia tri cua bieu thuc bang: " & s
End Sub



Sinh viên: Trần Văn Khôi-Khoan khai thác B K57-Email:
Page | 15

ĐỀ THI TIN HỌC ĐẠI CƯƠNG (SỐ 12)
Thời gian 60 phút
1/ Giải bất phương trình -7

+ bx + c > 0, với các giá trị thực b và c nhập vào từ bàn phím ?
Bài giải
Private Sub Command1_Click()
Dim b!, c!, delta!, e!, d!
b = InputBox("Nhap so thuc b")
c = InputBox("Nhap so thuc c")
Print "Bat phuong trinh tuong ung la: " & vbCrLf & "7*x^2 - (" & b & ")x - (" & c & ") < 0"
If c = 0 And b <> 0 Then Print "Ngiem cua bat phuong trinh la: 0 < x < " & Round(b / 7, 2)
If b = 0 And c > 0 Then Print "Nghiem cua bat phuong trinh la: " & Round(-Sqr(c / 7), 2) _
& " <= x <= " & Round(Sqr(c / 7), 2)
If b = 0 And c <= 0 Then Print "Bat phuong trinh vo nghiem"
If b <> 0 And c <> 0 Then
delta = b ^ 2 + 28 * c
e = Round(((-1) * b - Sqr(delta)) / 14, 2)
d = Round(((-1) * b + Sqr(delta)) / 14, 2)
Print "Nghiem cua bat phuong trinh la: " & e & " <= x <= " & d
End If
End Sub

2/ Viết chương trình nhập vào một dãy số thực 






(0 < n < 100), sau đó tính:
S = lg
 







Bài giải
Private Sub Command1_Click()
Dim x!(100), n As Byte, i As Byte, s1!
Do
n = InputBox("Nhap so luong phan tu")
Loop Until n > 0 And n < 100
For i = 1 To n
x(i) = InputBox("Nhap phan tu thu " & i)
Next
s1 = 0
For i = 1 To n
s1 = s1 + Abs(x(i))
Next
Print "Gia tri cua bieu thuc bang: " & Round(Log(s1), 3)
End Sub







Sinh viên: Trần Văn Khôi-Khoan khai thác B K57-Email:
Page | 16


ĐỀ THI TIN HỌC ĐẠI CƯƠNG (SỐ 13)
Thời gian 60 phút
1/ Viết chương trình nhập vào một số nguyên dương n, tìm tích các chữ số chẵn của nó ?
Bài giải
Private Sub Command1_Click()
Dim n%, tich%, s$, i%
Do
n = InputBox("Nhap so nguyen duong n")
Loop Until n > 0
s = CStr(n)
tich = 1
For i = 1 To Len(s)
If Mid(s, i, 1) Mod 2 = 0 Then tich = tich * Mid(s, i, 1)
Next
Print "Tich cac chu so chan cua " & n & "la: " & tich
End Sub

2/ Viết chương trình nhập vào một dãy số thực 






(0 < n < 100), sau đó tính trung bình
cộng của dãy số, và đếm các phần tử 

(i = 1,2, n) lớn hơn trung bình cộng này ?
Bài giải
Private Sub Command1_Click()
Dim x!(100), n As Byte, i As Byte, tong!, tbc!, dem As Byte
Do
n = InputBox("Nhap so luong phan tu")
Loop Until n > 0 And n < 100
tong = 0: kq = "Day so (" & n & " phan tu): "
For i = 1 To n
x(i) = InputBox("Nhap phan tu thu " & i)
tong = tong + x(i)
kq = kq & x(i) & Chr(9)
Next
tbc = tong / n: Print kq
Print "Trung binh cong cua day so bang: " & tbc
dem = 0
For i = 1 To n
If x(i) > tbc Then dem = dem + 1
Next
If dem = 0 Then
Print "Khong co phan tu nao lon hon so trung binh cong cua day so."
Else
Print "Co " & dem & " phan tu lon hon trung binh cong cua day so."
End If
End Sub


Sinh viên: Trần Văn Khôi-Khoan khai thác B K57-Email:
Page | 17

ĐỀ THI TIN HỌC ĐẠI CƯƠNG (SỐ 14)
Thời gian 60 phút
1/ Viết chương trình nhập vào một dãy số thực 





(0 < n < 100), sau đó tính và in ra giá
trị của biểu thức:
S =


















Bài giải
Private Sub Command1_Click()
Dim x!(100), n As Byte, i As Byte, tong!, s!, s1!
Do
n = InputBox("Nhap so luong phan tu")
Loop Until n > 0 And n < 100
tong = 0: kq = "Day so (" & n & " phan tu): "
For i = 1 To n
x(i) = InputBox("Nhap phan tu thu " & i)
tong = tong + x(i)
kq = kq & x(i) & Chr(9)
Next
tong = tong ^ 2
Print kq
For i = 1 To n
s = s + x(i) * (2 ^ (i - 1))
Next
s1 = tong * s
Print "Gia tri cua bieu thuc da cho bang: " & s1
End Sub














Sinh viên: Trần Văn Khôi-Khoan khai thác B K57-Email:
Page | 18


2/ Viết chương trình nhập vào 4 số nguyên dương a, b, c, d; xác định xem (a + b +c +d) có chia
hết cho

   

không ? Nếu chia hết thì cho biết thương có bao nhiêu chữ số ?
Bài giải
Private Sub Command1_Click()
Dim a%, b%, c%, d%, s1%, s2%, e%
Do: a = InputBox("Nhap so nguyen duong a"): Loop Until a > 0
Do: b = InputBox("Nhap so nguyen duong b"): Loop Until b > 0
Do: c = InputBox("Nhap so nguyen duong c"): Loop Until c > 0
Do: d = InputBox("Nhap so nguyen duong d"): Loop Until d > 0
Print "Ta co: a = " & a & ", b = " & b & ", c = " & c & ", d = " & d
s1 = a + b + c + d: s2 = Abs(a - b - c - d)
If s1 Mod s2 = 0 Then
e = s1 / s2
Print "Tong " & a & " + " & b & " + " & c; " + " & d & " chia het cho " _
& "| " & a & " - " & b & " - " & c; " - " & d & " |" _
& ", va thuong bang: " & e & "-co " & Len(e) & " chu so"
Else


Print "Tong " & a & " + " & b & " + " & c; " + " & d & " khong chia het cho " _
& "| " & a & " - " & b & " - " & c; " - " & d & " |"
End If
End Sub












Sinh viên: Trần Văn Khôi-Khoan khai thác B K57-Email:
Page | 19

ĐỀ THI TIN HỌC ĐẠI CƯƠNG (SỐ 15)
Thời gian 60 phút
1/ Viết chương trình nhập vào một dãy số thực 





(0 < n < 100), sau đó tính trung bình
cộng các phần tử 


(i = 1,2, n) vừa là số âm vừa nằm trong khoảng (-1000 , -1).
Bài giải
Private Sub Command1_Click()
Dim x!(100), n As Byte, i As Byte, tong!, tbc!, dem As Byte
Do
n = InputBox("Nhap so luong phan tu")
Loop Until n > 0 And n < 100
tong = 0: dem = 0: kq = "Day so (" & n & " phan tu): "
For i = 1 To n
x(i) = InputBox("Nhap phan tu thu " & i)
If x(i) < -1 And x(i) > -1000 Then
tong = tong + x(i)
dem = dem + 1
End If
kq = kq & x(i) & Chr(9)
Next
Print kq
If dem = 0 Then
Print "Khong co phan tu am nao thuoc (-1000,-1)"
Else
tbc = tong / dem
Print "Trung binh cong cua cac phan tu thuoc (-1000,-1) bang: " & tbc
End If
End Sub













Sinh viên: Trần Văn Khôi-Khoan khai thác B K57-Email:
Page | 20

2/ Viết chương trình nhập vào số thực x  0 và một số nguyên dương n, tính và in ra giá trị sau:
 =












Bài giải
Private Sub Command1_Click()
Dim x!, n%, i%, j%, s!, gt%
Do
x = InputBox("Nhap so thuc x <> 0")
n = InputBox("Nhap so nguyen duong n")

Loop Until x <> 0 And n > 0
Print "Ta co: x = " & x & ", n = " & n
s = 0: gt = 1
For i = 1 To n
For j = 1 To n - i
gt = gt * j
Next
s = s + gt / ((Abs(x)) ^ i)
gt = 1
Next
Print "Gia tri cua bieu thuc bang: " & s
End Sub

ĐỀ THI TIN HỌC ĐẠI CƯƠNG (SỐ 16)
Thời gian 60 phút
1/ Viết chương trình tìm các họ nghiệm nguyên dương (x , y) của phương trình sau:
3x + 5y = 535
Bài giải
Private Sub Command1_Click()
Dim x%, y%, i%, j%, a%, b%, s$
s = "Phuong trinh 3x + 5y = 535 co cac ho nghiem nguyen duong sau: " & vbCrLf
a = 535 \ 3: b = 535 \ 5
For i = 1 To a
For j = 1 To b
If 3 * i + 5 * j = 535 Then s = s & "x = " & i & ", y = " & j & vbCrLf
Next
Next
Print s
End Sub




Sinh viên: Trần Văn Khôi-Khoan khai thác B K57-Email:
Page | 21

2/ Viết chương trình nhập vào một dãy số nguyên dương 





(0 < n < 100), sau đó tính
trung bình cộng của các phần tử 

(i = 1,2, n) là số chẵn và nhỏ hơn 1000 ?
Bài giải
Private Sub Command1_Click()
Dim x%(100), n As Byte, i As Byte, tong%, dem As Byte
Do
n = InputBox("Nhap so luong phan tu")
Loop Until n > 0 And n < 100
dem = 0: tong = 0
For i = 1 To n
x(i) = InputBox("Nhap phan tu thu " & i)
If x(i) Mod 2 = 0 And x(i) < 1000 Then
dem = dem + 1
tong = tong + x(i)
End If
Next
If dem = 0 Then

Print "Khong co phan tu nao la so chan va nho hon 1000"
Else
Print "Trung binh cong cua cac phan tu la so chan va nho hon 1000 la: " & _
tong / dem
End If
End Sub
ĐỀ THI TIN HỌC ĐẠI CƯƠNG (SỐ 17)
Thời gian 60 phút
1/ Viết chương trình nhập số thực x và một số nguyên dương n , sau đó tính và in ra giá trị của
biểu thức:
S = 1 – x + 

- 

+ + 




Bài giải
Private Sub Command1_Click()
Dim x!, n%, i%, s!
x = InputBox("Nhap so thuc x")
Do
n = InputBox("Nhap so nguyen duong n")
Loop Until n > 0
Print "So thuc x = " & x & ", so nguyen duong n = " & n
s = 1
For i = 1 To n
s = s + ((-1) ^ i) * (x ^ i)

Next
Print "Gia tri cua bieu thuc bang: " & Round(s, 2)
End Sub


Sinh viên: Trần Văn Khôi-Khoan khai thác B K57-Email:
Page | 22


2/ Viết chương trình nhập vào một dãy số thực 





(n < 100), tìm trung bình cộng của các
phần tử 

nằm trong đoạn



?
Bài giải
Private Sub Command1_Click()
Dim x!(100), n As Byte, i As Byte, tong!, dem As Byte
Do
n = InputBox("Nhap so luong phan tu")
Loop Until n > 0 And n < 100
tong = 0: dem = 0

For i = 1 To n
x(i) = InputBox("Nhap phan tu thu " & i)
If x(i) > -10 And x(i) < 10 Then
tong = tong + x(i)
dem = dem + 1
End If
Next
If dem = 0 Then
Print "Khong co phan tu nao thuoc doan -10;10"
Else
Print "Trung binh cong cua cac phan tu thuoc doan -10;10 bang: " & tong / dem
End If
End Sub












Sinh viên: Trần Văn Khôi-Khoan khai thác B K57-Email:
Page | 23

ĐỀ THI TIN HỌC ĐẠI CƯƠNG (SỐ 18)
Thời gian 60 phút

1/ Viết chương trình nhập vào một dãy số thực 





(n < 100), và nhập vào một số nguyên
dương i với điều kiện 0 < i < n, sau đó đổi chỗ phần tử thứ i cho phần tử thứ nhất của dãy, và in ra
dãy số kết quả ?
Bài giải
Private Sub Command1_Click()
Dim x!(100), n As Byte, i As Byte, j As Byte, kq$, kq1$, tg!
Do
n = InputBox("Nhap so luong phan tu")
Loop Until n > 0 And n < 100
kq = "Day so thuc nhap vao la: " & vbCrLf
For j = 1 To n
x(j) = InputBox("Nhap phan tu thu " & j)
kq = kq & x(j) & Chr(9)
Next
Print kq
Do
i = InputBox("Nhap so nguyen duong i")
Loop Until i > 0 And i < n
kq1 = "Day sau khi doi cho phan tu thu 1 cho phan tu thu " & i & " la: " & vbCrLf
tg = x(1): x(1) = x(i): x(i) = tg
For j = 1 To n
kq1 = kq1 & x(j) & Chr(9)
Next
Print kq1

End Sub

2/ Viết chương trình nhập vào một số nguyên dương n, sau đó tìm tổng chữ số bên trái nhất và chữ
số bên phải nhất của n. Ví dụ: n = 521, chữ số bên trái nhất là 5, chữ số bên phải nhất là 1, tổng là
5 + 1 =6.
Bài giải
Private Sub Command1_Click()
Dim n%, s$, tg$
Do
n = InputBox("Nhap so nguyen duong n")
Loop Until n > 0
Print "So nguyen duong n = " & n
s = CStr(n)
tg = Mid(s, 1, 1): Mid(s, 1, 1) = Mid(s, Len(s), 1): Mid(s, Len(s), 1) = tg
Print "So nhan duoc sau khi dao la: " & s
End Sub

Sinh viên: Trần Văn Khôi-Khoan khai thác B K57-Email:
Page | 24

ĐỀ THI TIN HỌC ĐẠI CƯƠNG (SỐ 19)
Thời gian 60 phút
1/ Viết chương trình nhập số liệu từ tệp “DAYSO.DAT” vào một số thực dương 






(0 < n < 30), sau đó tính:

S = n!


+ (n - 1)!


+ (n – 2)!


+ + 1!


+ 1
Bài giải
Cách 1
Private Sub Command1_Click()
Dim n%, x!(30), i%, s!, gt&, j%, k%
Open App.Path & "\DAYSO.DAT" For Input As #26
Input #26, n
If n < 0 Or n >= 30 Then
MsgBox "Vui long kiem tra lai tep vua chon, so phan tu am hoac vuot qua 29"
Else
gt = 1: s = 1
For i = 1 To n
Input #26, x(i)
If x(i) < 0 Then MsgBox "Co phan tu nho hon 0"
Next
For i = 1 To n
For j = n To 1 Step -1
If i + j = n + 1 Then

For k = 1 To i
gt = gt * k
Next k
s = s + gt * (x(j) ^ (1 / i))
Exit For
End If
Next j
gt = 1
Next i
Print "Gia tri cua bieu thuc bang: " & s
End If
End Sub









Sinh viên: Trần Văn Khôi-Khoan khai thác B K57-Email:
Page | 25

Cách 2
Private Sub Command1_Click()
Dim n As Byte, x!(30), i As Byte, s!, gt&, j As Byte, k As Byte
Open App.Path & "\DAYSO.txt" For Input As #26
Input #26, n
If n < 0 Or n >= 30 Then

MsgBox "Vui long kiem tra lai tep vua chon, so phan tu am hoac vuot qua 29"
Else
gt = 1: s = 1: j = n
For i = 1 To n
Input #26, x(i)
Next
For i = 1 To n
For k = 1 To i
gt = gt * k
Next
s = s + gt * (x(j) ^ (1 / i))
j = j - 1: gt = 1
Next i
Print "Gia tri cua bieu thuc bang: " & s
End If
End Sub

2/ Viết chương trình nhập vào một số nguyên dương n (n > 10), sau đó tìm tổng chữ số lớn nhất
và chữ số nhỏ nhất của n . Ví dụ : n = 478 có chữ số lớn nhất là 8, chữ số nhỏ nhất là 4, tổng của
8 và 4 sẽ là 12.
Bài giải
Private Sub Command1_Click()
Dim n%, s$, i As Byte, max%, min%
Do
n = InputBox("Nhap so nguyen duong n(n > 10)")
Loop Until n > 10
Print "So nguyen n = " & n
s = CStr(n)
max = Mid(s, 1, 1): min = Mid(s, 1, 1)
For i = 2 To Len(s)

If Mid(s, i, 1) > max Then max = Mid(s, i, 1)
If Mid(s, i, 1) < min Then min = Mid(s, i, 1)
Next
Print "Chu so lon nhat la: " & max & ", chu so nho nhat la: " & min
Print "Tong chu so nho nhat va chu so lon nhat cua n bang: " & max + min
End Sub

×