Câu 2: - Cú pháp lệnh lặp với số lần chưa biết trước: While điều kiện Do câu lệnh; Trong đó: + Điều kiện: là phép so sánh + Câu lệnh : có thể là câu lệnh đơn hoặc câu lệnh ghép - Sơ đồ h[r]
Trang 1TRƯỜNG THCS TRẦN HƯNG ĐẠO
ĐỀ THI HỌC KÌ 2 NĂM HỌC 2021 - 2022
MÔN TIN HỌC 8
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:
Khoanh tròn vào chữ cái trước câu trả lời đúng nhất trong các câu hỏi sau
Câu 1 Trong Pascal, câu lệnh nào sau đây được viết đúng?
A for i:= 4 to 1 do writeln(‘A’); B for i= 1 to 10 writeln(‘A’);
C for i:= 1 to 10 do writeln(‘A’); D for i to 10 do writeln(‘A’);
Câu 2 Trong câu lệnh lặp: For i := 1 to 10 do j:= j + 2; write( j );
Khi kết thúc câu lệnh lặp trên, câu lệnh write( j ); được thực hiện bao nhiêu lần?
A 10 lần B 5 lần C 1 lần D Không thực hiện
Câu 3 Cho đoạn chương trình: J:= 0;
For i:= 1 to 5 do J:= j + i;
Sau khi thực hiện đoạn chương trình trên, giá trị của biến j bằng bao nhiêu?
A 12 B 22 C 15 D 42
Câu 4 Trong Pascal, câu lệnh nào sau đây là đúng?
A S:=1; B i:=0; S:=1;
While S<10 do write(S); while s<10 do S:=S+i; i:=i+1;
C n:=2;
D Cả A và B
while n<5 do write(‘A’);
Câu 5 Khi thực hiện đoạn chương trình sau: n:=1; T:=50;
While n>20 do begin n:=n+5; T:=T - n end;
Hãy cho biết giá trị của biến T bằng bao nhiêu?
Trang 2A 14 B 15 C 16 D 17
Câu 6 Khai báo biến mảng: A : array[1 7] of real; Sử dụng câu lệnh For i:= 1 to 5 do readln(A[i]); để
gán giá trị cho các phần tử trong biến A từ bàn phím, ta sẽ nhập được bao nhiêu giá trị?
A 4 B 5 C 6 D 7
Câu 7 Trong câu lệnh khai báo biến mảng, phát biểu nào sau đây đúng:
A Chỉ số đầu và chỉ số cuối là 2 số nguyên B Chỉ số đầu chỉ số cuối
C Kiểu dữ liệu có thể là integer hoặc real D Cả ba ý trên
Câu 8 Giả sử biến mảng A có 5 phần tử và giá trị của các phần tử lần lượt là 1, 4, 7, 2, 6 Khi thực hiện
câu lệnh sau: tb:= 0; For i:= 1 to 5 do tb := tb + A[i]; Giá trị của biến tb là bao nhiêu?
A 20 B 18 C 21 D 22
II Phần tự luận:
Câu 1 Viết chương trình tính tổng 10 số tự nhiên đầu tiên
Câu 2 Viết chương trình tính tổng các số tự nhiên đầu tiên cho đến khi tổng đó bằng 100 thì dừng lại
Câu 3 Viết chương trình tìm phần tử nhỏ nhất và lớn nhất của dãy n số nhập vào từ bàn phím
ĐÁP ÁN
I Phần trắc nghiệm:
II Phần tự luận:
Câu 1:
Program Tong;
Var s,i:integer;
begin
S:= 0;
Trang 3Writeln (‘tong cua 10 so tu nhien dau tien la:’,s);
Readln
End
Câu 2:
Program Tinh_Tong;
Var s,n:integer;
Begin
S:=0; n:=1;
While (s<=100) do
Begin
S:=s+n; n:=n+1;
End;
Writen(‘tong cac so tu nhien dau tien:’,s);
Readln
End
Câu 3:
Program Pt_minmax;
Var n,i: integer;
S,ptmax, ptmin: real;
A: array [1 100] of real;
Begin
Write (‘nhap so phan tu cua day:’); readln(n);
Writeln (‘hay nhap’,n,’ phan tu cua day:’);
For i:=1 to n do readln(a[i]);
Trang 4Ptmax:=a[i]; ptmin:=a[i];
For i:=2 to n do
Begin
If a[i] > ptmax then ptmax:=a[i];
If a[i] < ptmin then ptmin:=a[i];
End;
Writeln (‘phan tu max cua day la: ‘,ptmax:0:2);
Writeln(‘phan tu min cua day la: ‘,ptmin:0:2);
Readln
End
2 ĐỀ SỐ 2
I Phần trắc nghiệm:
Khoanh tròn vào chữ cái trước câu trả lời đúng nhất trong các câu hỏi sau
Câu 1: Số lần lặp trong câu lệnh lặp với số lần biết trước được xác định bằng?
A Giá trị cuối - giá trị đầu -1 B Giá trị cuối + giá trị đầu +1
C Giá trị cuối - giá trị đầu +1 D Giá trị cuối + giá trị đầu -1
Câu 2: Trong ngôn ngữ lập trình Pascal, cấu trúc câu lệnh lặp nào sau đây đúng?
A For i:=1 to 38 do writeln(‘A’); B For i:=38 to 1 do writeln(‘A’);
C For i:1 to 38 do writeln(‘A’); D For i=1 to 38 do writeln(‘A’);
Câu 3: Trong câu lệnh While do… nếu điều kiện đúng thì:
A Tiếp tục vòng lặp B Vòng lặp vô tận
C Lặp 10 lần D Thoát khỏi vòng lặp
Câu 4: Khai báo biến mảng: A : array[1 7] of real; Sử dụng câu lệnh For i:= 1 to 5 do readln(A[i]); để
gán giá trị cho các phần tử trong biến A từ bàn phím, ta sẽ nhập được bao nhiêu giá trị?
Trang 5C 5 D 4
Câu 5: Trong cú pháp khai báo biến mảng, chỉ số đầu và chỉ số cuối là hai số
A số nguyên B số thực
C kí tự D xâu kí tự
Câu 6: Trong câu lệnh For do… sau từ khóa “do” có hai câu lệnh trở lên ta “gói” chúng trong:
A Begin readln; B Begin and;
C End Begin D Begin end;
Câu 7: Trong câu lệnh khai báo biến mảng, phát biểu nào sau đây không đúng?
A Chỉ số đầu và chỉ số cuối là hai số nguyên;
B Chỉ số đầu chỉ số cuối;
C Kiểu dữ liệu có thể là integer hoặc real;
D Dấu ba chấm ( ) nằm giữa chỉ số đầu và chỉ số cuối
Câu 8: Cú pháp câu lệnh lặp nào sau đây là đúng?
A For <biến đếm>:= <giá trị cuôí> down to <giá trị đầu> do <câu lệnh>;
B For <biến đếm>:= <giá trị đầu> to <giá trị cuôí> do <câu lệnh>;
C For <biến đếm>:= <giá trị đầu> to <câu lệnh> do <giá trị cuối>;
D For <biến đếm>= <giá trị đầu> to <giá trị cuôí> do <câu lệnh>;
II Phần tự luận:
Câu 1: Viết chương trình nhập vào điểm của 50 học sinh rooid xuất ra màn hình điểm của từng học sinh Câu 2: Viết cú pháp, vẽ sơ đồ và nêu hoạt động câu lệnh lặp với số lần chưa biết trước?
ĐÁP ÁN
I Phần trắc nghiệm:
Câu 1 1 1 1 1 1 1 1
Trang 6II Phần tự luận:
Câu 1:
Program Xuat_diem;
Var n, i: integer;
Diem: array[1 50] of real;
Begin
Write(‘Nhap so luong hoc sinh N = ‘); Readln(n);
Writeln(‘Nhap diem cho tung hoc sinh’);
For i := 1 to n do Begin Write(‘Diem HS ‘,i,’ = ‘); readln(Diem[i]);
End;
For i : = 1 to n do Writeln(‘Diem cua HS ‘,i, ‘ = ‘,diem[i]);
Readln;
End
Câu 2:
- Cú pháp lệnh lặp với số lần chưa biết trước:
While (điều kiện) Do (câu lệnh);
Trong đó:
+ Điều kiện: là phép so sánh
+ Câu lệnh : có thể là câu lệnh đơn hoặc câu lệnh ghép
- Sơ đồ hoạt động câu lệnh:
Trang 7- Hoạt động:
+ B1 Kiểm tra điều kiện
+ B2 Nếu điều kiện sai, câu lệnh sẽ bị bỏ qua và việc thực hiện câu lệnh lặp kết thúc Nếu điều kiện đúng, thực hiện câu lệnh và quay lại B1
3 ĐỀ SỐ 3
I Phần trắc nghiệm:
Khoanh tròn vào chữ cái trước câu trả lời đúng nhất trong các câu hỏi sau
Câu 1: Trong các hoạt động dưới đây, đâu là hoạt động lặp với số lần chưa biết trước:
A Mỗi buổi học đúng 5 tiết
B Mỗi ngày ăn cơm 3 buổi
C Mỗi ngày phải học bài cho đến khi thuộc
D Rằm tháng Giêng là Tết Nguyên tiêu
Câu 2: Giả sử biến mảng A có 5 phần tử và giá trị của các phần tử lần lượt là 1, 4, 7, 2, 6 Khi thực
hiện câu lệnh sau: tb:= 0; For i:= 1 to 5 do tb := tb + A[i]; Giá trị của biến tb là bao nhiêu?
A 18 B 22
C 21 D 20
Câu 3: Hãy cho biết kết quả của đoạn chương trình dưới đây:
a:=10;
white a>=10 do write(A);
A Trên màn hình xuất hiện một chữ a; B Trên màn hình xuất hiện 10 chữ a;
C Trên màn hình xuất hiện một số 10; D Chương trình bị lặp vô tận
Trang 8Câu 4: Vòng lặp sau cho kết quả S bằng bao nhiêu:
S := 1; For i := 1 to 3 do S := S * 2;
A S = 6 B S = 8
C S = 10 D S = 12
Câu 5: Câu lệnh lặp while…do nào dưới đây là đúng:
A While i <= 10 do S := S+1/i; C While i :<= 10 do S := S+1/i;
B While i <> 1 do S = S+1/i; D While i := 10 do S = S+1/i;
Câu 6: Các khai báo biến mảng sau khai báo biến mảng nào đúng:
A Var x: array[1…100] of integer; C Var x: array[1.5 10.5] of integer;
B Var x: array[1 100] of integer; D Var x: array[1 100] integer ;
Câu 7: Trong câu lệnh khai báo biến mảng, phát biểu nào sau đây đúng:
A Chỉ số đầu và chỉ số cuối là 2 số nguyên
B Chỉ số đầu nhỏ hơn chỉ số cuối
C Kiểu dữ liệu có thể là integer hoặc real
D Cả ba ý trên
Câu 8: Cho đoạn chương trình sau:
S:=0;
For i:=1 to 5 do S:=S+i;
Sau khi thực hiện lệnh trên giá trị của biến S và i là:
A S=10; i=5 B S=5; i= 10
C S=15; i= 5 D S=15; i=10
II Phần tự luận:
Câu 1 Cho đoạn chương trình:
Trang 9S: =0 ; n:= 0;
While S < = 6 do
Begin
n:= n+1;
S:= S+ n ;
End;
Đoạn 2:
S: =0 ; n:= 0;
While n< = 6 do
Begin
n:= n+1;
S:= S+ n ;
End;
Cho biết giá trị của biến S và n sau khi thực hiện các đoạn chương trình trên
Câu 2 Em hãy viết câu lệnh lặp hiển thị lên màn hình 10 dòng chữ “HI”
a Em hãy viết câu lệnh lặp hiển thị lên màn hình 10 chữ “HI” cách nhau bởi dấu cách trên cùng 1 dòng
Câu 3
a Vẽ hình minh họa của mỗi nút lệnh có trong công cụ tạo mối liên hệ hình học trong chương trình Geogebra
b Gọi đúng tên tương ứng của mỗi nút lệnh (ứng với hình minh họa) có trong chương trình Geogebra
ĐÁP ÁN
I Phần trắc nghiệm:
Trang 10II Phần tự luận:
Câu 1:
Sau khi thực hiện đoạn chương trình trên, giá trị của các biến là:
Đoạn 1:
S= 10
n=4
Đoạn 2:
n=6
S=21
Câu 2:
a.Lệnh in ra màn hình 10 dòng chữ “HI”
For i:=1 to 10 do Writeln(‘HI’);
b.Lệnh in ra màn hình 10 chữ “HI” cách nhau bởi dấu cách trên cùng
1 dòng
For i:=1 to 10 do Write(‘HI’,’ ‘);
Câu 3:
- Minh họa đúng hình của mỗi nút lệnh có trong công cụ tạo mối liên hệ hình học trong chương trình
Trang 11- Nêu đúng tên gọi tương ứng của mỗi nút lệnh (ứng với hình minh họa) có trong chương trình Geogebra
4 ĐỀ SỐ 4
I Phần trắc nghiệm:
Khoanh tròn vào chữ cái trước câu trả lời đúng nhất trong các câu hỏi sau
Câu 1:Câu lệnh viết đúng cú pháp là:
A While <điều kiện> to <câu lệnh>;
B While <điều kiện> do <câu lệnh>;
C While <điều kiện> to <câu lệnh1> do;
D While <điều kiện>; do <câu lệnh>;
Câu 2:Bạn Lan ăn sáng mỗi ngày?
A Lặp với số lần biết trước
B Lặp với số lần chưa biết trước
C Không có hoạt động lặp
D Đáp án khác
Câu 3: Câu lệnh Pascal : While (4*5>=20) do Writeln (4*5); sẽ :
A In số 20 ra màn hình 4 lần
B In số 20 ra màn hình 5 lần
C Không thực hiện lệnh Writeln (4*5);
D Lặp vô hạn lần lệnh Writeln (4*5);
Câu 4: Cho câu lệnh Pascal sau: For i:=5 to 20 do writeln(‘Y’);
Số vòng lặp của câu lệnh này là bao nhiêu?
A 14 B 17
C 15 D 16
Câu 5: Cho đoạn chương trình:
Trang 12j:=0;
For i:=0 to 5 do j:=j+2;
Sau khi thực hiện đoạn chương trình trên, thì giá trị của biến j bằng bao nhiêu:
A 12 B 20
C 15 D 18
Câu 6: Trong câu lệnh khai báo biến mảng, phát biểu nào sau đây sai:
A Chỉ số đầu và chỉ số cuối là hai số nguyên
B Chỉ số đầu chỉ số cuối
C Kiểu dữ liệu có thể là integer hoặc real
D Chỉ số cuối phải nhỏ hơn hoặc bằng 100
Câu 7:Nhặt thóc ra khỏi gạo đến khi trong gạo không còn thóc:
A Lặp với số lần biết trước
B Lặp vô số lần
C Lặp với số lần chưa biết trước
D Lặp 10 lần
Câu 8: Kết quả của phép so sánh:
A Có thể có giá trị đúng hoặc giá trị sai
B Chỉ có giá trị đúng
C Đồng thời nhận giá trị đúng và giá trị sai
D Chỉ có giá trị sai
II Phần tự luận:
Câu 1: Chương trình sau Hãy tìm những lỗi sai và sửa lại cho đúng
Program H C_N;
Trang 13Var a,b,s,cv:= real;
Begin
While('Nhap chieu dai='); readln(a);
Write('Nhap chieu rong=');readln();
s=axb;
cv:(a+b):2;
Writeln('Dien tich hinh chu nhat la:’,s:6:2);
Writeln('Chu vi hinh chu nhat:',cv:6:2);
Readln;
End
Câu 2: Cho chương trình sau (bằng Turbo Pascal):
Begin
Write(‘Tong cac so chan nho hon 100 la:’,t );
While i<100 do
Begin
If i mod 2 =0 then
t:=t + i;
i:=i+1;
end;
Uses crt;
Var i, t:integer;
i:=1; t:=0;
Clrscr;
Readln;
Trang 14End
a/ Chương trình trên bị sai về vị trí các dòng , , , , , hãy sắp xếp lại vị trí của các dòng này để được chương trình đúng
b/ Hãy cho biết công dụng của chương trình trên
Câu 3: Đối với từng đoạn chương trình Pascal sau đây, hãy cho biết có bao nhiêu vòng lặp và
lệnh writeln (s) in ra màn hình giá trị của s là bao nhiêu?
S:=20; n:=0;
While S > 5 do
Begin
n:=n+3;
S:=S -n;
End;
writeln(S);
ĐÁP ÁN
I Phần trắc nghiệm:
II Phần tự luận:
Câu 1:
Program H C_N; Program H_C_N;
Var a,b,s,cv:= real; Var a,b,s,cv:real;
While('Nhap chieu dai='); Write('Nhap chieu dai=');
Trang 15s=axb; S:=a*b;
Câu 2:
a, Chương trình được sắp xếp lại
Uses crt;
Var i, t:integer;
Begin
Clrscr;
i:=1; t:=0;
While i<100 do
Begin
If i mod 2 =0 then
t:=t + i;
i:=i+1;
end;
Write(‘Tong cac so chan nho hon 100 la:’,t );
Readln;
End
b/ Công dụng: Dùng để tính tổng các số chẵn có trong dãy số từ 1 đến 100
Câu 3: Đoạn lệnh sau khi thực hiện 3 vòng lặp và s= 2
5 ĐỀ SỐ 5
I Phần trắc nghiệm
Câu 1: Trong các cách khai báo biến mảng dưới đây, cách khai báo nào là đúng:
A Var A: array[1 5.5] of integer;
B Var A:array(1 100) of integer;
Trang 16C Var A: array[1.5 100] of integer;
D Var A: array[1 100] of integer;
Câu 2: Cho đoạn chương trình Pascal sau đây:
tong:= 20;
While tong>= 10 do
tong:=tong - 1;
Sau khi đoạn chương trình trên được thực hiện, giá trị của tổng bằng bao nhiêu:
A 19 B 9 C 21 D 10
Câu 3: Sau khi đoạn chương trình sau được thực hiện, giá trị của biến S bằng bao nhiêu:
S:= 0;
for i:= 1 to 5 do S:= S + 1;
A 5 B 10 C 15 D 20
Câu 4: Khi thực hiện đoạn chương trình sau:
n:= 1; T:= 50;
While n>20 do
begin
n:=n+5;
T:=T - n
end;
Hãy cho biết giá trị của biến T bằng bao nhiêu?
A 14 B 17 C 16 D 50
Câu 5: Khai báo biến mảng: A : array[1 7] of real ; Sử dụng câu lệnh For i := 1 to 5 do readln(A[i]); để
gán giá trị cho các phần tử trong biến A từ bàn phím, ta sẽ nhập được bao nhiêu giá trị?
Trang 17Câu 6: Giả sử biến mảng A có 5 phần tử và giá trị của các phần tử lần lượt là 1, 4, 7, 2, 6 Khi thực hiện
câu lệnh sau: tb := 0; For i := 1 to 5 do tb := tb + A[i]; Giá trị của biến tb là bao nhiêu?
A 20 B 18 C 21 D 22
Câu 7: Em hiểu câu lệnh lặp theo nghĩa nào dưới đây?
A Một lệnh thay cho nhiều lệnh
B Các câu lệnh được viết lặp đi lặp lại nhiều lần
C Vì câu lệnh đã có tên là lệnh lặp
D Cả a, b, c đều sai
Câu 8: Cho đoạn chương trình sau:
n:=1;
While n<10 do
Begin
n:=n+1;
Writeln(‘ xin chao’);
end;
Khi thực hiện chương trình câu “ xin chao” được viết ra màn hình mấy lần?
A 0 B.10 C 9 D Vòng lặp vô tận
Câu 9: Cách viết câu lệnh lặp với số lần biết trước như sau:
A For <biến đếm> = <giá trị đầu> to <giá trị cuối> do <câu lệnh>;
B For <biến đếm>: = <gía trị cuối> to <giá trị đầu> do <câu lệnh>;
C For <biến đếm> := <giá trị đầu> to <giá trị cuối> do <câu lệnh>;
D For <biến đếm> = <giá trị cuối> to <giá trị đầu> do <câu lệnh>
Câu 10: Cho đoạn chương trình: j := 0; k := 2;
For i := 1 to 5 do j := j + 2; k := k + j;
Trang 18Sau khi thực hiện đoạn chương trình trên, giá trị của biến k bằng bao nhiêu?
A 12; B 22; C 32; D 42
II Phần tự luận
Viết chương trình sử dụng biến mảng để nhập từ bàn phím các phần tử của một dãy số nguyên Độ dài của dãy cũng được nhập từ bàn phím
In ra màn hình tổng các giá trị là số chẵn
ĐÁP ÁN
I Phần trắc nghiệm
II Phần tự luận
Program Tong_Chan;
uses crt;
var i, n, Tong: integer;
A : array[1 100] of integer;
Begin
clrscr;
writeln(‘Nhap do dai cua day so, N=’);
readln(n);
writeln(‘Nhap cac phan tu cua day so:’);
For i:=1 to n do