Download as pdf or txt
Download as pdf or txt
You are on page 1of 11

ĐỀ CƯƠNG ÔN TẬP KHỐI 11-không chuyên (môn Tin học)

—---

BÀI 1: KIỂU MẢNG VÀ CẤU TRÚC MẢNG

TRẮC NGHIỆM: (10 câu)


3 câu biết
#1 (0,25đ) Câu 1: Khai báo biến mảng một chiều cần cung cấp những thông tin gì?
A. Tên biến mảng
B. Tên biến mảng, kiểu dữ liệu, kích thước
C. Kiểu dữ liệu
D. Kích thước

#1 (0,25đ) Câu 2: Một ô nhớ được đánh số gọi là?


A. Sao lưu truy cập
B. Phân phối truy cập
C. Ô nhớ truy cập
D. Địa chỉ truy cập

#1 (0,25đ) Câu 3: Trong bộ nhớ, dung lượng mảng một chiều được tính bằng?
A. Độ dài kiểu dữ liệu x chiều cao kiểu dữ liệu
B. Kích thước x chiều cao kiểu dữ liệu
C. Kích thước x độ dài kiểu dữ liệu
D. Kích thước x chiều dài kiểu dữ liệu

3 câu hiểu
#2 (0,5đ) Câu 1: Với mảng số thực, ta coi một ô nhớ chưa vừa đúng bao nhiêu số
thực ?
A. Hai
B. Ba
C. Một
D. Bốn

#2 (0,5đ) Câu 2: Mảng có kích thước n thì các phần tử mảng được đánh chỉ số tuần
tự từ ?
A. 0 đến n – 2
B. 0 đến n - 3
C. 0 đến n – 1
D. 0 đến n - 4
#2 (0,5đ) Câu 3: Các hàm có thể dùng cho kiểu mảng cũng như kiểu danh sách là?
A. Max,min
B. max,min,sum
C. min,sum
D. max,sum

2 vận dụng thấp:


#3 (0,5đ) Câu 1: Để gọi đến phần tử đầu tiên trong danh sách a ta dùng lệnh:
A. a.[1]
B. a[0]
C. a.0
D. a[]

#3 (0,5đ) Câu 2: Phương thức nào sau đây dùng để thêm phần tử vào list trong
python?
A. abs()
B. link()
C. append()
D. add()

#3 (0,5đ) Câu 3: Để khởi tạo danh sách b có 5 phần tử 1, 2, 3, 4, 5 ta dùng cú pháp:


A. b = 1, 2, 3, 4, 5
B. b = (1, 2, 3, 4, 5)
C. b = [1..5]
D. b = [1, 2, 3, 4, 5]

2 vận dụng cao:


#4 (0,5đ) Câu 1: Đoạn lệnh sau làm nhiệm vụ gì?
c=[]
for i in range(5):
c.append(int(input()))
A. Nhập dữ liệu từ bàn phím cho mảng c có 5 phần tử là số nguyên.
B. Nhập dữ liệu từ bàn phím cho mảng c có 5 phần tử là số thực.
C. Nhập dữ liệu từ bàn phím cho mảng c có 5 phần tử là xâu.
D. Không thực hiện nhiệm vụ gì.

#4 (0,5đ) Câu 2: Xét chương trình sau đây:


A=[2,4,3,-7]
S=0
for i in range(len(A)):
if A[i] > 0:
S = S + A[i]
print(S)
Hỏi: chương trình trên thực hiện công việc gì?
A. Duyệt từng phần tử trong A.
B. Tính tổng các phần tử trong A.
C. Tính tổng các phần tử không âm trong A.
D. Tính tổng các phần tử dương trong A.

#4 (0,5đ) Câu 3: Xét đoạn chương trình sau đây:


A = [2, 3, 5, 6]
A. append(4)
del (A[2])
Hỏi: Danh sách A sẽ như thế nào sau khi thực hiện đoạn chương trình trên?
A. 2, 3, 4, 5, 6, 4. B. 2, 3, 4, 5, 6.
C. 2, 4, 5, 6. D. 2, 3, 6, 4.

TỰ LUẬN: (3 câu)
Câu 1: Thời gian thực hiện hằng số là gì?
Một câu lệnh máy, một thuật toán, một chương trình được coi là có thời gian
thực hiện hằng số nếu thời gian thực hiện đều không vượt quá một hằng số cho
trước, không phụ thuộc kích thước dữ liệu đầu vào
Câu 2: Trong Python kiểu danh sách có những lợi thế gì so với kiểu mảng?
Kiểu danh sách linh hoạt hơn nhiều và có thêm một số hàm (phương thức) mà
kiểu mảng không áp dụng được
Câu 3: Để sử dụng một số hàm gộp và hàm phân tích thống kê, ta cần khai báo
mô đun statistics ở đầu chương trình theo cú pháp như thế nào?
from statistics import *

BÀI 2 TIN 11

10 CÂU TRẮC NGHIỆM


4 Nhận biết
Câu 1: mảng hai chiều là gì? (NB)
A. Là mảng một chiều mà mỗi phần tử là 2 mảng 1 chiều
B. Là mảng 2 chiều mà mỗi phần tử là một mảng một chiều
C. Là mảng một chiều mà mỗi phần tử là một mảng một chiều
D. Là mảng một chiều mà mỗi phần tử là một mảng hai chiều

Câu 2: khai báo mảng hai chiều cung cấp những thông tin gì? (NB)
A. Tên biến mảng
B. Kiểu dữ liệu
C. Kích thước
D. Tất cả đáp án trên đều đúng

Câu 3: điền từ thích hợp vào chỗ trống


Trong bộ nhớ, mảng hai chiều cũng được tổ chức tương tự như mảng một
chiều, tức là lưu trữ thành một khối các ô nhớ ...
A. xếp chồng
B. liên tục
C. ngang hàng
D. rời rạc

3 câu Thông hiểu


Câu 4: các thông tin có trong khai báo mảng hai chiều giúp máy tính làm gì?
(TH)
A. Xác định dung lượng phần bộ nhớ dành cho một biến mảng ba chiều
B. Xác định dung lượng phần bộ nhớ dành cho một biến mảng một chiều
C. Xác định dung lượng phần bộ nhớ dành cho một biến mảng hai chiều
D. Xác định thời gian lưu trữ cho mảng 2 chiều

Câu 5: thời gian thực hiện các phép toán trên tất cả các phần tử của mảng
2 chiều sẽ phụ thuộc vào đâu? (TH)
A. Độ dài của cột (m)
B. Kiểu dữ liệu của phần tử
C. Độ dài của hàng (n) và cột (m)
D. Độ dài của hàng (n)

Câu 6: Cách khai báo mảng 2 chiều nào dưới đây là đúng trong Python? (TH)
A. array = [1, 2, 3, 4]
B. array = [[1, 2], [3, 4]]
C. array = (1, 2, 3, 4)
D. array = {1, 2, 3, 4}

2 CÂU VẬN DỤNG

Câu 7: Làm thế nào để tạo một mảng hai chiều có kích thước x hàng và y cột
trong Python? (VD)
A. array = [[0] * x] * y
B. array = [[0] * y] * x
C. array = [[0] * y for _ in range(x)]
D. array = [[0] * x for _ in range(y)]

Câu 8: Làm thế nào để thay đổi giá trị của một phần tử trong mảng hai chiều?
(VD)
A. array[chỉ số hàng][chỉ số cột] = giá trị
B. array[chỉ số cột][chỉ số hàng] := giá trị
C. array[giá trị][chỉ số hàng][chỉ số cột]
D. array[giá trị]=[chỉ số hàng][chỉ số cột]

2 CÂU VẬN DỤNG CAO


Câu 9: Dự đoán kết quả chạy chương trình sau? (VDC)
diem = [[7.5, 6.5, 5.0],
[5.0, 9.0, 4.5],
[8.5, 8.0, 8.0],
[4.5, 5.5, 7.0]]
i=1
diemHS = diem[i]
mon = ['Toán', 'Văn', 'Tin']
hoten = 'Học sinh ' + str(i + 1)
print(diemHS)

A. [7.5, 6.5, 5.0]


B. [5.0, 9.0, 4.5]
C. [8.5, 8.0, 8.0]
D. [4.5, 5.5, 7.0]

Câu 10: Theo em, chương trình sau giải bài toán gì? (VDC)
diem = [[7.5, 6.5, 5.0],
[5.0, 9.0, 4.5],
[8.5, 8.0, 8.0],
[4.5, 5.5, 7.0]]
i=2
diemHS = diem[i]
mon = ['Toán', 'Văn', 'Tin']
hoten = 'Học sinh ' + str(i + 1)
dmax = max(diemHS)
dmin = min(diemHS)
dtrungbinh = sum(diemHS) / len(diemHS)
print(hoten)
print('Điểm cao nhất:', dmax)
print('Điểm thấp nhất:', dmin)
print('Điểm trung bình các môn: ', dtrungbinh)

A. in ra tên học sinh có chỉ số 2 kèm điểm cao nhất, điểm thấp nhất, điểm trung
bình các môn.
B. in ra tên học sinh có chỉ số 3 kèm điểm cao nhất, điểm thấp nhất, điểm trung
bình các môn.
C. in ra tên học sinh có chỉ số 1 kèm điểm cao nhất, điểm thấp nhất, điểm trung
bình các môn.
D. in ra tên học sinh có chỉ số 5 kèm điểm cao nhất, điểm thấp nhất, điểm trung
bình các môn.

3 CÂU TỰ LUẬN

Câu 11: Để mô tả mảng 2 chiều, ngoài kiểu mảng (array trong thư viện numpy)
ta còn có thể sử dụng kiểu dữ liệu nào để mô tả? (NB)
TL : Kiểu danh sách
Câu 12: Thời gian thực hiện tuyến tính là gì? (TH)
TL: Một câu lệnh máy, một thuật toán, một chương trình được coi là có thời gian thực
hiện tuyến tính nếu số thao tác để hoàn thành nó tỉ lệ thuận (nhân thêm hằng số) với
kích
thước dữ liệu đầu vào.
Câu 13: Viết chương trình tạo một ma trận có 5 dòng, 4 cột, gán giá trị trực tiếp
trong chương trình. Trên mỗi dòng của ma trận: Hãy in ra số lớn nhất, số nhỏ
nhất, trung bình cộng của dòng đó. Sau cùng in ra tổng tất cả các phần tử của ma
trận (VDC)
TL: Cách 1: dùng list
# Tạo ma trận dưới dạng danh sách
matran = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15, 16],
[17, 18, 19, 20]
]
# In ma trận
print("Ma trận:")
for dong in matran:
print(dong)
# In số lớn nhất, số nhỏ nhất, trung bình cộng của mỗi dòng
for i, dong in enumerate(matran):
max_dong = max(dong)
min_dong = min(dong)
trung_binh_dong = sum(dong) / len(dong)
print("Dòng ",i+1," Số lớn nhất: ",max_dong," Số nhỏ
nhất: ",min_dong," Trung bình cộng: ",trung_binh_dong)
# Tính tổng tất cả các phần tử của ma trận
tong_phan_tu = sum(sum(dong) for dong in matran)
print("Tổng tất cả các phần tử của ma trận: ",tong_phan_tu)

TL: Cách 2: dùng array


import numpy as np
# Tạo ma trận
matran = np.array([[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15, 16],

[17, 18, 19, 20]])


# In ma trận
print("Ma trận:")
print(matran)
# In số lớn nhất, số nhỏ nhất, trung bình cộng của mỗi dòng
for i in range(matran.shape[0]):
dong_i = matran[i, :]
max_dong = np.max(dong_i)
min_dong = np.min(dong_i)
trung_binh_dong = np.mean(dong_i)
print("Dòng ",i+1," Số lớn nhất: ",max_dong," Số nhỏ
nhất: ",min_dong," Trung bình cộng: ",trung_binh_dong)
# Tính tổng tất cả các phần tử của ma trận
tong_phan_tu = np.sum(matran)
print("Tổng tất cả các phần tử của ma trận: ",tong_phan_tu)
Bài 3 FCS – Tin học 11
I. Biết:
Câu 1. Cho a là một danh sách casc số nguyên. Hãy dùng lát cắt tạo danh sách b là
đoạn con từ
chỉ số 1 đến 4:
A. b=a[1:5]
B. b=a[1:]
C. b=a[1:4]
D. b=a[:5]

Câu 2. Cho a là danh sách các số gồm n phần tử. Hãy dùng lát cắt tạo danh sách b là
nữa cuối của a:
A. b = a[n//2:]
B. b = a[n//2:]
C. b = a[::n//2]
D. b = a[n//2::]
Câu 3. Cho a là danh sách các số gồm n phần tử. Hãy dùng lát cắt tạo danh sách b là
các phần tử có chỉ số chẵn của a:
A. a[0:n:2] hoặc b =a[::2]
B. a[0:n:1]
C. a[1:n:2]
D. a[::1]
II. Hiểu:
Câu 4. Hãy cho biết kết quả của đoạn chương trình sau:
a=[0, 3, 11, 2024, 16]
print(a[1:4])

A. [3, 11, 2024]


B. [0, 3, 11]
C. [0, 3, 11, 2024]
D. [3, 11, 2024, 16]

Câu 5. Với đoạn lệnh sau:


a = [[1,2,3],[4,5,6],[7,8,9]]
b = a[1][::2]
Ta có danh sách b là:
A. [4, 6]
B. [1, 3]
C. [7, 9]
D. [0, 0]
Câu 6. Cho biết kết quả xuất ra màn hình của chương trình sau:
a=[ [1,2,3],
[0,5,6],
[7,8,9] ]
sum=0
for i in range(3):
sum=sum+a[i][i]
print(sum)

A. 15
B. 6
C. 11
D. 8

III. Vận dụng thấp :


Câu 7. Viết câu lệnh mở tệp DAYSO.INP để đọc dữ liệu vào:
A. fi = open("DAYSO.INP","r")
B. fi = open("DAYSO.INP","w")
C. open("DAYSO.INP","r")
D. fi = open(DAYSO.INP)

Câu 8. Viết câu lệnh mở tệp để ghi dữ liệu ra tệp DAYSO.OUT


A. fo = open("DAYSO.OUT","w")
B. fo = open("DAYSO.OUT","r")
C. open("DAYSO.OUT","w")
D. fo = open("DAYSO.OUT")

IV. Vận dụng cao:


Câu 9. Ý nghĩa của đoạn chuong trình sau là gì?
fi=open("DAYSO.INP","r")
n=int(fi.readline())
a=list(map(int,fi.readline().split()))
A. mở tệp DAYSO.INP, sau đó đọc dữ liệu được ghi trong tệp vào các biến n và a.
B. mở tệp DAYSO.INP, sau đó ghi dữ liệu được ghi trong tệp vào tệp.
C. Nhập dữ liệu vào từ bàn phím vào các biến n và a.
D. mở tệp DAYSO.INP, sau đó nhập dữ liệu từ bàn phím vào cho các biến n và a.

Câu 10. Ý nghĩa của chương trình sau là gì?


f=open("DAYSO.OUT","w")
n = int(input())
a=[]
for i in range(n):
x=int(input("Nhap x="))
a.append(x)
sys.stdout = f
print(n)
for i in range(n):
print(a[i],end=' ')
f.close()

A. mở tệp DAYSO.OUT, sau đó ghi giá trị của biến n và mảng a vào tệp
DAYSO.OUT.
B. mở tệp DAYSO.OUT, sau đó đọc dữ liệu được ghi trong tệp vào bộ nhớ trong.
C. Nhập dữ liệu vào từ bàn phím vào các biến n và a.
D. mở tệp DAYSO.OUT, sau đó nhập dữ liệu từ bàn phím vào cho các biến n và a.

IV. BÀI TẬP


Biết:
Câu 1. Cho a là danh sách các số nguyên. Viết lệnh tạo danh sách b gồm các phần
tử có chỉ số từ 2 đến 5 của a?
Đáp án:
a=[1,2,3,4,5,6,7,8]
print(a[2:6])

Câu 2. Cho a là mảng hai chiều gồm n hàng và n cột. Viết lệnh tạo danh sách b
gồm các cột cóchỉ số chẵn của a.
Đáp án:
a=[[1,2,3],[4,5,6],[7,8,9],[10,11,12]]
b=a[::2]
print("Các hàng có chỉ số chẳn của a",b)

Hiểu: Viết đoạn chương trình thực hiện việc mở tệp SO.OUT và ghi các số
nguyên từ 1 đến 10 vào tệp SO.OUT.
Đáp án:
import sys
f=open("SO.OUT","w")
sys.stdout=f
for i in range(1,11):
print(i,end=' ')
f.close()
Vận dụng.
Cho tệp DAYSO.INP có cấu trúc như sau:
+ Dòng đầu ghi số nguyên dương n
+ Dòng 2 ghi n số nguyên a1, a2, ..., an cách nhau dấu cách
Viết chương trình đọc dữ liệu từ tệp DAYSO.INP và xuất kết quả ra màn hình tổng
các số nguyên a1+a2+...+an

Ví dụ:
DAYSO.INP Kết quả ra màn hình
5
12345
15

Đáp án:
fi=open("DAYSO.INP","r")
n=int(fi.readline())
a=list(map(int,fi.readline().split()))
tong=0
n=len(a)
for i in range(n):
tong+=a[i]
print(tong)

You might also like