Trường THPT Trần Khai Nguyên – Bộ Môn Tin Học - Khối 11
Đề Cương Ôn Tập Kiểm Tra Học Kỳ I Năm Học 2011 – 2012
I. Trắc nghiệm
(Lưu ý: Phần trắc nghiệm các em kèm theo phần trắc nghiệm đã ôn thi giữa HKI)
1. Cấu trúc rẽ nhánh
Câu 1: Câu lệnh if nào sau đây đúng:
if (a= 5) then a:= d+1 else a:= d+2; if (a= 5) then a:= d+1 else a:= d+2.
if (a= 5) then a:= d+1; else a:= d+2; if (a= 5) then a= d+1 else a= d+2;
Câu 2: Cho đoạn chương trình sau:
Var S, i : Integer;
Begin
i := 1; S:= 40;
if ( i > 5 ) then S:= 5 * 3 + ( 5 - i ) * 2
else
if ( i > 2 ) then S:= 5 * i
else S:= 0;
End.
Sau khi chạy chương trình giá trị của S là:
15 19 40 0
Câu 3: Câu lệnh if nào sau đây đúng cú pháp:
if <điều kiện> then < câu lệnh> if <điều kiện>; then < câu lệnh>;
if <điều kiện> ;then < câu lệnh>. if <điều kiện> then < câu lệnh>;
Câu 4: Cho N là một biến kiểu nguyên, chọn câu đúng cú pháp:
If N < 10 then write (' Nho hon 10 ') ; else write (' Lon hon 10 ');
If N < 10 then write (' Nho hon 10 ') else write (' Lon hon 10 ');
If N < 10 Write (' Nho hon 10 ') else then write (' Lon hon 10 ');
If N < 10 then N := 10 else N > 20 then write (' N > 20 ');
Câu 5: Lệnh nào sau đây in ra màn hình số lớn hơn trong 2 số A, B
If A < B then writeln(A) else writeln(B); If A > B then write(B) else write(A);
If A > B then Readln(A) else Readln(B); If A > B then write(A) else write(B);
Câu 6: Trong ngôn ngữ lập trình Pascal về mặt cú pháp cách viết câu lệnh ghép nào sau đây đúng:
Begin
A:= 1;
B:= 5;
End.
Begin:
A:= 1;
B:= 5;
End;
Begin;
A:= 1;
B;= 5;
End.
Begin
A:= 1;
B:= 5;
End;
Câu 7: Câu lệnh nào sau đây đúng cú pháp:
if <điều kiện> then <câu lệnh 1> else <câu lệnh 2>. if <điều kiện> then <câu lệnh 1> else <câu lệnh 2>;
if <điều kiện>; then <câu lệnh 1> else <câu lệnh 2>; if <điều kiện> then <câu lệnh 1>; else <câu lệnh
2>;
Câu 8: Cho i là biến nguyên. Sau khi thực hiện các lệnh:
i:= 2;
if i = 1 then i:= i+1 else i:= i+2;
Giá trị cuối cùng của i là:
2 3 4 5
2. Cấu trúc lặp
Câu 9: Cú pháp nào sau đây đúng cho vòng lặp For .. do dạng tiến:
a. For <Biến đếm>:=<Giá trị đầu> to <Giá trị cuối> do <Câu lệnh>;
b. For <Biến đếm>=<Giá trị đầu> to <Giá trị cuối> do <Câu lệnh>;
c. For <Biến đếm>:=<Giá trị đầu> do <Giá trị cuối> to <Câu lệnh>;
d. For <Biến đếm>=<Giá trị đầu> do <Giá trị cuối> to <Câu lệnh>;
Câu 10: Cú pháp nào sau đây đúng cho vòng lặp For..do dạng lùi:
a. For <Biến đếm>:=<Giá trị cuôi> to <Giá trị đầu> do <Câu lệnh>;
b. For <Biến đếm>:=<Giá trị cuối> downto <Giá trị đầu> do <Câu lệnh>;
c. For <Biến đếm>=<Giá trị cuối> downto <Giá trị đầu> do <Câu lệnh>;
d. For <Biến đếm>:=<Giá trị đầu> downto <Giá trị cuối> do <Câu lệnh>;
Câu 11: Cú pháp nào sau đây đúng cho câu lệnh While..do
a. While <điều kiện> : do <câu lệnh>; b. While <điều kiện>:=<câu lệnh>;
c. While(điều kiện) do <câu lệnh); d. While <điều kiện> do <câu lệnh>;
Câu 12: Cho câu lệnh For i:= 5 to 10 do write(‘Chao ban’); Câu ‘Chao ban’ xuất ra mấy lần:
a. 9 b. 5 c. 6 d. 10
Câu 13: Cho đoạn lệnh
For i:=1 to 10 do k:=i; Write(k:4); Hỏi giá trị xuất ra màn hình là:
a. 1 b. 10 c. 1 2 3 4 5 6 7 8 9 10 d.1 10
Câu 14. Cho đoạn lệnh
For i :=1 to 10 do Begin k:=i; write(k:4) end; Hỏi kết quả xuất ra màn hình là:
a. 1 b. 10 c. 1 2 3 4 5 6 7 8 9 10 d.1 10
Câu 15. Cho đoạn lệnh
For i:= 10 downto 1 do if (i mod 3 =0) then write(i:4); Kết quả xuất ra màn hình là:
a. 10 1 b. 10 8 6 4 2 c. 9 6 3 d. 3 6 9
Câu 16: Cho đoạn lệnh
K:=10; While (K>5) do K:=K-1; Write(K); Kết quả xuất ra màn hình là:
a. 10 9 8 7 6 5 b. 10 5 c. 5 d. 4
Câu 17: Cho đoạn lệnh
K:=10; While (K>5) do K:=K-2; Write(K); Kết quả xuất ra màn hình là:
a. 10 9 8 7 6 5 b. 10 5 c. 5 d. 4
3. Mảng Một chiều
Câu 18: Phát biểu nào dưới đây về mảng là phù hợp?
Độ dài tối đa của mảng là 255 Là một tập hợp các số nguyên
Dãy hữu hạn các phần tử cùng kiểu Mảng không thể chứa kí tự
Câu 19: Phát biểu nào dưới đây về mảng là không chính xác
Chỉ số mảng không nhất thiết bắt đầu từ 1 Có thể xây dựng mảng nhiều chiều
Mảng có thể chứa các kí tự Độ dài tối đa của mảng là 255
Câu 20: Trong Pascal, để khai báo trực tiếp mảng một chiều ta thực hiện:
Var <tên biến mảng> : array[<chỉ số hàng>] of <kiểu phần tử>;
Var <tên biến mảng> : array[<kiểu chỉ số>] of <kiểu phần tử>;
Var <tên biến mảng> : array[<kiểu chỉ số>] of <số lượng phần tử>;
Var <tên kiểu mảng> : array[<kiểu chỉ số>] of <kiểu phần tử>;
Câu 21: Trong Pascal, để tham chiếu đến một phần tử của mảng ta dùng cặp dấu ngoặc nào?
( và ) [ và ] { và } < và >
Câu 22: Trong Pascal, để khai báo kiểu gián tiếp mảng một chiều ta thực hiện:
type <tên kiểu mảng> = array[<kiểu chỉ số>] of <kiểu phần tử>;
var <tên biến mảng> =<tên kiểu mảng>;
type <tên kiểu mảng> = string[<kiểu chỉ số>] of <kiểu phần tử>;
var <tên biến mảng>:<tên kiểu mảng>;
type <tên kiểu mảng> = array[<kiểu chỉ số>] of <kiểu phần tử>;
var <tên biến mảng>:<tên kiểu mảng>;
type <tên kiểu mảng> = array[<kiểu chỉ số>] of <kiểu mảng khác>;
var <tên biến mảng>:<tên kiểu mảng>;
Câu 23: Cú pháp tham chiếu đến một phần tử của mảng là:
<tên kiểu mảng>[<chỉ số>] <tên biến mảng>[<số lượng phần tử>]
<tên biến mảng>[<chỉ số>] <tên kiểu mảng>[<số lượng phần tử>]
Câu 24: Để khai báo mảng tên A gồm 150 phần tử, các phần tử kiểu nguyên có giá trị không vượt quá 500, ta khai
báo:
Var A : Array[1…150] Of Byte; Var A : Array[1..150] Of Byte;
Var A : Array[1…150] Of Integer; Var A : Array[1..150] Of Integer;
Câu 25: Để tham chiếu đến phần tử thứ 21 của mảng B, ta viết:
B[20]; B[21]; B(20); B(21);
Cho khai báo sau: Khai báo mảng A gồm 100 phần tử, các phần tử có kiểu nguyên
Type ArrInt = Array[1..100] Of Integer;
Var A : ArrInt;
(Ghi chú: Khai báo này sử dụng trong câu 26 đến câu 35)
Câu 26: Chọn câu lệnh: Xuất ra màn hình giá trị của phần tử thứ i của mảng A
Readln(A[i]); Write(A[i]); Readln(‘A[i]’); Write(‘A[i]’);
Câu 27: Chọn câu lệnh: Nhập từ bàn phím giá trị cho phần tử thứ i của mảng A
Readln(A[i]); Write(A[i]); Readln(‘A[i]’); Write(‘A[i]’);
Câu 28: Chọn câu lệnh: Gán giá trị 35 cho phần tử thứ i của mảng A
Readln(A[i]) := 35; A[i] := 35; A(i) := 35; A[35] := i;
Câu 29: Dưới đây là các lệnh gán, hãy chọn lệnh gán hợp lệ?
A[1] := 14.5; A[2] := 14/5; A[3] := 14 + 5; A[4] := 14,5;
Câu 30: Dưới đây là các lệnh gán, hãy chọn lệnh gán hợp lệ?
A[1] := 14 mod 5; A[2] := 14 div 5; A[3] := 14 - 5; Cả A, B và C đều hợp lệ
Câu 31: Cho đoạn chương trình:
T:=0;
For i:=1 To 10 Do
If A[i] mod 2 <> 0 Then T:=T+A[i];
Đoạn chương trình trên tính gì?
Tính tổng các phần tử có giá trị lẻ của mảng A Tính tổng các phần tử có giá trị chẵn của mảng A
Tính tổng các phần tử của mảng Tính tổng các chỉ số của mảng A
Câu 32: Cho đoạn chương trình:
Max:=A[1];
For i:=2 To 6 Do
If A[i]>Max Then
Begin
Max:=A[i];
csMax:=i;
End;
Giả sử mảng A nhận các giá trị: 15; 7; 21; -56; 27; 19 thì giá trị của Max và csMax sau khi thực hiện đoạn chương
trình trên là:
Max=15; csMax=1 Max=21; csMax=3 Max=-56; csMax=4 Max=27; csMax=5
Câu 33: Trong Pascal, cho đoạn chương trình sau:
T:=0;
For i:=1 To 10 Do
If A[i] mod k = 0 Then T:=T+A[i];
Em hãy cho biết ý nghĩa của đoạn chương trình trên?
tính tổng số các phẩn tử trong mảng A có giá trị chia hết cho số k.
tính tổng số các phẩn tử trong mảng A.
tính tổng số các phẩn tử trong mảng A có giá trị bằng số k.
tính tích số các phẩn tử trong mảng A mà có giá trị chia hết cho số k.
Câu 34: Cho các lệnh gán sau:
A[1]:=4; A[2]:=8; A[3]:=A[1] + A[2]; A[4]:=A[2] + A[3];
Sau khi thực hiện các lệnh gán trên, giá trị A[4] là:
12 16 18 20
Câu 35: Cho đoạn chương trình sau:
A[1]:=14; A[2]:=12; A[3]:=4; A[4]:=12; A[5]:=18; A[6]:=22; A[7]:=19;
k:=A[1];
For i:=2 To 7 Do If A[i]<k Then k:=A[i];
Sau khi thực hiện xong đoạn lệnh trên thì giá trị của k là:
14 12 4 18
II. Tự luận
Câu 1: Viết chương trình nhập vào mảng A có n phần tử. Thực hiện các yêu cầu sau đây:
a. Đếm số phần tử chẵn
b. Đếm số phần tử lẻ
c. Đếm số phần tử dương
d. Đếm số phần tử âm
e. Đếm số phần tử bội 3
Câu 2: Viết chương trình nhập vào mảng A có n phần tử. Thực hiện các yêu cầu sau đây:
a. Tính tổng các phần tử của mảng
b. Tính tổng các phần tử chẵn
c. Tính tổng các phần tử lẻ
d. Tính tổng các phần tử dương
e. Tính tống các phần tử bội 5
Câu 3: Viết chương trình nhập vào mảng A có n phần tử. Thực hiện các yêu cầu sau đây:
a. Tìm phần tử lớn nhất ( Max) của A
b. Tìm phần tử nhỏ nhất (Min) của A
c. Tìm phần tử Chẵn lớn nhất
d. Tìm phần tử lẻ nhỏ nhất
e. Tìm phần tử âm nhỏ nhất
Câu 4: Viết chương trình nhập vào mảng A có n phần tử, nhập vào một số nguyên k, tìm các vị trí mà k xuất hiện
trong A. Nếu không có thì báo là không tìm thấy.
Câu 5: Viết Các cú pháp sau và nêu ý nghĩa các thành phần trong từng cú pháp, mỗi cú pháp cho một ví dụ mình
họa.
a. Cú pháp For..do dạng tiến và dạng lùi.
b. Cú Pháp While..do.
c. Cú pháp khai báo mảng một chiều trực tiếp và gián tiếp.
Hướng dẫn:
Phần 1: Trắc nghiệm (Lưu ý: Phần trắc nghiệm các em kèm theo phần trắc nghiệm đã ôn thi giữa HKI)
1a 11d 21b 31a
2a 12c 22c 32d
3d 13b 23c 33a
4b 14c 24b 34d
5d 15c 25b 35c
6d 16c 26b
7b 17d 27a
8c 18c 28b
9a 19d 29c
10a 20b 30d
Phần 2. Tự Luận
Câu 1: Dạng này là đếm số phần tử có cùng tính chất. Các em cho vòng lặp duyệt từ đầu đến cuối mảng. Mỗi khi gặp
một phần tử nào có tính chất đó thì tăng giá trị của biến đếm lên một.
Cụ thể: Câu a: Đếm số phần tử chẵn
*Xác định bài toán:
+ Input: n, mảng A (Số Nguyên)
+ Output: Dem (số các phần tử chẵn)
*Thuật Toán:
B1: Nhập n
B2: Cho i chạy từ 1 đến n làm: Nhập A[i]
B3: Dem 0 {ban đầu khởi gán giá trị đếm là 0}
B4: Cho i chạy từ 1 đến n làm
nếu (A[i] chia hết cho 2) thì DemDem+1
B5: Xuất Dem
*Chương trình
Các bước khác các em làm bình thường. Tại bước 4 viết như sau:
For i:= 1 to n do
If (A[i] mod 2 = 0) then Dem:=Dem+1;
Các câu còn lại tương tự, chỉ thay đổi điều kiện ở bước 4. Các bước khác giữ nguyên.
Câu 2: Dạng tính tổng này các em cũng cho vòng lặp duyệt từ đầu đến cuối mảng. Khi gặp một phần tử nó thỏa mãn yêu
cầu như đề bài thì ta cộng nó vô cho S.
Cụ thể: câu a: Tính tổng các phần tử của A.
*Xác định bài toán:
+Input: n, mảng A (Số Nguyên)
+Output: S (Tổng các phần tử của A)
*Thuật toán:
B1. Nhập n
B2: Cho I chạy từ 1 đến n làm: Nhập A[i]
B3: S 0 {Khởi gán cho S giá trị đầu là 0}
B4: Cho I chạy từ 1 đến n làm:
SS+A[i]
B5: Xuất S
*Chương trình:
Các bước khác làm bình thường, Tại B4 viết là:
For i:=1 to n do S:=S+A[i];
Câu b. Tính tổng các phần từ chẵn:
*Xác định bài toán:
+Input: n, mảng A (Số Nguyên)
+Output: S (Tổng các phần tử của A)
*Thuật Toán:
B1. Nhập n
B2: Cho I chạy từ 1 đến n làm: Nhập A[i]
B3: S 0 {Khởi gán cho S giá trị đầu là 0}
B4: Cho I chạy từ 1 đến n làm:
Nếu (A[i] chia hết cho 2 ) thì SS+A[i]
B5: Xuất S
*Chương trình:
Các bước khác làm bình thường, tại B4 viết
For i:=1 to n do If (A[i] mod 2 = 0) then S:=S+A[i];
Các câu còn lại làm tương tự câu b. Chỉ cần đổi điều kiện ở bước 4.