You are on page 1of 9

ĐỀ CƯƠNG GIỮA KỲ II

Câu 1: Cú pháp lệnh lặp For – do dạng lùi:


A. for < biến đếm> = < Giá trị cuối >downto < 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 >down < 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 2: Cú pháp lệnh lặp For – do dạng tiến:
A. for < biến đếm> = < Giá trị cuối >downto < 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 >down < Giá trị đầu > do < câu lệnh >;
D. for < biến đếm> := < Giá trị đầu > to < Giá trị cuối > do < câu lệnh>;
Câu 3: Trong vòng lặp For – do dạng tiến. Giá trị của biến đếm
A. Tự động giảm đi 1
B. Tự động điều chỉnh
C. Chỉ tăng khi có câu lệnh thay đổi giá trị
D. Được giữ nguyên
Câu 4: Kiểu dữ liệu của biến đếm trong lệnh lặp For – do:
A. Cùng kiểu với giá trị đầu và giá trị cuối
B. Chỉ cần khác kiểu với giá trị đầu
C. Cùng kiểu với các biến trong câu lệnh
D. Không cần phải xác định kiểu dữ liệu
Câu 5: Trong lệnh lặp For – do: (chọn phương án đúng nhất)
A. Giá trị đầu phải nhỏ hơn giá trị cuối
B. Giá trị đầu phải nhỏ hơn hoặc bằng giá trị cuối
C. Giá trị đầu phải lớn hơn giá trị cuối
D. Giá trị đầu phải bằng giá trị cuối
Câu 6: Đoạn chương trình sau giải bài toán nào?
For I:=1 to M do
If (I mod 3 = 0) and (I mod 5 = 0) then
T := T + I;
A. Tổng các số chia hết cho 3 hoặc 5 trong phạm vi từ 1 đến M
B. Tổng các số chia hết cho 3 và 5 trong phạm vi từ 1 đến M
C. Tổng các số chia hết cho 3 trong phạm vi từ 1 đến M
D. Tổng các số chia hết cho 5 trong phạm vi từ 1 đến M
Câu 7: Đoạn chương trình sau giải bài toán nào?
S:=1.0/a;
For n:=100 downto 1 do
S:= S + 1.0/(a+N);
1 1 1 1
A. Tính tổng s= + + + …+ +…
a a+1 a+2 a+ N
1 1 1
B. Tính tổng s= + +…+ +…
a+ 1 a+2 a+100
1 1 1 1
C. Tính tổng s= + + + …+
a a+1 a+2 a+100
1 1 1
D. Tính tổng s= + +…+
a+ 1 a+2 a+100
Câu 8: Cho hai dạng lặp FOR – DO trong PASCAL như sau :
Dạng lặp tiến :
FOR <biến đếm> := <giá trị đầu> TO <giá trị cuối> DO <câu lệnh> ;
Dạng lặp lùi :
FOR <biến đếm> := <giá trị cuối> DOWNTO <giá trị đầu> DO <câu lệnh> ;
Chọn phát biểu đúng trong các phát biểu sau đây :
A. Ở dạng lặp tiến câu lệnh sau DO luôn được thực hiện ít nhất một lần.
B. Ở dạng lặp lùi câu lệnh sau DO được thực hiện tuần tự, với biến đếm lần lượt nhận giá trị từ giá trị đầu
đến giá trị cuối.
C. Ở dạng lặp lùi câu lệnh sau DO có thể không được thực hiện lần nào, đó là trường hợp giá trị cuối nhỏ
hơn giá trị đầu
D. Biểu thức giá trị đầu và biểu thức giá trị cuối có thể thuộc kiểu số thực.

Câu 9: Để tổ chức việc lặp như vậy PASCAL dùng câu lệnh WHILE – DO có dạng :
WHILE <điều kiện> DO <câu lệnh>;
Chọn phát biểu sai trong các phát biểu dưới đây :
A. Điều kiện là biểu thức cho giá trị logic
B. Về mặt cú pháp, những biểu thức có thể điền vào điều kiện trong cấu trúc WHILE – DO cũng có thể điền
vào điều kiện trong cấu trúc rẽ nhánh IF – THEN
C. Không cần có lệnh thay đổi điều kiện trong mỗi câu lệnh sau DO trong cấu trúc lặp này, vì giá trị của
biểu thức điều kiện được tự động điều chỉnh sau mỗi lần thực hiện câu lệnh lặp
D. Nếu không có lệnh nào thay đổi điều kiện trong mỗi câu lệnh sau DO thì có thể gặp hiện tượng lặp vô
hạn khi thực hiện chương trình, nghĩa là lặp không dừng được
Câu 10: Chọn phát biểu sai trong các phát biểu sau đây:
A. Để mô tả việc lặp đi lặp lại một số thao tác (hoặc câu lệnh) trong một thuật toán ta có thể dùng cấu trúc
lặp
B. Tùy từng trường hợp cụ thể (khi mô tả một thuật toán), khi thì ta biết trước số lần lặp, khi thì ta không
cần hoặc không xác định được trước số lần lặp các thao tác nào đó.
C. Có thể dùng cấu trúc lặp để thay cho cấu trúc rẽ nhánh trong mô tả thuật toán. (*)
D. Không thể mô tả được mọi thuật toán bằng ngôn ngữ lập trình bậc cao nếu không dùng cấu trúc lặp
Câu 11: Chương trình sau giải bài toán gì:
Var M, N, I : integer;
BEGIN
clrscr;
M := 0 ;
N := 0 ;
For I := 1 TO 10000 do
Begin
if ( (I mod 3) = 0 ) then M := M + 1 ;
if ( (I mod 3) = 0 ) and ( (I mod 5) = 0 ) then N := N + 1 ;
End;
writeln( M,‘ ’, N );
readln
END.

A. Đây là chương trình đếm số các số nguyên trong khoảng từ 1 đến 10000 là bội số của 3
B. Đây là chương trình đếm và thông báo ra màn hình rằng trong khoảng từ 1 đến 10000 có bao nhiêu số
nguyên là bội số của 3 và có bao nhiêu số là bội số chung của 3 và 5
C. Đây là chương trình đếm số các số nguyên nhỏ hơn 10000 và chia hết cho 3
D. Đây là chương trình đếm số các số nguyên trong khoảng từ 1 đến 10000 là bội số của 3 và 5
Câu 12: Đoạn chương trình sau thực hiện công việc gì ?
i := 0 ; while i <> 0 do write(i, ‘ ’) ;
A. Đưa ra màn hình 10 chữ số 0
B. Không đưa ra thông tin gì;
C. Lặp vô hạn việc đưa ra màn hình số 0
D. Đưa ra màn hình một chữ số 0
Câu 13: Đoạn chương trình sau cho kết quả trên màn hình là gì với i là biến số nguyên:
For i := 1 to 100 do if i mod 9 = 0 then write(i, ‘ ’);
A. 1 2 3 4 5 6 … 100
B. 91827364554637281
C. 9 18 27 36 45 54 63 72 81 90 99
D. 9 9 9 9 9 9 9 9 9 9
Câu 14: Hãy cho biết đoạn chương trình sau làm công việc gì ?
I := 0 ; T := 0 ;
While I < 10000 do
Begin
T := T + I ;
I := I + 2 ;
End ;
A. Tính tổng các số tự nhiên nhỏ hơn hoặc bằng 10000
B. Tính tổng các số tự nhiên chẵn nhỏ hơn 10000
C. Tính tổng các số tự nhiên chẵn nhỏ hơn hoặc bằng 10000
D. Tính tổng các số tự nhiên nhỏ hơn hoặc 10000
Câu 15: Đoạn chương trình sau làm công việc gì? (Chọn phương án đúng nhất)
While a < (b+25) do readln(a,b);
A. Lặp lại việc nhập a,b cho đến khi a < b+25
B. Lặp lại việc nhập a,b cho đến khi a> b+25
C. Lặp lại việc nhập a,b cho đến khi a ≥ b+ 25
D. Lặp lại việc nhập a,b cho đến khi a ≤ b+25
Câu 16: Để khai báo số phần tử của mảng 1 chiều, người lập trình cần:
A. Khai báo một hằng số là số phần tử của mảng
B. Khai báo chỉ số bắt đầu và kết thúc của mảng
C. Khai báo chỉ số kết thúc của mảng
D. Không cần khai báo gì, hệ thống sẽ tự xác định
Câu 17: Phát biểu nào dưới đây về chỉ số của mảng là phù hợp nhất ?
A. Dùng để truy cập đến một phần tử bất kì trong mảng;
B. Dùng để quản lí kích thước của mảng;
C. Dùng trong vòng lặp với mảng;
D. Dùng trong vòng lặp với mảng để quản lí kích thước của mảng;
Câu 18: Phát biểu nào sau đây về mảng là không chính xác ?
A. Chỉ số của mảng không nhất thiết bắt đầu từ 1;
B. Có thể xây dựng mảng nhiều chiều;
C. Xâu kí tự cũng có thể xem như là một loại mảng;
D. Độ dài tối đa của mảng là 255;
Câu 19: Phương án nào dưới đây là khai báo mảng hợp lệ ?
A. mang : ARRAY[0..10] OF INTEGER;
B. mang : ARRAY[0..10] OF INTERGER;
C. mang : INTEGER OF ARRAY[0..10];
D. mang : ARRAY(0..10) : INTEGER;
Câu 20: Câu lệnh dùng để nhập giá trị cho phần tử trong mảng
A. readln(<Tên mảng>[<Kiểu chỉ số>]);
B. readln(<Tên mảng>[<Biến đếm>]);
C. readln(<Tên mảng>[<Chỉ số cuối>]);
D. readln(<Tên mảng>[<Chỉ số đầu>]);
Câu 21: Đoạn chương trình sau giảm bài toán gì?
M:=a[1];
For i:=2 to n do
If a[i]<M then M:=M else M:=a[i];
A. Tìm số lớn nhất của dãy số
B. Tìm số nhỏ nhất của dãy số
C. So sánh các số trong dãy với số đầu tiên
D. Đáp án khác
Câu 22: Trong ngôn ngữ lập trình Pascal câu lệnh nào sau đây là đúng cú pháp?
A. For i:=1 to n do; if a[i] mod 2 = 0 then writeln(a[i], ‘la so le’);
B. For i:=1 to n do if a[i] mod 2 = 0 then writeln(a[i] ‘la so le’);
C. For i:=1 to n do if a[i] mod 2 = 0 then writeln(‘a[i], ‘la so le’);
D. For i:=1 to n do if a[i] mod 2 = 0 then writeln(‘a[i], la so le’);
Câu 23: Trong ngôn ngữ lập trình Pascal câu lệnh nào sau đây là sai cú pháp?
A. For i:=10 downto 1 do if a[i] div 2 = 0 then write(a[i] = 1);
B. For i:=10 downto 1 do if a[i] div 2 = 0 then write(a[i], ‘= 1’);
C. For i:=10 downto 1 do if a[i] div 2 = 0 then write(a[i] = 0);
D. For i:=10 downto 1 do if a[i] div 2 = 0 then write(a[i], ‘≥ 1’);
Câu 24: Cho khai báo biến mảng sau:
Var a:array[0..16] of byte;
Câu lệnh nào sau đây in ra tất cả các phần tử của mảng.
A. For i:=1 to 16 do write(a[i]);
B. For i:= 0 to 15 do write(a[i]);
C. For i:=16 downto 0 do write(a[i]);
D. For i:=16 downto 1 do write(a[i]);
Câu 25: Cho khai báo biến mảng sau:
Var a:array[0..16] of byte;
Phương án nào dưới đây chỉ phần tử thứ 10 của mảng.
A. a[9]
B. a[10]
C. a[11]
D. a(10)
Câu 26:Đoạn chương trình sau khi thực hiện cho kết quả gì?
Var a:array[1..3] of byte; i:byte;
Begin
For i:=1 to 3 do a[i]:=i;
For i:=1 to 3 do
If a[i] mod 2 = 0 then Write(a[i]); End.
A. 1
B. 2
C. 3
D. 1 2 3
Câu 27: Cho chương trình sau:
var f:array[0..50] of word; i:byte;
Begin
f[0]:=0; f[1]:=1;
for i:=2 to 10 do
begin f[i]:=f[i-1]+f[i-2];
write(f[i]:4); end;
End.
Phần tư a[6] có giá trị là:
A. 6
B. 7
C. 8
D. 9
Câu 28: Sau khi chạy chương trình dưới, giá trị của f là bao nhiêu:
var a:array[1..100] of byte; i,f,d:byte;
begin
for i:=1 to 100 do a[i]:=i;
d:=a[2]-a[1];
for i:=2 to 100 do if a[i]=a[i-1]+d then f:=1 else f:=0;
write(f);
readln End.

A. 0
B. 1
C. 100 số 0
D. 100 số 1
Câu 29: Sau khi chạy chương trình dưới, giá trị của f là bao nhiêu:
var a:array[1..100] of byte; i,f,d:byte;
begin
for i:=1 to 10 do a[i]:=2*i+1;
d:=a[2]-a[1];
for i:=2 to 10 do if a[i]+d=a[i+1] then f:=1 else f:=0;
write(f);
end.

A. 1
B. 0
C. 10 số 0
D. 10 số 1
Câu 30: Chương trình sau thực hiện giải bài toán gì?

A. Đếm số lượng số nguyên tố trong dãy


B. Đếm số lượng số chẵn trong dãy
C. Đếm số lượng số hỗn hợp trong dãy
D. Đáp án khác
Câu 31: Độ dài tối đa của xâu kí tự trong Pascal là:
A. 255
B. 256
C. 0
D. Không giới hạn
Câu 32: Xâu kí tự có độ dài bằng 0 gọi là:
A. Không tồn tại
B. Xâu rỗng
C. Chứa kí tự 0
D. Xâu ngắn
Câu 33: Kí tự đầu tiên trong xâu được đánh số là:
A. 0
B. 1
C. Do người lập trình đặt
D. Không quy định
Câu 34: Cú pháp khai báo biến xâu là:
A. Var <tên biến>:string[độ dài lớn nhất của xâu];
B. Var tên biến :string[độ dài lớn nhất của xâu];
C. Var <tên biến>:string(độ dài lớn nhất của xâu);
D. Var tên biến :string(độ dài lớn nhất của xâu);
Câu 35: Để khai báo biến xâu ta sử dụng tên dành riêng:
A. Array
B. String
C. Type
D. Const
Câu 36: Thủ tục Delete(a,b,c) có nghĩa là:
A. Xóa c kí tự của biến xâu a bắt đầu từ vị trí b
B. Xóa a kí tự của biến xâu b bắt đầu từ vị trí c
C. Xóa c kí tự của biến xâu b bắt đầu từ vị trí a
D. Xóa a kí tự của biến xâu c bắt đầu từ vị trí b
Câu 37: Hàm Copy(a,b,c) có nghĩa là:
A. Tạo xâu gồm a kí tự liên tiếp bắt đầu từ vị trí b của xâu c
B. Tạo xâu gồm b kí tự liên tiếp bắt đầu từ vị trí c của xâu a
C. Tạo xâu gồm c kí tự liên tiếp bắt đầu từ vị trí a của xâu b
D. Tạo xâu gồm c kí tự liên tiếp bắt đầu từ vị trí b của xâu a
Câu 38: Thủ tục Insert(a,b,c) có nghĩa là:
A. Chèn xâu c vào xâu b bắt đầu ở vị trí a
B. Chèn xâu a vào xâu c bắt đầu ở vị trí b
C. Chèn xâu a vào xâu b bắt đầu ở vị trí c
D. Chèn xâu b vào xâu a bắt đầu ở vị trí c
Câu 39: Tham chiếu đến phần tử của xâu được xác định bởi:
A. Tên biến xâu và chỉ số đặt trong cặp ngoặc ( và )
B. Tên biến xâu và chỉ số đặt trong cặp ngoặc [ và ]
C. Tên biến xâu và chỉ số đặt trong cặp ngoặc { và }
D. Tên biến xâu và chỉ số đặt trong cặp ngoặc “ và ”
Câu 40: Một số thao tác xử lí xâu là:
A. Phép gán, phép so sánh
B. Phép ghép, phép so sánh
C. Phép cộng, phép gán
D. Phép so sánh, phép trừ
Câu 41: Trong ngôn ngữ lập trình Pascal, để xóa đi ký tự đầu tiên của xâu ký tự S ta viết?
A. Delete(S, 1, 1);
B. Delete(S, i, 1); { i là biến đếm có giá trị ≠ 1}
C. Delete(S, length(S), 1);
D. Delete(S, 1, i); { i là biến có giá trị bất kỳ }
Câu 42: Trong ngôn ngữ lập trình Pascal, để tìm vị trí xuất hiện đầu tiên của xâu ‘hoa’ trong xâu S ta
có thể viết bằng cách nào trong các cách sau ?
A. S1 := ‘hoa’ ; i := pos(S1, ‘hoa’) ;
B. i := pos(‘hoa’, S) ;
C. i := pos(S, ’hoa’) ;
D. i := pos(‘hoa’, ‘hoa’) ;
Câu 43: Trong ngôn ngữ lập trình Pascal, để in một xâu kí tự ra màn hình theo thứ tự ngược lại của
các ký tự trong xâu (vd : abcd thi in ra là dcba), đoạn chương nào sau đây thực hiện việc đó?
A. For i := 1 to length(S) do write(S[i])
B. For i := length(S) downto 1 do write(S[i])
C. For i := length(S) downto 1 do write(S)
D. For i := 1 to length(S) div 2 do write(S[i])
Câu 44: Xác định biểu thức cho giá trị đúng (true) trong các biểu thức sau đây.
A. ‘Ninh thuan que toi’ < ‘Ninh thuan’
B. ‘Truong chinh’ = ‘TRUONG CHINH’
C. ‘Anh’ > ‘Em’
D. ‘Tin hoc’ > ‘Tien hoc le – Hau hoc van’
Câu 45: Cho xâu St = ‘THPT Phan Boi Chau’, Để có xâu St =’THPT’ ta dung thủ tục nào sâu đây:
A. Delete(St, 5,14 );
B. Delete(St, 14, 5 );
C. Delete(St, 1, 5 );
D. Delete(St,5, 1 );
Câu 46: Đoạn chương trình sau thực hiện công việc gì? (giá trị của biến đếm):
Dem:=0;
For ch:= ‘a’ to ‘z’ do
If pos(ch,s) <> 0 then dem := dem +1;
A. Đếm số lượng ký tự khác dấu cách của xâu S
B. Đếm số lượng kí tự là chữ cái in hoa của xâu S
C. Đếm số lượng ký tự là chữ cái thường trong xâu S
D. Đếm số lượng chữ cái thường khác nhau có trong xâu S
Câu 47: Trong ngôn ngữ lập trình Pascal, đoạn chương trình sau thực hiện công việc gì?
X:=length(S);
For i:=X downto 1 do
If S[i] = ‘ ’ then Delete(S,i,1);
A. Xóa dấu cách đầu tiên trong xâu ký tự S
B. Xóa dấu cách thừa trong xâu ký tự S
C. Xóa dấu cách tại vị trí cuối cùng của xâu S
D. Xóa mọi dấu cách của xâu S
Câu 48: Trong ngôn ngữ lập trình Pascal, đoạn chương trình sau thực hiện công việc gì?
S1 := ‘anh’ ; S2 := ‘em’ ; i := pos(S2, S) ;
While i <> 0 do
Begin
Delete(S, i, 2) ;
Insert(S1, S, i) ;
i := pos(S2, S) ;
End ;

A. Thay toàn bộ cụm từ ‘anh’ trong xâu S bằng cụm từ ‘em’ ;


B. Thay toàn bộ cụm từ ‘em’ trong xâu S bằng cụm từ ‘anh’ ;
C. Thay cụm từ ‘em’ đầu tiên trong xâu S bằng cụm từ ‘anh’ ;
D. Thay cụm từ ‘anh’ đầu tiên trong xâu S bằng cụm từ ‘em’ ;
Câu 49: Trong ngôn ngữ lập trình Pascal, sau khi thực hiện xong đoạn chương trình sau, biến Found
có giá trị là gì ? (S là biến xâu ký tự)
Found := 0 ;
x := length(S) ;
For i := 1 to x Div 2 do
If S[i] <> S[x – i + 1] then Found := 1 ;

A. Found bằng 0 nếu S là xâu đối xứng;


B. Found bằng 0 nếu S là xâu không đối xứng;
C. Found bằng 1 nếu S là xâu đối xứng;
D. Found không có giá trị gì;
Câu 50: Trong ngôn ngữ lập trình Pascal, đoạn chương trình thực hiện công việc nào trong các công
việc sau:
i := pos(‘ ’, S); { ‘ ’ là 2 dấu cách }
while i <> 0 do
Begin
Delete(S, i, 1) ;
i := pos(‘ ’, S) ;
End;
A. Xóa 2 dấu cách liền nhau đầu tiên trong xâu;
B. Xóa đi một trong 2 dấu cách đầu tiên trong xâu;
C. Xóa các dấu cách trong xâu S để S không còn 2 dấu cách liền nhau;
D. Xóa các dấu cách liền nhau cuối cùng trong xâu;
ĐÁP ÁN
1. B 2. D 3. B 4. A 5. B 6. B 7. C 8. C 9. C 10. C
11. B 12. C 13. C 14. B 15. C 16. B 17. A 18. D 19. A 20. B
21. A 22. D 23. D 24. C 25. B 26. B 27. C 28. B 29. B 30. A
31. A 32. B 33. B 34. A 35. B 36. A 37. D 38. C 39. B 40. B
41. A 42. B 43. B 44. D 45. A 46. D 47. D 48. B 49. A 50. C

You might also like