You are on page 1of 15

Phần 1 : Trắc nghiệm

Câu 3: Để gắn tên tệp Ketqua.inp cho biến tệp f ta sử dụng cấu trúc
A. assign(f, ‘ketqua.inp’); B. f:= ‘Ketqua.inp’;
C. assign(f, ketqua.inp); D. assign(ketqua.inp, f);
Câu 4: Phát biểu nào dưới đây về mảng là phù hợp nhất?
A. Độ dài tối đa của mảng là 255
B. Là một dãy hữu hạn các phần tử có cùng kiểu dữ liệu.
C. Là một dãy các phần tử có cùng kiểu dữ liệu
D. Là một tập hợp các số nguyên
Câu 5: Function là từ khóa dùng để khai báo:
A. Mảng
B. Hàm
C. Bản ghi
D. Thủ tục
Câu 6: Phát biểu nào sau đây là sai ?
A. Chỉ số được đánh tuần tự, liên tiếp cho các phần tử kề nhau của
mảng một chiều, từ phần tử đầu tiên cho đến phần tử cuối.
B. Mỗi phần tử của mảng một chiều đều được đánh chỉ số, được chỉ
định nhờ chỉ số tương ứng của nó.
C. Với khai báo xây dựng kiểu mảng một chiều, không thể biết được
mảng chứa tối đa bao nhiêu phần tử.
D. Trong khai báo xây dựng kiểu mảng một chiều, có thể biết được
cách đánh chỉ số cho các phần tử của mảng.
Câu 7: Dữ liệu kiểu tệp
A. Được lưu trữ trên ROM. B. Được lưu trữ trên đĩa cứng.
C. Được lưu trữ trên RAM. D. Được lưu trữ trên bộ nhớ
ngoài.
Câu 8: Phát biểu nào sau đây là đúng?
A. Có thể dùng bất cứ một kiểu dữ liệu chuẩn nào để đánh chỉ số cho
các phần tử của mảng một chiều.
B. Khi xây dựng kiểu mảng một chiều, người lập trình không cần khai
báo kiểu dữ liệu của phần tử của mảng.
C. Mảng một chiều là một dãy hữu hạn các số nguyên.
D. Mảng một chiều là một dãy hữu hạn các phần tử cùng kiểu dữ liệu.
Câu 9: Phần đầu của hàm có cấu trúc như sau?
A. Function <Tên hàm>[(<Danh sách tham số>)]:<Kiểu dữ liệu>;
B. Function <Tên hàm>[(<Danh sách tham số>)]:[<Kiểu dữ liệu>];
C. Function <Tên hàm>[(<Danh sách tham số>)];
D. Function [<Tên hàm>](<Danh sách tham số>):<Kiểu dữ liệu>;
Câu 10: Trong ngôn ngữ lập trình Pascal, xâu kí tự là?
A. Tập hợp các chữ cái trong bảng chữ cái tiếng Anh;
B. Dãy các kí tự trong bảng mã ASCII;
C. Tập hợp các ký tự;
D. Tập hợp các chữ cái và các chữ số trong bảng chữ cái tiếng Anh;
Câu 11: Thủ tục nào sau đây dùng mở tệp dữ liệu để đọc?
A. open(<tenbientep>,<tentep>); B. reset(<tenbientep>);
C. rewrite(<tenbientep>,<tentep>); D.reset(<tenbientep>,<tentep>);
Câu 12: Trong Pascal để khai báo biến tệp văn bản ta sử dụng cấu trúc
sau:
A. Var <tentep>:txt; B. Var <tenbientep>:text;
C. Var <tentep>:string; D. Var <tentep>:test;
Câu 13: Phần đầu của thủ tục có cấu trúc như sau?
A. Procedure <Tên thủ tục>(<Danh sách tham số>);
B. Procedure <Tên thủ tục>[(<Danh sách tham số>)];
C. Procedure [<Tên thủ tục>](<Danh sách tham số>);
D. Procedure <Tên thủ tục>[(<Danh sách tham số>)]:<Kiểu dữ liệu>;
Câu 14: Trong ngôn ngữ Pascal, về mặt cú pháp câu lệnh nào sau đây là
đúng ?
A. Type mang1c=array[1..10] of char;
B. Type 1chieu=array[1..10] of char;
C. Type mang1c=array(1..10) of char;
D. Type mang=array[1-10] of char;
Câu 15: Cấu trúc chung của một chương trình con là:
A. <Phần đầu> <[Phần khai báo]> <Phần thân>
B. <Phần đầu>] <Phần khai báo> [<Phần thân>]
C. <Phần đầu> [<Phần khai báo>] <Phần thân>
D. [<Phần đầu>] <Phần khai báo>] <Phần thân>
Câu 19: 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. Thủ tục và hàm nào cũng phải có tham số hình thức
C. Cả thủ tục và hàm đều có thể có tham số hình thức
D. Chỉ có hàm mới có thể có tham số hình thức
Câu 20: Trong PASCAL, để khai báo hai biến tệp văn bản f1, f2 ta viết
A. Var f1 : f2 : Text; B. Var f1 f2 : Text;
C. Var f1 ; f2 : Text; D. Var f1 , f2 : Text;
Câu 21: Cho biết kết quả in ra màn hình khi thực hiện đoạn chương
trình sau?
Program Welcome ;
Var a : string[10];
Begin
a := ‘tinhoc’; writeln(length(a));
End.
A. 7 B. chương trình báo lỗi
C. 10 D. 6
Câu 22: Cho xâu S:=’HaNoiVietNam‘. Kết quả hàm length(s) trả ra là?
A. 12 B. 16 C. 15 D. 13
Câu 23: Đoạn chương trình sau đây thực hiện công việc gì?
Var d,k: integer;
A: array[1..100] of integer;
Begin
d:=0; k:=0;
for i:=1 to N do if a[i] >0 then d:=d+a[i] else if a[i] <0 then k:= k+a[i];
Write(d:2; k:2); end;
A. Đếm số lượng số dương trong dãy A;
B. Tính tổng các số âm, tổng các số dương trong dãy A;
C. Đếm số lượng số âm, số lượng số dương trong dãy A;
D. Đếm số lượng số âm trong dãy A;
Câu 24: Nếu hàm EOF(<tên biến tệp>) cho giá trị bằng False thì con trỏ
tệp nằm ở vị trí
A. Cuối dòng. B. Vị trí bất kỳ trong tệp
C. Cuối tệp. D. Đầu tệp.
Câu 25: Phạm vi sử dụng biến cục bộ:
A. Trong tất cả chương trình con
B. Trong tất cả chương trình con và chương trình chính
C. Trong chương trình chính
D. Trong chương trình con có khai báo nó
Câu 26: Sự khác biệt cơ bản giữa hàm và thủ tục?
A. Hàm sẽ trả về một giá trị thông qua tên của hàm còn thủ tục thì
không.
B. Hàm có sử dụng biến số còn thủ tục thì không có biến số.
C. Thủ tục khai báo trước phần thân chương trình còn hàm thì sau
phần thân chương trình.
D. Xây dựng hàm khó hơn thủ tục
Câu 27: Số lượng phần tử trong tệp
A. Không được lớn hơn 255.
B. Không được lớn hơn 128.
C. Phải được khai báo trước.
D. Không bị giới hạn mà chỉ phụ thuộc vào dung lượng đĩa.
Câu 28: Biến cục bộ là:
A. Các biến được sử dụng khi thực hiện lời gọi chương trình con
B. Các biến được khai báo trong phần khai báo của chương trình con
C. Các biến được khai báo trong phần khai báo của chương trình
chính
D. Các biến được khai báo trong Phần đầu của chương trình con
Câu 29: Ta có khai báo :
Uses crt;
Var a: integer;
Procedure ThuTuc (var x,y: integer);
Var tam: integer;
Xét các mệnh đề sau :
I. Biến a được sử dụng trong chương trình chính và chương trình con
ThuTuc
II. Biến tam chỉ sử dụng được trong chương trình con ThuTuc
III. x, y được sử dụng trong cả chương trình chính và chương trình con.
Trong các mệnh đề trên, mệnh đề nào đúng?
A. Chỉ I B. I, II và III C. I và II D. Chỉ II
Câu 30: Biểu thức quan hệ nào dưới đây cho giá trị TRUE ?
A. ‘Moor’ < ‘Look’; B. ‘Mathematic’ < ‘Look’;
C. ‘AB123CD’ > ‘ab123cd’; D. ‘Moor’ < ‘Moork’;
Câu 31: Ta có đoạn chương trình sau :
Procedure VD (var a, b:integer);
Begin
a := -a; b := 2 * b;
End;
Begin
x := -5; y := 4;
VD (x,y);
Writeln (x,'; ',y); Readln;
End.
Khi thực hiện, máy cho kết quả nào trên màn hình?
A. 5, 8 B. 5; 4 C. -5; 4 D. -5; 8
Câu 32: Cho đoạn chương trình sau
S:= 0;
For i := 1 to 10 do if i mod 3 = 1 then s:=s+i;
Write(s);
Giá trị của S sau khi thực hiện chương trình trên là
A. 12 B. 7 C. 0 D. 22
Câu 33: Trong ngôn ngữ lập trình Pascal, đoạn chương trình sau thực
hiện việc nào trong các việc sau (A là mảng có N phần tử)?
S:=0; for i:=1 to N do S:= S+ A[i];
A. In ra màn hình mảng A;
B. Đếm số phần tử của mảng A;
C. Tính tổng các phần tử của mảng A;
D. Không thực hiện việc nào trong 3 việc trên.
Câu 34: Cho S là một xâu kí tự, đoạn lệnh sau thực hiện công việc gì?
S:=‘HaNoiVietNam’;
For i:= length(s) downto 1 do writeln(s);
A. In ra màn hình 15 dòng “HaNoiVietNam”
B. In ra màn hình dòng “HaNoiVietNam”
C. In ra màn hình 12 dòng “HaNoiVietNam”
D. In ra màn hình dòng “HaNoiVietNam” theo thứ tự đảo ngược lại
Câu 35: 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:2);
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. 1 3 5 7 9 B. 2 4 6 8 10 C. 1 3 5 9 D. 4 6 8 10
Câu 36: 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=3 B. x=7, y=7 C. x=3, y=7 D. x=3, y=3
Câu 37: Cho đoạn chương trình sau
Var f: text;
Begin
Assign(f,’Baitap.txt’); Rewrite(f);
Write(f, 45-12); Close(f);
End.
Kết quả ghi vào trong tệp ‘Baitap.txt’ là:
A. 4512 B. 45-12 C. 45 D. 33
Câu 13: Tệp f1 có dữ liệu   để đọc 3 giá trị trên tương ứng với 3
biến x, y, z ta sử dụng câu lệnh:
 A. Read(f1, x, y, z);
 B. Readln(x, y, z, f1);
 C. write(f1, x, y, z);
 D. writeln(x, y, z, f1);
Câu 14: Trong lời gọi thủ tục, các tham số hình thức được thay bằng
các giá trị cụ thể được gọi là:
 A. Tham số giá trị
 B. Tham số hình thức
 C. Tham số biến
 D. Tham số thực sự
Câu 15: 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 16: Các biến được khai báo dùng riêng cho chương trình con đượ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
Câu 17: Muốn khai báo x, y là tham số biến (x, y thuộc kiểu integer)
trong thủ tục có tên là “Hoan_doi” thì khai báo nào sau đây là đúng:
 A. Procedure Hoan_doi (y : integer; Var x : integer);
 B. Procedure Hoan_doi (x : integer; Var y : integer);
 C. Procedure Hoan_doi (Var x, y : integer);
 D. Procedure Hoan_doi (x, y : integer);
Câu 18: Để phân biệt giữa tham biến và tham trị, trước tham biến người
ta dùng từ khoá:
 A. Var
 B. Type
 C. Begin
 D. Const
Câu 19: Giả sử ta có hàm max(A, B: integer) : integer; để tìm số lớn
hơn trong hai số A và
 B. Cần sử dụng hàm max trên như thế nào để tìm được số lớn nhất
trong ba số A, B, C?
 A. max(A; B; C);
 B. max(A; max(B, C);
 C. max(A, B, C);
 D. max(max(A, B),C);
Câu 20: Cho chương trình sau:
procedure thutuc (a, b: integer);
 Begin
 …
 End;
Trong chương trình chính có thể gọi lại chương trình con như thế
nào:
 A. thutuc;
 B. thutuc (5, 10);
 C. thutuc(1, 2, 3);
 D. thutuc(5);

Phần II. Tự luận


Bài 1. Cho chương trình sau:
Program C_trinh_con;
Var d: char;
  X1: string;
Procedure Xoa (a: char ; var Xt:string);
 Var j: byte;
 Begin
  j := pos (a, Xt);
  while j < > 0 do
  begin
   delete(Xt, j, 1);
   j := pos(a, Xt);
  end;
 End;
Begin
 X1:=’SUCCESSFUL’;
 d := ‘S’;
 Xoa (d, X1);
End.
a/ Hãy chạy tay cho ra kết quả theo bảng mẫu dưới đây:

1 UCCESSFUL
5 UCCESFUL
5 UCCEFUL
b/ Hãy chỉ ra: biến toàn cục, biến cục bộ, tham số hình thức, tham số
thực sự, tham số biến,tham số giá trị trong chương trình trên.
Biến toàn cục:d, X1;
Biến cục bộ:j
Tham số hình thức:a,xt
tham số thực sự:d,X1
tham số biến:Xt
tham số giá trị: a
Bài 2: Cho chương trình sau:
Var x, y : word; z: Integer;
function Xuli(var a, b:word; c:integer):integer;
Var d:word;
Begin
a:=a+10; d:=5; b:=a+b; c:=a+d;
xuli:=d;
End;
Begin
X:=1; y:= 2; z:= 3;
Writeln(x :3, y :3, z :3); writeln(xuli(x,y,z)+x) ;
Writeln(x :3,y :3,z :3);
End.
Em hãy điền kết quả vào phần dấu chấm sau (3đ)
1. Biến toàn cục là: x,y,z
2. Biến cục bộ là: d
3. Tham trị là: c
4. Tham biến là: a,b
5. Tham số hình thức là: a,b,c
6. Tham số thực sự là:x,y,z
7. Lời gọi chương trình con là: xuli(x,y,z)
8. Chương trình con thuộc loại : Hàm
9. Tên chương trình con: Xuli
10. Kết quả thực hiện chương trình trên là: writeln(xuli(x,y,z)+x) 
Bài 3 . (2 điểm) 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ố chẵn trong phạm vi từ M đến N
Ghi kết quả ra tệp “KETQUA.TXT”.

Program bai2;

Uses crt;

Var f1, f2: text;

  Tong, m, n, i: integer;

Begin

Clrscr;

  assign(f1, ‘DULIEU.TXT’);

  reset(f1);

  assign(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);

readln
End.
Bài 4: Viết chương trình tính tổng 3 luỹ thừa sau bằng thủ tục
F= an + bm + cp
Với a,b,c,n,m,p là các số nguyên được nhập vào từ bàn phím

Program tongluythua;
uses crt;
var a,b,c,d,n,m,p,q: integer;
tong: int64;
procedure nhap;
begin
clrscr;
write ('nhap a,b,c: ');  readln (a,b,c);
write ('nhap n,m,p: ');  readln (n,m,p);
end;
function luythua(var x,y: integer) : longint;
var i,s: longint;
begin
s:=1;
for i:=1 to y do s:=s*x;
luythua:=s; 
end;
Procedure xulivaxuat;
Begin
Clrscr;
tong:=luythua(a,n)+luythua(b,m)+luythua(c,p);
writeln ('Tong la: ',tong);
readln;
end;
begin
nhap;
xulivaxuat;
readln
end.

Bài 5:Viết chương trình tính giá trị biểu thức sau
T=a!+b!+(a-b)!
Với a,b nguyên dương (a>b) được nhập vào từ bàn phím. Chương trình
có sử dụng chương trình con hàm hoặc thủ tục
Program TONG_GIAI_THUA;
Uses Crt;
Var T,a,b,c:integer;
Function gt(n:integer):longint;
   Var kq,i:integer;
   Begin
   kq:=1;
    For i:=1 to n do
      kq:=kq*i;
    gt:=kq;
End;
Begin
Clrscr;
Writeln('CHUONG TRINH TINH TONG GIAI THƯA :');
Writeln('---------------------------');
Write('Nhap a= '); readln(a);

Write('Nhap b= '); readln(b);

c:=a-b;
Writeln(‘T=’,gt(a)+gt(b)+gt(c));
Readln;
End.

You might also like