TUYỂN TẬP ĐỀ THI TIN CÓ ĐÁP ÁN
Trang 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 x1, x2, … , xn (n < 100), sau đó tìm các phần tử xi vừa là sô chẵn vừa chia hết cho 13, nếu không có phần tử xi 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
Trang 22/ 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%
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"
Private Sub Command1_Click()
Dim n%, x%(500), i%, dem%
Open App.Path & "\DAYSO.DAT " For Input As #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
Trang 32/ 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*b2 đạt cực đại
Print "So " & n; " bang tong cua " & a & " + " _
& b; " va tich " & a & " * " & "(" & b & " ^ 2) lon nhat"
End Sub
Trang 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 = ∑𝑛𝑖=1( 𝑡𝑔𝑖 ∑ 1
𝑗‼
𝑖 𝑗=1 ) , trong đó j!! = {1.3.5 … 𝑗 𝑛ế𝑢 𝑗 𝑙ẻ
Print "So nguyen duong nhap vao la: " & n
kq = "Gia tri cua bieu thuc voi n = " & n & " la: " & xd
Trang 52/ 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$
Trang 62/ 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"
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 = 52)
Bài giải
Private Sub Command1_Click()
Dim n%, i%, a As Byte
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
Trang 72/ 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”
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
Trang 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 = √|𝑎|−1 + √|𝑎| −2 + ⋯ + √|𝑎| −𝑛
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 = 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
Trang 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 x1, x2, … , xn (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
Trang 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 x1, x2, … , xn (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
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"
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
Trang 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 x1, x2, … , xn (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 [−100; 100] ?
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)
Trang 122/ 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:
Private Sub Command1_Click()
Dim x!, n%, i%, u!, j%, gt%
Trang 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 x1, x2, … , xn (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 = √𝑎 + √𝑎2 + √𝑎 3 + ⋯ + √𝑎 𝑛
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
Trang 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 x1, x2, … , xn (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)
Trang 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𝑥2 + 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"
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
Trang 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ó ?
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)
Trang 17ĐỀ THI TIN HỌC ĐẠI CƯƠNG (SỐ 14)
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)
Trang 182/ 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
Trang 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 x1, x2, … , xn (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)
Trang 202/ 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:
n = InputBox("Nhap so nguyen duong n")
Loop Until x <> 0 And n > 0
Print "Ta co: x = " & x & ", n = " & n
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