You are on page 1of 11

1

TRƯỜNG THPT NGUYỄN TRÃI CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
TỔ CÔNG NGHỆ - TIN HỌC Độc lập – Tự do – Hạnh phúc

ĐỀ CƯƠNG THI HỌC KÌ II


NĂM HỌC 2021 – 2022
1. Cấu trúc đề: 5 điểm trắc nghiệm(20 câu), 5 điểm tự luận: 2 câu. Một câu điền khuyết,
một câu viết chương trình.
2. Nội dung:
Bài Nội dung
 Nhận biết được các bài toán sử dụng kiểu dữ liệu xâu.
 Biết cú pháp khai báo kiểu xâu.
 Viết được câu lệnh khai báo biến kiểu xâu.
 Thực hiện so sánh được 2 xâu.
12  Hiểu được ý nghĩa của các hàm, thủ tục xâu Length(), Delete(), Insert(),
Copy(), Pos(), Upcase().
 Viết được câu lệnh duyệt xâu để thực hiện các thao tác như: đếm số lượng
kí tự, tìm kiếm, các thao tác có sử dụng hàm xử lý xâu: chèn, xóa, sao
chép, tìm vị trí.
 Biết cú pháp khai báo biến kiểu tệp.
 Biết cú pháp sử dụng trong các bước đọc tệp và ghi tệp.
 Viết được câu lệnh khai báo biến kiểu tệp.
 Hiểu được ý nghĩa của câu lệnh trong các thao tác đọc tệp và ghi tệp.
 Phân biệt được sự khác nhau khi đọc dữ liệu từ tệp dùng Read và Readln,
14+15
ghi dữ liệu xuống tệp dùng write và writeln.
 Viết được câu lệnh để thực hiện các thao tác: Gắn tên tệp, mở tệp để
đọc(ghi), đọc(ghi) tệp, đóng tệp.
 Viết được chương trình thực hiện các thao tác đọc dữ liệu từ tệp *.inp và
ghi dữ liệu xuống tệp *.out.
17+18  Biết các dạng chương trình con.
2

 Biết khái niệm chương trình con.


 Nhận dạng được các đối tượng trong chương trình con: Tên chương trình
con, biến toàn cục, biến cục bộ, tham số hình thức, tham số thực sự, tham
biến, tham trị, lời gọi chương trình con.
 Đọc được kết quả của chương trình con .

3. Câu hỏi minh họa


Câu 1: Cho bài toán sau: nhận biết kiểu dữ liệu của bài toán

Kiểu xâu

Câu 2: Cú pháp khai báo biến kiểu xâu là gì?

A. Var <tên biến xâu> : string[độ dài lớn nhất]; B. Var <tên biến xâu> : string;

C. Var <tên biến xâu> : string[độ dài lớn nhất] D. Var <tên biến xâu> : text;

Câu 3: Trong các phép so sánh xâu dưới đây, phép so sánh nào cho kết quả TRUE?

A. 'dan' > 'do' B. 'bac' = 'BAC' C. 'hoan' < 'ho' D. 'an' > 'An'

Câu 4: Cho khai báo Var S: String[30]; S:='phuong no'; câu lệnh Upcase(s[5]) cho kết quả là
gì?

A. 'N' B. n C. 'n' D. N

Câu 5: Cho khai báo Var S: string[30]; S:='mua uoc nguyen'; câu lệnh Pos('uoc', S) có kết
quả là gì?

A. 7 B. 6 C. 4 D. 5

Câu 6: Cho khai báo Var S: string[30]; S:='phuong no tham'; câu lệnh Length(s) có kết quả là
gì?

A. 12 B. 14 C. 15 D. 13

Câu 7: Cho khai báo Var S: string[30]; S:='He ve'; câu lệnh Insert('2020', S,3) có kết quả là
gì?

A. 'He ve2020' B. 'He2020 ve' C. 'He2020ve' D. 'Heve2020'


3

Câu 8: Cho khai báo Var S : string[30]; S:='Mung sn Bac Ho'; câu lệnh Delete(S, 1, 5) có kết
quả là gì?

A. 'Mungsn Bac Ho' B. 'Bac Ho' C. 'Mung' D. 'sn Bac Ho'

Câu 9: Cho khai báo Var S: string[30]; S:='ve ve, he ve'; câu lệnh Copy(S, 4, 2) có kết quả là
gì?

A. 've' B. 'he' C. 've ve' D. 've,'

Câu 10: Cho S là biến có kiểu xâu. Khai báo nào sau đây chưa hợp lệ?

A. Var s:string[259]; B. Var s:string[200]; C. Var S : string[20]; D. Var S: string;

Câu 11: Biểu thức 'uoc' > 'mo' cho kết quả là gì?

A. 3>2 B. 'uoc mo' C. False D. True

Câu 12: Cho S:='tutin' ; Câu lệnh nào sau đây có chức năng chèn thêm một khoảng trắng vào
giữa 2 từ 'tu' và 'tin'?

A. Insert(' ',S,1) B. Insert(' ',S,3) C. Insert(S,' ',3) D. Insert(' ',S,2)

Câu 13: Cho s:='hoa phuong'; Câu lệnh nào sau đây tham chiếu đến kí tự 'p' ?

A. s(5) B. s[5] C. s{4} D. s[4]

Câu 14: Cho s:='Tp.Ho Chi Minh'; Câu lệnh nào sau đây xóa kí tự trắng đầu tiên trong xâu s?

A. Delete(s,5,1) B. Delete(s,6,1) C. Copy(s,5,1) D. Length(s)

Câu 15: Cho s:='Tp.Ho Chi Minh'; Câu lệnh nào sau đây sao chép xâu 'Chi' từ xâu s?

A. Copy(s,5,3) B. Copy(s,7,3) C. Copy(s,6,3) D. Copy(s,5,2)

Câu 16: Cho s1:='thpt '; s2:='Nguyen Trai' .Câu lệnh nào sau đây tạo ra xâu S3:='thpt Nguyen
Trai' ?

A. Copy(s1,s2,1) B. Insert(s1,s2,1) C. Insert(s2,s1,1) D. Copy(s1,s2,2)

Câu 16: Cho s:='Nguyen Trai' .Câu lệnh nào kiểm tra sự tồn tại của kí tự 'a' trong xâu s?

A. Pos(a, s) B. Pos('a', s) C. Copy('a',s,1) D. Upcase('a')


4

Câu 17: Cho khai báo var s: string[30]; Câu lệnh nào sau đây đếm số lượng kí tự 'a' của xâu s?

A. dem:=0; For i:=1 to length(s) do if s[i]=a then dem:=dem+1;

B. dem:=0; For i:=1 to length(s) do if s[i]='a' then dem:=dem+1;

C. dem:=0; For i:=1 to length(s) do dem:=dem+1;

D. dem:=0; For i:=1 to length(s) do if si=a then dem:=dem+1;

Câu 18: Câu lệnh sau đây dùng khai báo một biến kiểu tệp. Hãy chọn câu lệnh khai báo hợp
lệ ?
A. Var f:text; B. Var f : String; C. Var 9f : text; D. Var f : tex;
Câu 19: Thủ tục gắn tên tệp là:

A. Assign(<tên biến tệp>); B. Assign(<tên biến tệp>,<Tên tệp>);

C. Assign(<Tên tệp>); D. Assign(<tên tệp>,<Tên biến tệp>);

Câu 20: Thủ tục mở tệp để ghi dữ liệu là:

A. Close(<Tên biến tệp>); B. Assign(<Tên biến tệp>);

C. Rewrite (<Tên biến tệp>); D. Reset(<Tên biến tệp>);

Câu 21: Câu lệnh nào dưới đây dùng ghi xâu 'hello' xuống tệp? Với f là tên biến tệp

A. Reset(f); B. Read(f, 'hello'); C. Assign(f, 'hello'); D. write(f,'hello');

Câu 22: Câu lệnh nào dưới đây dùng đọc giá trị một số nguyên bất kỳ cho biến x?

A. Assign(f, x); B. Read(f, x); C. write(f, x); D. Read(f);

Câu 23: Quan sát đoạn chương trình dưới đây.

Var f: text; x, y, z, t: integer;

Begin

Assign(f,'text.inp');
Reset(f); Read(f, x);
Readln(f, y, z);
Read(f, t);
Close(f);
End.
5

Kết thúc đoạn chương trình trên, giá trị của x, y, z, t lần lượt là bao nhiêu?

A. 3, - 3, 4, 9 B. 3, 5, - 7, -3 C. 3, -3, 9, 3 D. 3 , 5 – 7, 4

Câu 24: Quan sát chương trình sau, cho biết kết quả xuất ra chương trình lần lượt là gì?

Var f:text; a, b, c, d : byte;

Begin

Assign(f, 'd:\input.inp'); reset(f);


Read(f, a); Readln(f, b);
Read(f, c, d); Close(f);
Write(a:3, b:3, c:3, d:3); Readln;
End.

A. 5 12 4 1 B. 5 12 9 4 C. 5 12 4 8 D. 5 4 8 1

Câu 25: Giả sử tồn tại tệp tên bieuthuc.out. Giả sử biến tệp f đã khai báo, f đã gắn với tệp
bieuthuc.out. Tệp bieuthuc.out đã được mở. Câu lệnh nào sau đây dùng ghi giá trị của biểu
thức 4*a+5*b xuống tệp bieuthuc.out?

A. Read(f, 4*a+5*b); B. write(f, '4*a+5*b'); C. Rewrite(f); D. write(f, 4*a+5*b);

Câu 26: Cho khai báo: Var f : text; Trong bộ nhớ máy tính, tại ổ D có tệp tên là input.inp
chứa dữ liệu là 2 số nguyên. Câu lệnh nào dưới đây dùng để gắn biến tệp f với tệp input.inp ?  

A. Assign(f, D:\input.inp); B. Assign(f, 'input.txt')

C. Assign(f,'input.inp'); D. Assign(f, 'D:\input.inp');

Câu 27: Cho khai báo Var f : text; Câu lệnh nào sau đây dùng để mở tệp để đọc dữ liệu?

A. Reset(f); B. Read(f, x); C. Rewrite(f); D. Write(f, x);

Câu 28: Cho khai báo: Var f : text; a, b: byte; Trong bộ nhớ máy tính, tại ổ D có tệp tên là
input.inp chứa dữ liệu là 2 số nguyên. Câu lệnh nào dưới đây dùng để đọc dữ liệu từ tệp
input.inp cho 2 biến a và b.
6

A. Readln(f, x); Readln(f, y); B. Readln(x, y);

C. Readln(f, x, y); D. Write(f, x, y);

Câu 29: Cho khai báo Var f : text; Câu lệnh nào sau đây dùng để mở tệp để ghi dữ liệu?

A. Write(f, x); B. Read(f, x); C. Rewrite(f); D. Reset(f);

Câu 30: Quan sát đoạn chương trình sau.

Var f:text; s:string[30];

Begin

S:='thang sau mua thi';

Assign(f, 'count.txt');

Rewrite(f);

For i:=1 to length(s) do

If s[i]='t' then write(f, s[i]);

Close(f);

End.

Hãy cho biết tệp count.txt chứa dữ liệu là gì sau khi thực hiện chương trình trên?

A. 2 B. tt C. 'thang sau mua thi' D. t

Câu 31: Quan sát đoạn chương trình sau:

Var f : text; x, y: byte;

Begin

x:=12; y:=9;

assign(f,'cau1.inp'); {1}

write(f, x mod y); {2}

rewrite(f); {3}

close(f); {4}
7

End.

Các dòng lệnh được đánh số từ 1 đến 4 đã bị đảo lộn thứ tự. Em hãy chọn thứ tự sắp xếp đúng
cho các dòng lệnh này?

A. 1, 3, 4, 2 B. 2, 1, 3, 4 C. 1, 4 , 2, 3 D. 1, 3, 2, 4

Câu 32:

Quan sát chương trình sau:

Program kiemtra;

Var a:integer;

Procedure ct3;

Var a,b:integer;

Begin

a:=2; b:=1; a:=a+b;

write(a);

End;

Begin

a:=5; Ct3;

Write(a);

End.

Kết quả của chương trình trên sẽ là:

A. 3 5 B. 5 3 C. 2 5 D. 5 2

Câu 33: Quan sát đoạn chương trình sau. Hãy cho biết, sau khi thực hiện đoạn chương trình này,
giá trị xuất ra màn hình máy tính là gì?

Var f : text; a, b: byte;


15 9 6
Begin
4 3 2
Assign(f, 'cau2.inp');

Reset(f);
8

Readln(f,a); Read(f,b);

Close(f); write(a div b);

End.

A. 15 B. 1 C. 4 D. 3

Câu 34: Cho khai báo var f:text; Giả sử f đã gắn với tệp diem.inp. Tệp đã mở để chuẩn bị ghi dữ
liệu. Để ghi dữ liệu xuống tệp diem.inp . Người ta đã thực hiện câu lệnh ghi dữ liệu xuống tệp
như sau. Câu lệnh nào sau đây là hợp lệ để tệp diem.inp chứa dữ liệu như hình dưới đây?

A. write(f,'Nguyen Lan Anh', 9,' ', 8, ' ', 8.5); B. write('Nguyen Lan Anh', 9,' ', 8, ' ', 8.5);

C. writeln(f,'Nguyen Lan Anh', 9,' ', 8, ' ', 8.5); D. writeln(f,'Nguyen Lan Anh');

Nguyen Lan Anh Write(f, 9,' ', 8, ' ', 8.5);

9 8 8.5

Câu 35: Cho S:='khat vong song'. Câu lệnh Copy(s, length(S)-3, 4) có kết quả là gì?

A. 'song' B. 'vong' C. 'khat vong' D. 'khat'

Câu 36: Cho S:='uoc mo'. Câu lệnh Delete(S,pos(' ',s),2) có kết quả là gì?

A. 'uoc' B. 'uoco' C. 'uocmo' D. 'mo'

Câu 37: Cho khai báo Var f: text; a, b : byte; Câu lệnh nào sau đây có chức năng ghi kết quả
của phép chia lấy phần dư của phép chia: a chia b xuống tệp?

A. write(f, a mod b); B. write(f, 'a mod b'); C. writeln(a mod b); D. write(f, a div b);
9

Câu 38:

Var x:word; b: longint;

Function GT(k: word):longint;

Var i: integer; kq:longint;

Begin

kq:=1;

For i:=2 to k do kq:=kq*i;

GT:=kq;

End;

Begin

x:=5;

b:=GT(5); writeln(b);

End.

Hãy cho biết kết quả của chương trình trên?

A. 5 B. 10 C. 24 D. 120

Câu 39: Cho khai báo Var f: text; và tệp tên dulieu.out đã mở để sẵn sàng lưu trữ dữ liệu.

Câu lệnh write(f, (15 mod 9) div 2, '*',2) sẽ ghi dữ liệu là gì xuống tệp dulieu.out ?

A. (15 mod 9) div 2 * 2 B. 0 * 2 C. 3*2 D. 1 div 2 *2

Câu 40:

Quan sát đoạn chương trình dưới đây.

Program kiemtra;

Var x,y:integer;

Procedure ct1( a,b: integer);

Begin

a:=a+1;
10

b:=b+a;

End;

BEGIN

x:=2; y:=3;

ct1(x,y);

END.

Kết thúc chương trình, giá trị x và y lần lượt là:

A. 3, 3. B. 2, 3 C. 3, 6 D. 6, 3

PHẦN TỰ LUẬN

CÂU 1: Quan sát đoạn chương trình con sau:

Program Tinhtong;

Var s,x,y:integer;

Function Tong(a,b:integer):integer;

Var kq:integer;

Begin

Kq:=a+b;

Tong:=kq;

End;

Begin

Readln(x,y);

S:=Tong(x,y);

Write(x,’+’,y,’=’,s);

End.

HÃY ĐIỀN VÀO CHỖ TRỐNG:


1. Tên chương trình con là:................................................................................
11

2. Tên của tham số hình thức là:........................................................................


3. Kiểu dữ liệu trả về của ctc là:.........................................................................
4. Tên biến cục bộ là:.........................................................................................
5. Tên biến toàn cục là:......................................................................................
6. Lời gọi chương trình con là:...........................................................................
7. Câu lệnh trả về giá trị cho ctc là:....................................................................
8. Chương trình con thuộc dạng nào:.................................................................
CÂU 2: VIẾT CHƯƠNG TRÌNH THỰC HIỆN CÁC YÊU CẦU SAU:

1. Tệp daonguoc.inp chứa một dòng chữ có tối đa 20 kí tự. . Hãy viết chương trình đọc
dòng chữ này từ tệp daonguoc.inp, sau đó tiến hành tạo xâu đảo ngược và Ghi xuống tệp
daonguoc.out

2. Tệp chiadu.inp chứa 2 số nguyên, dương. Mỗi số cách nhau ít nhất một khoảng trắng.
Hãy viết chương trình đọc 2 số nguyên này từ tệp chiadu.inp, sau đó tính phần dư của
phép chia: Số thứ nhất chia số thứ 2 và Ghi kết quả xuống tệp chiadu.out.

3. Tệp timmax.inp chứa 3 số nguyên. Mỗi số cách nhau ít nhất một khoảng trắng. Hãy viết
chương trình đọc 3 số nguyên này từ tệp timmax.inp, sau đó tìm giá trị lớn nhất của 3 số
nguyên này và Ghi kết quả xuống tệp timmax.out.

4. Tệp xulyx.inp chứa một dòng chữ có tối đa 20 kí tự. Hãy viết chương trình đọc dòng chữ
này từ tệp xulyx.inp. Sau đó thực hiện xóa trong xâu này 3 kí tự, vị trí bắt đầu xóa là vị trí
kí tự thứ 2. Xuất xâu sau khi xóa ra màn hình máy tính.

5. Nhập từ bàn phím một dòng chữ có tối đa 20 kí tự. Viết chương trình đếm số lượng kí tự
số trong xâu đã nhập. Sau đó, ghi kết quả xuống tệp demkt.out

6. Nhập từ bàn phím một dòng chữ có tối đa 20 kí tự và một ký tự k bất kỳ. Hãy viết
chương trình tìm vị trí xuất hiện đầu tiên của kí tự k trong xâu đã nhập. Sau đó ghi kết
quả xuống tệp timvt.out

Chú ý: Nếu không tồn tại ký tự k đã nhập trong xâu s, thì ghi kết quả xuống tệp timvt.out
thông báo 'khong tim thay'.

You might also like