Các thủ tục nếu có phải được khai báo và mô tả ngay sau phần khai báo biến và trước Begin của chương trình chính?. Các thủ tục nếu có được khai báo bất kỳ trong chương trình chínhA[r]
Trang 1TRƯỜNG THPT TAM DƯƠNG
ĐỀ THI HỌC KÌ 2 NĂM HỌC 2021 - 2022
MÔN TIN HỌC 11
Thời gian làm bài : 45 phút
(Không kể thời gian phát đề)
1 ĐỀ SỐ 1
I Phần trắc nghiệm
Câu 1: Khẳng định nào sau đây là đúng?
A Chỉ có thủ tục mới có thể có tham số hình thức
B Cả thủ tục và hàm đều có thể có tham số hình thức
C Chỉ có hàm mới có thể có tham số hình thức
D Thủ tục và hàm nào cũng phải có tham số hình thức
Câu 2: Để biết con trỏ tệp đã ở cuối dòng của tệp f hay chưa, ta sử dụng hàm:
A eof(f)
B eoln(f)
C eof(f, ‘trai.txt’)
D foe(f)
Câu 3: Khẳng định nào sau đây là đúng?
A Cả lời gọi hàm và lời gọi thủ tục đều phải có tham số thực sự
B Lời gọi thủ tục nhất thiết phải có tham số thực sự còn lời gọi hàm không nhất thiết phải có tham số thực
sự
C Lời gọi hàm nhất định phải có tham số thực sự còn lời gọi thủ tục không nhất thiết phải có tham số thực
sự
D Lời gọi hàm và lời gọi thủ tục có thể có tham số thực sự hoặc không có tham số thực sự tuỳ thuộc vào từng hàm và thủ tục
Câu 4: Trong NNLT Pascal, khai báo nào sau đây là đúng khi khai báo tệp văn bản?
A Var f: String;
B Var f: byte;
C Var f = record;
D Var f: Text;
Trang 2Câu 5: Giả sử trên thư mục gốc của đĩa C có tệp f đã có nội dung sẵn Khi thực hiện thủ tục Rewrite(f);
A Nội dung trong tệp f sẽ hiện ra trên màn hình
B Nội dung trong tệp cũ vẫn còn nguyên
C Nội dung mới sẽ được ghi tiếp theo phía dưới tệp đã có sẵn
D Nội dung trong tệp cũ sẽ bị xoá để chuẩn bị ghi dữ liệu mới
Câu 6: Câu lệnh dùng thủ tục đọc có dạng:
A Read(<biến tệp>);
B Read(<biến tệp>,);
C Read(, <biến tệp>);
D Read();
Câu 7: Cho đoạn chương trình sau:
Var g:text;
I:integer;
Begin
Assign(g, ‘C:\DLA.txt’);
Rewrite(g);
For i:=1 to 10 do
If i mod 2 <> 0 then write(g, i);
Close(g);
Readln
End
Sau khi thực hiện chương trình trên, nội dung của tệp ‘DLA.txt’ gồm những phần tử nào?
A 2; 4; 6; 8;10
B 1; 3; 5; 9
C 1; 3; 5;7; 9
D 4; 6; 8;10
Câu 8: Tệp f có dữ liệu
5 9 15
để đọc 3 giá trị trên từ tệp f và ghi các giá trị này vào 3 biến x, y, z ta sử dụng câu lệnh:
Trang 3A Read(f, x, y, z);
B Read(f, ‘x’, ‘y’, ‘z’);
C Read(x, y, z);
D Read(‘x’, ‘y’, ‘z’);
Câu 9: Giả sử a = 5; b = 9; c = 15; để ghi các giá trị trên vào tệp f có dạng là
5 9 15
ta sử dụng thủ tục ghi:
A Write(f, a,b,c);
B Write(a, ‘ ’, b, ‘ ’, c);
C Write(f, a, ‘ ’, bc);
D Write(f, a ‘’, b‘’, c);
Câu 10: Khẳng định nào sau đây là đúng?
A Biến cục bộ là biến chỉ được dùng trong chương trình chính
B Biến cục bộ là biến chỉ được dùng trong chương trình con chứa nó
C Biến cục bộ là biến được dùng trong chương trình con chứa nó và trong chương trình chính
D Biến toàn cục chỉ được sử dụng trong chương trình chính và không được sử dụng trong các chương trình con
II Phần tự luận
Câu 1: Cho chương trình sau
Program Baitap;
Var x, y, z , t: word;
Function BCNN(a, b:word):word;
Var du, c, d:word;
Begin
c:=a; d:=b;
While b<>0 do
Begin
du:=a mod b;
a:=b;
b:=du;
End;
Trang 4BCNN:=(c*d) div a;
End;
Begin
Write(‘nhap 4 so x, y, z, t: ‘); readln(x, y, z, t);
Write(‘BCNN cua 4 so la: ’, BCNN(BCNN(x, y),BCNN(z, t)));
Readln;
End
Câu hỏi: Quan sát và:
a) Nêu các tham số thực sự, tham số hình thức?
b) Nêu tên các biến cục bộ, biến toàn cục?
Câu 2: Cho mảng A gồm N phần tử thuộc kiểu nguyên (N≤50)? Viết chương trình con thực hiện các yêu
cầu sau:
a) Viết thủ tục nhập giá trị cho mảng A từ bàn phím
b) Viết thủ tục in ra màn hình các phần tử âm trong mảng A
ĐÁP ÁN
I Phần trắc nghiệm
Điểm 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5
II Phần tự luận
Câu 1:
a) Tham số thực sự: x, y, z, t
Tham số hình thức: a, b
b) Biến cục bộ: du, c, d
Biến toàn cục: x, y, z, t
Câu 2:
a) Viết thủ tục nhập giá trị cho mảng A từ bàn phím
procedure nhap(var A:kmang; var n:integer);
begin
write(‘Nhap so phan tu cua mang N=’);
readln(n);
for i:=1 to n do
begin
write(‘Nhap phan tu thu A[‘,i,’]=’);
readln(A[i]);
Trang 5end;
end;
b) Viết thủ tục in ra màn hình các phần tử âm trong mảng A
procedure hienam(A:kmang;n:byte);
begin
for i := 1 to n do
if A[i] < 0 then write(A[i],’ ’);
end;
2 ĐỀ SỐ 2
I Trắc nghiệm
Câu 1 : Cho khai báo sau :
Var a :array[0 16] of integer ; Câu lệnh nào dưới đây sẽ in ra tất cả các phần tử của mảng trên ?
A For k:=1 to 16 do write(a[k]); B For k:=16 downto 0 do write(a[k]);
C For k:=16 downto 0 write(a[k]); D For k:= 0 to 15 do write(a[k]);
Câu 2 : S1 = ‘tin hoc cho moi nguoi’
Pos(‘o’,S1) cho kết quả là?
Câu 3 : Đoạn chương trình sau in ra kết quả nào ?
Program Welcome ; Var a : string[10];
Begin
a := ‘tinhoc’;
writeln(length(a));
End
Câu 4 : Khai bỏo phần đầu một hàm là:
A Function <tên hàm> [(<danh sách các tham số>)] ;
B Function <tên hàm> ;
C Procedure <tên hàm> [(<danh sách các tham số>)] : <kiểu dữ liệu>;
Trang 6D Function <tên hàm> [(<danh sách các tham số>)] : <kiểu dữ liệu>;
Câu 5 : Trong ngôn ngữ lập trình Pascal, đoạn chương trình sau (kiểu xâu) thực hiện công việc gì ?
S1 := ‘ ‘ ; For i :=1 to length(S) do S1 :=S1 + upcase(S[i]);
A Tạo xâu S1 là chữ in hoa từ xâu S B Tạo xâu S1 là chữ thường từ xâu S
C Tạo xâu S1 từ xâu S D Tạo xâu S1 là các kí tự chữ số Câu 6 : Các biến dùng chung cho toàn bộ chương trình được gọi là?
A Tham số thực sự B Biến cục bộ C Tham số hỡnh
Câu 7 : Khẳng định nào sau đây là đúng?
A Các thủ tục (nếu có) phải được khai báo ngay từ đầu của chương trình chính
B Các thủ tục (nếu có) phải được khai báo sau Begin của chương trình chính
C Các thủ tục (nếu có) được khai báo bất kỳ trong chương trình chính
D Các thủ tục (nếu có) phải được khai báo và mô tả ngay sau phần khai báo biến và trước Begin của
chương trình chính
Câu 8 : Hãy chọn phương án ghép đúng Cho xâu S là ‘Hanoi-Vietnam’ Kết quả của hàm
Length(S) là
Câu 9 : Cho str là một xâu kí tự, đoạn chương trình sau thực hiện công việc gì?
for i := length(str) downto 1 do write(str[i]) ;
A In xâu ra màn hình; B In từng kí tự xâu ra màn hình;
C In từng kí tự ra màn hình theo thứ tự
ngược;
D In từng kí tự ra màn hình theo thứ tự
ngược, trừ kí tự đầu tiên;
Câu 10 : Trong ngôn ngữ lập trình Pascal, đoạn chương trình (mảng một chiều) sau thực hiện công việc
gì ?
S := 0 ; For i := 1 to n do
If (a[i] mod 3 =0) or (a[i] mod 5 = 0) then S :=S+a[i] ;
Trang 7A Tính tổng các phần tử trong mảng chia hết cho 3 hoặc chia hết cho 5
B Tính tổng các phần tử chia hết cho 5
C Tính tổng các phần tử trong mảng
D Tính tổng các phần tử chia hết cho 3 Câu 11 : Cho khai báo mảng và đoạn chương trình như sau :
Var a : array[0 50] of real ;
k := 0 ; for i := 1 to 50 do
if a[i] > a[k] then k := i ;
Đoạn chương trình trên thực hiện công việc gì dưới đây ?
A Tìm chỉ số của phần tử nhỏ nhất trong
mảng;
B Tìm phần tử nhỏ nhất trong mảng;
C Tìm chỉ số của phần tử lớn nhất trong
mảng;
D Tìm phần tử lớn nhất trong mảng;
Câu 12 : Khai báo phần đầu một thủ tục là:
A Procedure [(<danh sách các tham số>)] : <kiểu dữ liệu>;
B Procedure <tên thủ tục>: <kiểu dữ liệu>;
C Procedure <tên thủ tục> [(<danh sách các tham số>)] : <kiểu dữ liệu>;
D Procedure <tên thủ tục> [(<danh sách các tham số>)];
Câu 13 : Mảng A dưới đây chứa bao nhiêu phần tử ?
Const Rows=3 ; Var A:array[0 rows+1] of integer ;
Câu 14 : Cho x, y là hai biến nguyờn và khai bỏo thủ tục :
Procedure Doicho( Var a:Integer; b:Integer);
Var z : Integer;
Begin z:=a; a:=b; b:=z;
Trang 8End;
Sau khi thực hiện cỏc lệnh:
x:=7; y:=3;
Doicho(x, y);
thỡ giỏ trị của x, y là:
A x=7, y=7 B x=3, y=7 C x=3, y=3 D x=7, y=3 Câu 15 : Cho x, y là hai biến nguyờn và khai bỏo thủ tục :
Procedure Doicho( Var a,b:Integer);
Var z : Integer;
Begin z:=a; a:=b; b:=z;
End;
Sau khi thực hiện cỏc lệnh:
x:=7; y:=3;
Doicho(x, y);
thỡ giỏ trị của x, y là:
A x=7, y=7 B x=3, y=3 C x=3, y=7 D x=7, y=3 Câu 16 : Trong mảng một chiều, đoạn chương trình sau thực hiện công việc gì ?
Dem := 0 ; For i := 1 to n do
If a[i] mod 2 = 0 then Dem := Dem + 1 ;
A Đếm các phần tử chia hết cho 2 trong
mảng
B Gán giá trị a[i] cho biến S
C Tính tổng các phần tử chia hết cho 2 trong
mảng
D Tính tổng các phần tử trong mảng
Câu 17 : Đoạn chương trình sau đưa ra màn hình kết quả nào:
for i:= 1 to 10 do write(i);
Trang 9A 1 2 3 4 5 6 7 8 9
Đưa ra 10 cấu
10 9 8 7 6 5 4 3 2
Khụng đưa ra gỡ
cả
Câu 18 : S1 ‘abcd’
S2= ‘ghk’
Insert(S1,S2,1) cho kết quả là ?
A ‘abcdghk’ B ‘ghkabcd’ C ‘gabcdgha’ D ‘aghkbcd’
Câu 19 : Các biến được khai báo cho dữ liệu vào/ra được gọi là?
A Biến cục bộ B Tham số thực sự C Biến toàn cục D Tham số hỡnh
thức
Câu 20 : Hãy chọn phương án ghép đúng nhất Thủ tục chuẩn Insert(S1,S2,vt) thực hiện
A sao chép vào cuối S1 một phần của S2 từ
vị trí vt ;
B chèn xâu S1 vào S2 bắt đầu từ vị trí vt ;
C chèn xâu S2 vào S1 bắt đầu từ vị trí vt ; D nối xâu S2 vào S1;
II Tự luận
Viết chương trình:
Đọc từ tệp “DULIEU.TXT” 2 số nguyên M và N (M < N)
Tính tổng các số chia hết cho 5 trong phạm vi từ M đến N
Ghi kết quả ra tệp “KETQUA.TXT”
ĐÁP ÁN
I Trắc nghiệm
II Tự luận
Var f1, f2: text;
Tong, m, n, i: integer;
Begin
assign(f1, ‘DULIEU.TXT’);
reset(f1);
Trang 10assign(f2, ‘KETQUA’);
rewrite(f2);
Tong;= 0;
read(f1, m, n);
for i:= m to n do
if i mod 2 = 0 then Tong:= Tong+i;
write(f2, Tong);
close(f1);
close(f2);
End
3 ĐỀ SỐ 3
I Trắc nghiệm
Câu 1 : Cho x, y là hai biến nguyên và khai báo thủ tục :
Procedure Doicho( Var a:Integer; b:Integer);
Var z : Integer;
Begin z:=a; a:=b; b:=z;
End;
Sau khi thực hiện các lệnh:
x:=7; y:=3;
Doicho(x, y);
thì giá trị của x, y là:
A x=7, y=7 B x=3, y=7 C x=3, y=3 D x=7, y=3 Câu 2 : S1 ‘abcd’
S2= ‘ghk’
Insert(S1,S2,1) cho kết quả là ?
Trang 11A ‘aghkbcd’ B ‘ghkabcd’ C ‘gabcdgha’ D ‘abcdghk’
Câu 3 : Cho str là một xâu kí tự, đoạn chương trình sau thực hiện công việc gì?
for i := length(str) downto 1 do write(str[i]) ;
A In xâu ra màn hình; B In từng kí tự ra màn hình theo thứ tự
ngược;
C In từng kí tự xâu ra màn hình; D In từng kí tự ra màn hình theo thứ tự
ngược, trừ kí tự đầu tiên;
Câu 4 : Cho khai báo sau :
Var a :array[0 16] of integer ; Câu lệnh nào dưới đây sẽ in ra tất cả các phần tử của mảng trên ?
A For k:=16 downto 0 do write(a[k]); B For k:=16 downto 0 write(a[k]);
C For k:=1 to 16 do write(a[k]); D For k:= 0 to 15 do write(a[k]);
Câu 5 : Mảng A dưới đây chứa bao nhiêu phần tử ?
Const Rows=3 ; Var A:array[0 rows+1] of integer ;
Câu 6 : Các biến dùng chung cho toàn bộ chương trình được gọi là?
A Biến toàn cục B Biến cục bộ C Tham số hỡnh
Câu 7 : Khẳng định nào sau đây là đúng?
A Các thủ tục (nếu có) phải được khai báo sau Begin của chương trình chính
B Các thủ tục (nếu có) phải được khai báo và mô tả ngay sau phần khai báo biến và trước Begin của
chương trình chính
C Các thủ tục (nếu có) được khai báo bất kỳ trong chương trình chính
D Các thủ tục (nếu có) phải được khai báo ngay từ đầu của chương trình chính
Câu 8 : Hãy chọn phương án ghép đúng Cho xâu S là ‘Hanoi-Vietnam’ Kết quả của hàm
Length(S) là
Câu 9 : Khai bỏo phần đầu một hàm là:
Trang 12A Function <tên hàm> [(<danh sách các tham số>)] : <kiểu dữ liệu>;
B Function <tên hàm> ;
C Function <tên hàm> [(<danh sách các tham số>)] ;
D Procedure <tên hàm> [(<danh sách các tham số>)] : <kiểu dữ liệu>;
Câu 10 : Đoạn chương trình sau in ra kết quả nào ?
Program Welcome ; Var a : string[10];
Begin
a := ‘tinhoc’;
writeln(length(a));
End
A 6; B Chương trình có
Câu 11 : S1 = ‘tin hoc cho moi nguoi’
Pos(‘o’,S1) cho kết quả là?
Câu 12 : Trong ngôn ngữ lập trình Pascal, đoạn chương trình (mảng một chiều) sau thực hiện công việc
gì ?
S := 0 ; For i := 1 to n do
If (a[i] mod 3 =0) or (a[i] mod 5 = 0) then S :=S+a[i] ;
A Tính tổng các phần tử chia hết cho 5
B Tính tổng các phần tử trong mảng chia hết cho 3 hoặc chia hết cho 5
C Tính tổng các phần tử chia hết cho 3
D Tính tổng các phần tử trong mảng Câu 13 : Cho khai báo mảng và đoạn chương trình như sau :
Var a : array[0 50] of real ;
k := 0 ;
Trang 13for i := 1 to 50 do
if a[i] > a[k] then k := i ;
Đoạn chương trình trên thực hiện công việc gì dưới đây ?
A Tìm chỉ số của phần tử nhỏ nhất trong
mảng;
B Tìm chỉ số của phần tử lớn nhất trong
mảng;
C Tìm phần tử lớn nhất trong mảng; D Tìm phần tử nhỏ nhất trong mảng;
Câu 14 : Cho x, y là hai biến nguyờn và khai bỏo thủ tục :
Procedure Doicho( Var a,b:Integer);
Var z : Integer;
Begin z:=a; a:=b; b:=z;
End;
Sau khi thực hiện cỏc lệnh:
x:=7; y:=3;
Doicho(x, y);
thỡ giỏ trị của x, y là:
A x=7, y=7 B x=7, y=3 C x=3, y=7 D x=3, y=3 Câu 15 : Đoạn chương trỡnh sau đưa ra màn hỡnh kết quả nào:
for i:= 1 to 10 do write(i);
A Đưa ra 10 cấu
10 9 8 7 6 5 4 3 2
1 C Không đưa ra gì cả D
1 2 3 4 5 6 7 8 9
10
Câu 16 : Khai bỏo phần đầu một thủ tục là:
A Procedure <tên thủ tục> [(<danh sách các tham số>)] : <kiểu dữ liệu>;
B Procedure <tên thủ tục>: <kiểu dữ liệu>;
C Procedure <tên thủ tục> [(<danh sách các tham số>)];
D Procedure [(<danh sách các tham số>)] : <kiểu dữ liệu>;
Câu 17 : Cỏc biến được khai bỏo cho dữ liệu vào/ra được gọi là?
A Biến cục bộ B Biến toàn cục C Tham số thực sự D Tham số hình
thức
Trang 14Câu 18 : Trong mảng một chiều, đoạn chương trình sau thực hiện công việc gì ?
Dem := 0 ; For i := 1 to n do
If a[i] mod 2 = 0 then Dem := Dem + 1 ;
A Tính tổng các phần tử chia hết cho 2 trong
mảng
B Gán giá trị a[i] cho biến S
C Tính tổng các phần tử trong mảng D Đếm các phần tử chia hết cho 2 trong
mảng
Câu 19 : Trong ngôn ngữ lập trình Pascal, đoạn chương trình sau (kiểu xâu) thực hiện công việc gì ?
S1 := ‘ ‘ ; For i :=1 to length(S) do S1 :=S1 + upcase(S[i]);
A Tạo xâu S1 là chữ in hoa từ xâu S B Tạo xâu S1 là chữ thường từ xâu S
C Tạo xâu S1 là các kí tự chữ số D Tạo xâu S1 từ xâu S
Câu 20 : Hãy chọn phương án ghép đúng nhất Thủ tục chuẩn Insert(S1,S2,vt) thực hiện
A sao chép vào cuối S1 một phần của S2 từ
vị trí vt ;
B chèn xâu S2 vào S1 bắt đầu từ vị trí vt ;
C nối xâu S2 vào S1; D chèn xâu S1 vào S2 bắt đầu từ vị trí vt ;
II Tự luận
Viết chương trình con tính tích của hai số nguyên?
ĐÁP ÁN
II Trắc nghiệm
II Tự luận
program tct_tich2so;
uses crt;
var a,b:integer;