Tải bản đầy đủ (.docx) (16 trang)

GIÁO TRÌNH BỒI DƯỠNG HS GIỎI TIN HỌC 8 PASCAL 20172018

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (526.99 KB, 16 trang )

Trường THCS Đồng Khởi – Q. Tân Phú

Giáo trình Pascal

LẬP TRÌNH PASCAL – TIN HỌC 8
1. Đề luyện tập cấp độ 1 (sơ cấp):
Bài thực hành 1: Làm quen với Free Pascal
 Bài tập 1:

Hướng dẫn:

Sửa lỗi sai trong chương trình sau:



Từ khóa, cách đặt tên chương trình, quy
định phần thân chương trình.



Cú pháp lệnh:

Program Bai tho;
Uses crt;

Writeln(‘Chuỗi ký tự ’);

Begin;
Clrscr;




Uses crt Khai báo thư viện crt.

Writeln(‘Thuong ai cat buoc song song’)



Clrscr Xóa màn hình kết quả.

Writeln(Toc bay cuong quit nang xuan nhe ve);



Writeln In ra màn hình.

Writeln ‘Tan truong doi bong ngo nghe’;



Readln Tạm ngưng chương trình đến khi
nhấn phím Enter.

Writln(‘Duong trua ngan qua! Ta le the buon.’);
Readln.
End;
 Bài tập 2:

Hướng dẫn:

Viết chương trình in ra màn hình nội dung sau:




Cú pháp lệnh:
Writeln(‘Chuỗi ký tự ’);

“Hello Free Pascal!”
 Bài tập 3:

Hướng dẫn:

Viết chương trình in ra màn hình 4 câu thơ sau:



Sử dụng lệnh:
Write(‘Chuỗi ký tự ’);

“Mùa hè là mùa thi cử

Writeln(‘Chuỗi ký tự ’);

Chúc bạn hiền hai chữ thành công


Thành công rồi có nhớ tôi không

Phân biệt lệnh Write và Writeln.

Hay là đã trót bỏ quên nơi nào?”

 Bài tập 4:

Hướng dẫn:

Viết chương trình in ra màn hình bài thơ sau:



Write: Con nháy ở vị trí cuối dòng ký tự.

“Lắng tai nghe tiếng thở của thời gian



Writeln: Con nháy ở vị trí đầu dòng tiếp
theo.

Tiếng lá rơi từ nhành non khe khẽ
Tiếng phượng nở nghe sao rất nhẹ
Chợt lặng đi trong bóng nắng ban chiều.”
 Bài tập 5:

Hướng dẫn:

Viết chương trình dùng các ký hiệu trên bàn phím để vẽ hình –
chữ nhật, hình bình hành, hình tam giác, hình thoi.
***********
***********

Dùng lệnh Write hoặc Writeln.


########
########

***********

########
########

$

%

$$$
$$$$$
$$$$$$$

%

%

%

%
%

%
%

 Bài tập 6:

1

Hướng dẫn:
ĐT: 0938.038.735




Q. Tân Phú

Năm: 2017

Viết chương trình in bảng thông tin học sinh ra màn hình: Tên –
trường, Họ tên, Lớp, Mã số. Đóng khung đẹp mắt.
**********************************
* Trường : THCS Đồng Khởi

*

* Ho ten : Nguyen Trinh Lap

*

* Lop

*

: 8/17

* Ma so : 19


*

**********************************
 Bài tập 7:

Hướng dẫn:

Viết chương trình in ra màn hình nội dung sau:



a) (5 + 9) – 6 x 3
b) 25 : [12 – 5 x (4 :3) + 12] – 7
Bài thực hành 2: Viết chương trình để tính toán
 Bài tập 1:
Viết chương trình tính các biểu thức sau:

Hướng dẫn:


a) (5 – 2 x 3) : 2 =

Write(‘ Chuỗi ký tự ’,biểu thức);

b) 12 : [5 x 3 + (5 * 8) – 1] =

Writeln(‘ Chuỗi ký tự ’, biểu thức);

c) 25^2 – 6 =

d) (15 div 2) mod 3 =



e) [(245 div 10) div 3] mod 2 =
f)

Kết hợp lệnh in chuỗi ký tự và in giá trị của
biểu thức:

Phép tính trong Pascal: cộng +, trừ -, nhân
*, chia /, mod, div và các dấu ( ).

(25 x 3) + 15 div (17 mod 5) =

 Bài tập 2:

Hướng dẫn:

Viết chương trình nhập năm sinh của một bạn học sinh là số – Khai báo hằng số:
nguyên, cho biết bạn đó bao nhiêu tuổi. (Cho năm hiện tại là Const Tên_biến = <Giá trị>;
2017).
– Khai báo biến:
Ví dụ:
Var Biến_1, Biến_2,… : <Kiểu giá trị>;
Nhap nam sinh: 2004

>> Tuoi cua ban la: 13
 Bài tập 3:




Hướng dẫn:

Viết chương trình nhập vào năm hiện tại và năm sinh của một –
bạn học sinh. Tính tuổi của bạn học sinh đó.
 Bài tập 4:

Readln(Tên_biến): Đọc là lưu giá trị vào
biến.
Sử dụng hai biến kiểu số nguyên (Integer).

Hướng dẫn:

Viết chương trình nhập số học sinh và số quả táo là số nguyên. – Kết hợp lệnh in chuỗi ký tự và in giá trị của
biểu thức:
Hãy chia táo cho các bạn, rồi xuất ra màn hình cho biết mỗi bạn
được bao nhiêu quả táo và con dư bao nhiêu quả táo?
Write(‘Chuỗi ký tự ’,biểu thức, ’Chuỗi ký tự‘);
Ví dụ:
Writeln(‘Chuỗi ký tự ’, biểu thức, ’Chuỗi ký
tự‘);

Nhap so qua tao: 52
Nhap so hoc sinh: 15



Dùng lệnh Div để tìm số quả táo mỗi học
sinh nhận được.




Dùng lệnh Mod để tìm táo dư.

>> Moi hoc sinh nhan duoc: 3 qua tao
>> Con du: 7 qua tao
 Bài tập 5:

Hướng dẫn:

Viết chương trình nhập điểm toán, văn, anh của một bạn học –
sinh là số thực. Hãy tính điểm trung bình của bạn đó biết điểm
toán, văn hệ số 2.

Ví dụ:
GVBS: Nguyễn Thị Cúc

Sử dụng biến toán, văn, anh kiểu số thực
(Real).
Cú pháp lệnh:
Writeln(<Giá trị thực> :n :m);
2


Trường THCS Đồng Khởi – Q. Tân Phú

Giáo trình Pascal

Nhap diem toan: 9.5


 Trong đó:

Nhap diem van: 8

N : Độ dài để in số.

Nhap diem anh: 9.5

M : Số chữ số thập phân.

>> Diem trung binh cua ban la: 9.0
 Bài tập 6:

Hướng dẫn:

Viết chương trình nhập vào một số nguyên có 3 chữ số. Hãy –
cho biết 2 chữ số cuối cùng của số đó là bao nhiêu.

Sử dụng lệnh Mod để tìm 2 chữ số cuối.

Ví dụ:
Nhap so nguyen co 3 chu so: 356
>> Hai chu so cuoi cung la: 56
Bài thực hành 3: Khai báo và sử dụng biến
 Bài tập 1:

Hướng dẫn:

Viết chương trình nhập bán kính của hình tròn là số thực. Hãy – Khai báo hằng số Pi = 3.14 Const

tính diện tích và chu vi của hình tròn đó. (Lấy 2 chữ số thập – Khai báo biến kiểu số thực Real
phân).
– Công thức:
Ví dụ:
Diện tích hình tròn = Bán kinh2 x Pi
Nhap ban kinh: 2

Chu vi hình tròn = 2 x Bán kính x Pi

>> Dien tich la: 12.56
>> Chu vi la: 12.56
 Bài tập 2:

Hướng dẫn:

Viết chương trình nhập chiều cao của 2 bạn học sinh là so –
thực, đơn vị là mét. Hãy tính trung bình cộng chiều cao của 2
bạn đó.

Kết quả lấy 2 chữ số thập phân (2 số lẻ).

Ví dụ:
Nhap chieu cao ban 1: 1.5
Nhap chieu cao ban 2: 1.6
>> Trung binh cong chieu cao hai ban la: 1.55
 Bài tập 3:

Hướng dẫn:

Nhập cạnh a. Tính và xuất chu vi, diện tích hình vuông.

 Bài tập 4:



Chu vi = a x 4



Diện tích = a2

Hướng dẫn:

Nhập cạnh a, b. Tính chu vi và diện tích hình chữ nhật.
 Bài tập 5:



Chu vi = (a + b) x 2



Diện tích = a x b

Hướng dẫn:

Nhập cạnh a, b, c. Tính và xuất chu vi, diện tích hình tam giác.



Chu vi = a + b + c




Dien tich =

Với p = Chu vi : 2
 Bài tập 6:

Hướng dẫn:

Nhập vào hai số nguyên dương a, b. Tính tổng, hiệu, thương, –
tích của hai số nguyên đó.
 Bài tập 7:

Hướng dẫn:

Nhập số nguyên n. Tính và xuất giá trị tuyệt đối của n.
 Bài tập 8:

Sử dụng hàm Abs(a) để lấy giá trị tuyệt đối
của a |a|

Hướng dẫn:

Nhập số nguyên n. Tính và xuất căn bậc hai của n.
3



ĐT: 0938.038.735




Sử dụng hàm Sqrt(a) để lấy căn bậc 2 của a



Q. Tân Phú

Năm: 2017


 Bài tập 9:

Hướng dẫn:

Viết chương trình nhập vào hai số nguyên dương a và b. Hãy –
hoán đổi giá trị a và b cho nhau và in ra màn hình kết quả.

Sử dụng phép gán:
T := 12;

T mang giá trị 12

Ví dụ:

E := T;

E mang giá trị của T và E = 12


Nhap a: 15

T := T – 5; T mang giá trị 7

Nhap b: -8
>> Sau khi hoan doi gia tri a= -8
>> Sau khi hoan doi gia tri b= 15
 Bài tập 10:

Hướng dẫn:

Viết chương trình đảo ngược một số nguyên dương có đúng 3 –
ký số.
Ví dụ:
Nhap so nguyen co 3 ky so: 248
>> Dao cua 248 la: 842
Bài thực hành 4: Sử dụng lệnh điều kiện IF…THEN…
 Bài tập 1:

Hướng dẫn:

Viết chương trình nhập vào 1 số nguyên. Kiểm tra xem số đó có –
phải là số chính phương không.

 Bài tập 2:

Số chính phương là số có căn bậc 2 là một
số nguyên.




Sử dụng hàm Frac Hàm lấy số lẻ.



Sử dụng hàm Sqrt Lấy căn bậc 2.

Hướng dẫn:

Viết chương trình nhập vào 1 số nguyên có 2 ký số. Kiểm tra số –
vừa nhập là chẵn hay lẻ.

Sử dụng lệnh Mod để kiểm tra tính chẵn
hay lẻ.

Ví dụ:
Nhap so nguyen: 17
>> 17 la so lẻ.
 Bài tập 3:

Hướng dẫn:

Nhập vào 2 số nguyên a và b. Cho biết giá trị lớn nhất trong hai –
số đó.

Dùng Readln(Biến_1, Biến_2) để nhập hai
biến trên cùng một dòng.




Cách 1: Dùng điều kiện a>=b hoặc ain giá trị lớn nhất.



Cách 2:

Ví dụ:
Nhap hai so a va b: -8 12
>> So lon nhat la: 12

Gán max:=a;
Nếu maxIn kết quả là max ra màn hình.
 Bài tập 4:

Hướng dẫn:

Nhập vào 3 số nguyên t1, t2, t3. Cho biết giá trị nhỏ nhất trong –
3 số đó.

Ví dụ:

Nhap t1, t2 va t3: 9 -6 1



Gán min:=t1;
Nếu min>t2 thì gán min:=t2;
Nếu min>t3 thì gán min:=t3;

In kết quả là min ra màn hình.

>> -6 la gia tri nho nhat.
 Bài tập 5:

Hướng dẫn:

Viết chương trình nhập số kg gạo là số nguyên. Giả sử có 1 số –
GVBS: Nguyễn Thị Cúc

Sử dụng lệnh Mod và Div.
4


Trường THCS Đồng Khởi – Q. Tân Phú

Giáo trình Pascal

bao: 20 kg, 10 kg, 5 kg, 2 kg, 1 kg. Hãy tìm cách cho gạo vào –
bao sao cho số lượng bao cần dùng là ít nhất.

Nếu số lượng bao nào > 0 thì in số lượng
bao đó ra màn hình.

Ví dụ:
Nhap so kg gao: 49
>> Bao 20 kg : 2
>> Bao 5 kg : 1
>> Bao 2 kg : 2
 Bài tập 6:


Hướng dẫn:

Viết chương trình nhập vào 2 số nguyên x, y. Nếu x>0 thì tăng x –
thêm 2 đơn vị. Nếu y>0 thì hãy gấp đôi giá trị của y.
Ví dụ:
Nhap x : 4
Nhap y : 5
>> Gia tri moi cua x la : 6
>> Gia tri moi cua y la : 10
 Bài tập 7:

Hướng dẫn:

Viết chương trình kiểm tra một số nguyên n là số âm hay –
dương.
 Bài tập 8:

Hướng dẫn:

Viết chương trình kiểm tra một số thực có chứa số lẻ hay
không và in các số lẻ đó ra màn hình.



Sử dụng hàm Frac để kiểm tra.

Ví dụ:
Nhap so thuc : 2.578
>> So thuc co so le la: 578

 Bài tập 9:

Hướng dẫn:

Viết chương trình nhap vào một số nguyên dương là tháng –
trong một năm và in ra số ngày của tháng đó. Biết rằng:
+ Tháng có 31 ngày: 1, 3, 5, 7, 8, 10, 12
+ Tháng có 30 ngày: 4, 6, 9, 11
+ Tháng có 28 hoặc 29 ngày: 2
 Bài tập 10:

Hướng dẫn:

Nhập 2 số a, b. Kiểm tra xem chúng có cùng dấu hay không?
 Bài tập 11:


Hướng dẫn:

Nhập vào hai số nguyên dương a, b. So sánh giá trị của chúng –
(lớn, nhỏ, bằng).
 Bài tập 12:

Hướng dẫn:

Nhập vào chiều dài 3 đoạn thẳng là số nguyên. Kiểm tra xem 3 –
đoạn thẳng đó có tạo thành 1 tam giác.
 Bài tập 13:

Hướng dẫn:


Nhập vào số nguyên t. Kiểm tra xem t có vừa chia hết cho 3
vừa chia hết cho 5 không?
 Bài tập 14:



Sử dụng lệnh kết hợp điều kiện And.

Hướng dẫn:

Nhập vào số nguyên t. Kiểm tra xem t có chia hết cho 3 hoặc –
không chia hết cho 7 không?
5

3 đoạn thẳng d1, d2, d3 có thể tạo thành
tam giác  tổng hai đoạn thẳng bất kỳ
phải lớn hơn đoạn thẳng còn lại.

ĐT: 0938.038.735

Sử dụng lệnh kết hợp điều kiện Or.




Q. Tân Phú

Năm: 2017


 Bài tập 15:

Hướng dẫn:

Nhập vào một số nguyên có 3 ký số. Hoán đổi vị trí các ký số –
sao cho số đó đạt giá trị lớn nhất.

Ví dụ:

N=
Dùng lệnh Mod và Div để gán t1=a, t2=b,
t3=c.

Nhap so nguyen co 3 ky so : 152



Nếu t1
>> 521 dat gia tri lon nhat sau khi hoan doi.



Nếu t1


Nếu t2



Sử dụng Begin…End; để kết hợp nhiều lệnh
cho lệnh If...Then…

 Bài tập 16:

Hướng dẫn:

Nhập số nguyên dương t có 4 ký số. Kiểm tra xem t có phải là
số đơn điệu.



Số đơn điệu là số có các ký số luân phiên
tăng giảm hoặc giảm tăng. (Ví dụ: 4523
đơn điệu vì 4<5>2<3)

Bài thực hành 5: Sử dụng lệnh lặp FOR…DO…
 Bài tập 1:

Hướng dẫn:

Viết chương trình nhập vào 1 số nguyên dương n. In ra màn – Cú pháp lệnh:
hình các số từ 1 đến n trên cùng dòng và các số chiếm 5 ô ký
Write(<Giá trị > :n);
tự.
 Trong đó: n là số ô ký tự.
Ví dụ:
Nhap so nguyen n : 8
>> Cac so tu 1 den 8 la :

1

2

3

4

5

6

7

8

 Bài tập 2:

Hướng dẫn:

Viết chương trình nhập 1 số nguyên dương n (n>5). Cho biết từ –
1 đến n có bao nhiêu số chia hết cho 3.

Hàm Inc(a) Tăng a lên thêm 1 đơn vị.

Ví dụ:
Nhap n = 10
>> Tu 1 den 10 co 3 so chia het cho 3.
 Bài tập 3:


Hướng dẫn:

Viết chương trình nhập 1 số nguyên dương a (a>5). Hãy xuất ra –
màn hình các số chẵn từ 1 đến a.
Ví dụ:
Nhap a = 7
>> Cac so chan la: 2 4 6
 Bài tập 4:

Hướng dẫn:

Viết chương trình nhập vào 1 số nguyên dương b. Hãy in ra –
màn hình bảng cửu chương b.
Ví dụ:
Nhap b = 3
3x1=3
3x2=6
3x3=9

3 x 10 = 30
 Bài tập 5:
GVBS: Nguyễn Thị Cúc

Hướng dẫn:
6


Trường THCS Đồng Khởi – Q. Tân Phú

Giáo trình Pascal


Nhập số nguyên dương t. In ra các số chia cho 4 dư 1 trong –
khoảng [1,t].
 Bài tập 6:

Hướng dẫn:

Nhập số nguyên dương t. In ra các số vừa chia hết cho 3 vừa
chia hết cho 7 trong khoảng [1,t].
 Bài tập 7:


Hướng dẫn:

Nhập số nguyên dương t. In ra các số không chia hết cho 4
hoặc không chia hết cho 7 trong khoảng [1,t].
 Bài tập 8:


Hướng dẫn:

Nhập số nguyên dương t. Liệt kê các ước số của t.
 Bài tập 9:


Hướng dẫn:

Nhập số nguyên dương t. Liệt kê các ước số chẵn của t.
 Bài tập 10:



Hướng dẫn:

Nhập số nguyên dương t. T có bao nhiêu ước số lẻ.
 Bài tập 11:


Hướng dẫn:

Nhập số nguyên dương t. Tính tổng các ước số chia hết cho 3 –
của t.
 Bài tập 12:

Hướng dẫn:

Nhập số nguyên dương t. Tính tích các ước số chia hết cho 7 –
của t.
 Bài tập 13:

Hướng dẫn:

Nhập số nguyên dương k. Kiểm tra xem k có phải là số hoàn –
hảo.
 Bài tập 14:

Số hoàn hảo là số có tổng các ước số nhỏ
hơn nó bằng chính nó.

Hướng dẫn:


Nhập số nguyên dương t. Kiểm tra xem k có phải là số nguyên –
tố.

Số nguyên tố là số chỉ có 2 ước số.

Bài thực hành 6: Sử dụng lệnh lặp WHILE…DO…
 Bài tập 1:

Hướng dẫn:

Viết chương trình nhập 1 số nguyên n. Cho biết n có bao nhiêu –
chữ số.


Ví dụ:

Sử dụng hàm Inc(dem) Tăng biến đếm lên
1 đơn vị.
Tránh vòng lặp chạy mãi mãi.

Nhap n: 12345
>> 12345 co 5 chu so.
 Bài tập 2:

Hướng dẫn:

Viết chương trình nhập 2 số nguyên n, m (nthêm 2 đơn vị, hỏi tăng bao nhiêu lần thì n sẽ gần bằng hoặc
bằng m.


Giảm biến đếm 1 đơn vị khi in ra màn
hình.

Ví dụ:
Nhap n : 3
Nhap m : 9
>> Tang 3 len 3 lan.
 Bài tập 3:

Hướng dẫn:

Viết chương trình nhập n (điều kiện: 5các số chính phương ≤ n.

Kiểm tra n có nhập đúng không.

Dau_hieu:=1;

7

ĐT: 0938.038.735

i:=1;



Q. Tân Phú

Năm: 2017
While (dau_hieu<=n) do

Begin
Write(i*i,’ ‘);
Inc(i);
Dau_hieu:=i*i;
End;


 Bài tập 4:

Hướng dẫn:

Viết chương trình in ra màn hình các số chia cho 7 dư 2 và ≤ n.
N là số nguyên nhập từ bàn phím.



Bài thực hành 7: Xử lý dãy số trong chương trình
 Bài tập 1:

Hướng dẫn:

Viết chương trình nhập vào dãy số nguyên có n phần tử. In ra –
màn hình dãy số nguyên đó trên cùng 1 dòng.

Khai báo dãy số bằng 1 trong 2 cách:
o

Cách 1:

Const GioiHan=50;

Type

DaySo = Array [1..GioiHan] of Integer;

Var

A : DaySo;
o

Cách 2:

Const GioiHan=50;
Var
 Bài tập 2:

A : Array [1..GioiHan] of Integer;

Hướng dẫn:

Viết chương trình nhập vào dãy số nguyên có n phần tử. In ra –
màn hình:
a) Dãy số nguyên đó.
b) Các phần tử có giá trị chẵn.
c) Các phần tử ở vị trí lẻ.
 Bài tập 3:

Hướng dẫn:

Viết chương trình nhập vào dãy số nguyên có n phần tử. Tìm –
giá trị phần tử lớn nhất và giá trị phần tử nhỏ nhất.


Đặt min, max mang giá trị phần tử đầu
tiên.



Nếu có phần tử > max thì max mang giá trị
của phần tử đó.



Nếu có phần tử < min thì min mang giá trị
của phần tử đó.

 Bài tập 4:

Hướng dẫn:

Viết chương trình nhập 2 dãy số nguyên A, B có n phần tử. Hãy –
tạo dãy C có các phần tử là tổng tương ứng của 2 dãy A, B.
Ví dụ:

Day A: 1 2 3 4
Day B: 2 3 4 5
Day C: 3 5 7 9
 Bài tập 5:

Hướng dẫn:

Viết chương trình nhập dãy số thực A có n phần tử và dãy số –

thực B có m phần tử.
Hãy tạo dãy C có n+m phần tử của A, B (A trước B sau).
GVBS: Nguyễn Thị Cúc

8


Trường THCS Đồng Khởi – Q. Tân Phú

Giáo trình Pascal

Ví dụ:
Day A co 3 phan tu: 1 3 5
Day B co 4 phan tu: 2 4 6 8
>> Day C co 7 phan tu: 1 3 5 2 4 6 8
 Bài tập 6:

Hướng dẫn:

Viết chương trình nhập vào một dãy n số thực. Sắp xếp dãy số – Tìm phần tử lớn chuyển về đầu dãy. Ví dụ
sắp xếp dãy số nguyên:
thực đó theo giá trị giảm dần. In lại dãy số đã được sắp xếp với
giá trị mỗi phần tử chỉ thể hiện 2 số lẻ.
(2, 6, -5, 8, -2) (8, 6, -5, 2, -2)
(8, 6, -5, 2, -2) (8, 6, 2, -5, -2)
(8, 6, 2, -2, -5)

 Bài tập 7:

Sắp xếp dãy số thực tương tự.


Hướng dẫn:

Viết chương trình nhập vào dãy n phần tử, với giá trị mỗi phần –
tử là một ký tự. In lại dãy ký tự đã được sắp xếp tăng dần theo –
giá trị mã ASCII tương ứng.

Kiểu ký tự: Char.
Sử dụng hàm Ord(‘Ký tự’) Giá trị mã ASCII
của ký tự.

Ví dụ:
Day co 5 ky tu: fa5bp
>> Day da duoc sap xep theo ma ASCII: 5abfp
 Bài tập 8:

Hướng dẫn:

Viết chương trình nhập vào xâu ký tự S. In ra màn hình mã – Khai báo xâu ký tự:
ASCII tương ứng với từng ký tự. Tìm ký tự có mã ASCII nhỏ
Var
Tên_biến : String[độ dài của xâu];
nhất.
– Hàm Length(st): cho độ dài thực của xâu ký
tự st.
2. Đề luyện tập cấp độ 2:
2.1. Bài thực hành 8: Xử lý các loại số
Bài tập 1.

Viết chương trình nhập vào số nguyên N. Kiểm tra N có phải là số chính phương.

Hướng dẫn:
 Sử dụng hàm Frac, Sqrt.

Bài tập 2.

Viết chương trình nhập vào số nguyên N. Kiểm tra N có phải là số hoàn hảo.

Bài tập 3.

Viết chương trình nhập vào số nguyên N. Kiểm tra N có phải là số nguyên tố.

Bài tập 4.

Viết chương trình nhập vào số nguyên N. Kiểm tra N có phải là số đơn điệu.

Bài tập 5.

Viết chương trình nhập 1 số nguyên K. In ra màn hình các số chính phương ≤ K.

Bài tập 6.

Viết chương trình nhập 1 số nguyên K. In ra màn hình các số hoàn hảo ≤ K.

Bài tập 7.

Viết chương trình nhập 1 số nguyên K. In ra màn hình các số nguyên tố ≤ K.

Bài tập 8.

Viết chương trình in ra màn hình các số đơn điệu có 4 ký số.


Bài tập 9.

Viết chương trình nhập 1 số nguyên K. In ra màn hình các cặp số hữu nghị ≤ K
Ví dụ:
Nhap K : 1000
>> Cac cap so huu nghi la: (48, 75) (75, 48) (140, 195) (195, 140)
Hướng dẫn:
Hai số tự nhiên A, B được coi là hữu nghị nếu như số này bằng tổng các ước số thực sự của
số kia (tổng các ước không tính ước số 1 và chính nó) và ngược lại.

Bài tập 10. Tổng lập phương: Tìm tất cả các số có 3 chữ số sao cho tổng lập phương của các chữ số bằng
chính số đó.
Ví dụ: 153 = 13 + 53 + 33
9

ĐT: 0938.038.735




Q. Tân Phú

Năm: 2017
Dữ liệu:
File input

File Output
153
370

371
407

Bài tập 11. Có bao nhiêu số có 2 chữ số có tính chất sau: Mỗi số trừ đi số viết theo thứ tự ngược lại là 1 số
chính phương.
Ví dụ:
10  10 – 1 = 9  9 là SCP.
Bài tập 12. Nhập vào 1 số n (n>5). Hãy phân tích n thành tổng các bộ 3 số nguyên tố.
Dữ liệu:
File Input

File Output

16

2 3 11
277

Bài tập 13. Viết chương trình liệt kê tất cả các số tự nhiên có 3 chữ số mà tổng các chữ số của nó bằng số tự
nhiên cho trước.
Dữ liệu:
File Input

File Output

4

103 112 121 130 202 211 220 301 310

Bài tập 14. Có mấy cách phân tích số tự nhiên n = i3 + j3 (i ≤ j). Nhập n, xuất các cách.

Dữ liệu:
File Input
793

File Output
1
49

Bài tập 15. Số gần nhất: Cho số nguyên dương N và chữ số c, tìm số nguyên dương nhỏ nhất k thỏa k > N và
trong biểu diễn của k trong hệ thập phân có chữ số c.
Dữ liệu:
File Input
11 7

File Output
17

Bài tập 16.
2.2. Bài thực hành 9: Xử lý xâu ký tự
Bài tập 1.

Cho xâu ký tự S gồm chữ và số. Hãy loại bỏ các chữ để chuỗi chỉ còn các số.
Ví dụ: S=’1acvb58d96’ S=’15896’
Hướng dẫn:
 Hàm xóa ký tự: Delete(st, pos, num)
VD:

St = ‘FILENAME’
Delete(St, 5, 4) st = ‘FILE’


 Hàm Length(st) Độ dài xâu ký tự st.
Bài tập 2.

Viết chương trình nhập vào một số thực có phần nguyên và phần thập phân. Hoán đổi vị trí các ký
số của phần nguyên và vị trí các ký số của phần thập phân để số thực đó đạt giá trị lớn nhất. Lưu ý
không hoán đổi các ký số của phần nguyên và phần thập phân với nhau.
Ví dụ: K = 152.061  K = 521.610

GVBS: Nguyễn Thị Cúc

10


Trường THCS Đồng Khởi – Q. Tân Phú

Giáo trình Pascal

Hướng dẫn:
 Hàm Pos(st1, st2) Vị trí tìm thấy đầu tiên của st1 trong st2.
VD: Pos(‘Lam’,’Le Thanh Lam’) = 10.
 Hàm Ord(‘Ký tự’) Giá trị ASCII của một ký tự.
Bài tập 3.

Viết chương trình đọc vào 1 số nguyên N. Hãy đổi N từ hệ thập phân (cơ số 10) sang hệ nhị phân
(cơ số 2).
Dữ liệu:
File Input
5

File Output

101

Hướng dẫn:
 Lệnh Mod, Div.
 Hàm chèn xâu ký tự: Insert(St1, St, Pos);
VD:

St1 = ‘Van’;
St = ‘Le Thanh’;
Insert(St1, St, 4) St = ‘Le Van Thanh’

Bài tập 4.

Viết chương trình đọc vào 2 số nguyên N và k (k ≤ 34). Đổi N từ hệ thập phân sang hệ k.

File Input
35 12
Bài tập 5.

File Output
2B
Cho trước 1 xâu ký tự, trong đó có ít nhất 4 chữ số. Hãy loại bỏ 1 số ký tự khỏi xâu sao cho 4 ký tự
cuối cùng còn lai theo đúng thứ tự tạo nên 1 số lớn nhất.
Ví dụ: S = ‘24d5n4r05f704n652z393’ 7693
Hướng dẫn:
 Thủ tục đổi ký tự sang dạng số: Val(St, Value, Code);
VD:

St = ‘251’  Value=251, Code=0;
St = ‘21a’  Code ≠ 0;


 Thủ tục đổi dạng số sang ký tự: Str(Value, St);
VD:
Bài tập 6.

Value = 12  St = ‘12’;

Nhập số thực x. Tìm phần nguyên có mấy chữ số, in ra màn hình chữ số lớn nhất.
Dữ liệu:
File Input

File Output

12345.78

Phan nguyen co 5 chu so
Chu so lon nhat la 5

Bài tập 7.

Viết chương trình nhập vào 1 số nguyên dương n (0 < n ≤ 32000). Hãy cho biết số nguyên này là
bội của tổng tất cả các chữ số của nó hay không? Nếu không thì hãy tìm một số nguyên dương m
nhỏ hơn gần n nhất để cho m thỏa mãn tính chất trên?
Ví dụ:

25 không là bội của 2+5=7  24 là bội của 2+4=6

Dữ liệu:
File Input
25

Bài tập 8.

File Output
24

Viết chương trình nhân 2 số nguyên có độ dài lớn nhất đến 300 chữ số.
Ví dụ:

123 x 789 = 97047
123456 x 123456 = 15241383936
123456789 x 123456789 = 15241278750190521
123456

11

ĐT: 0938.038.735




Q. Tân Phú

Năm: 2017
123456
740736
6172800
49382400
370368000
2469120000
12345600000

15241383936
Hướng dẫn:
 Sử dụng chuỗi và hàm Ord, Val, …
Dữ liệu:
File Input

File Output

123456

15241383936

123456
Bài tập 9.

Viết chương trình đọc vào chuỗi S và 2 số nguyên t1, t2 (t1 ≤ 34, t2 ≤ 34). Hãy thực hiện chuyển
đổi chuỗi S từ hệ cơ số t1 sang hệ cơ số t2.
Dữ liệu:
File Input
2B

File Output
1E

12 21
2.3. Bài thực hành 10: Mảng 1 chiều
Bài tập 1.

Nhập vào một mảng có n số nguyên dương khác nhau. Hãy in ra tất cả các phần tử trong mảng có
giá trị nhỏ hơn giá trị lớn nhất và lớn hơn giá trị nhỏ nhất của mảng.

Dữ liệu:
 File.inp gồm 2 dòng:


Dòng 1: Số n là số phần tử của mảng.



Dòng 2: Giá trị các phần tử của mảng, mỗi phần tử cách nhau 1 khoảng trắng.

 File.out: Các phần tử tìm được, mỗi phần tử nằm trên 1 dòng và cách nhau một khoảng trắng.
Bài tập 2.

Nhập dãy số thực a và số k. Xét xem trong dãy có k số dương đứng cạnh nhau hay không?
Dữ liệu:
File Input
12 3

File Output
TRUE

-1 2 3 4 -2 -4 4 5 -3 4 5 6
Bài tập 3.

Nhập dãy số thực a. Tìm các số của dãy bằng tổng 2 số khác trong dãy.
Dữ liệu:
File Input
6

File Output

4 -4 0

4 9 -4 8 -13 0
Bài tập 4.

Nhập một dãy A có N số tự nhiên (N<40) và 1 số K. Hãy xuất ra các phần tử có số lần xuất hiện
trong dãy A từ K lần trở lên (Mỗi số chỉ xuất 1 lần).
Dữ liệu:
File Input
62

GVBS: Nguyễn Thị Cúc

File Output
26
12


Trường THCS Đồng Khởi – Q. Tân Phú

Giáo trình Pascal

122366
Bài tập 5.

Một dãy tuyến tính là 1 bộ có thứ tự (s1, s2, s3) thỏa mãn s2-s1 = s3-s2. Cho trước S (3 ≤ S ≤ 30)
số nguyên tang thuộc đoạn [1, 100], đếm số các dãy tuyến tính.
Hướng dẫn: (1, 2, 3), (3, 5, 7), (14, 21, 28) là các dãy tuyến tính.
Dữ liệu:
File Input


File Output

7

5

1234689
Giải thích: File Input trên có 5 dãy tuyến tính tìm được là:
123
234
246
369
468
Bài tập 6.

Cho dãy có 5 số nguyên. Kiểm tra xem 5 số đó nằm trong những trường hợp nào sau đây và trả về
kết quả tương ứng:
+ Có 5 số bằng nhau In ra số 1,
+ Có 4 số bằng nhau In ra số 2,
+ Có 3 số bằng nhau và 2 số còn lại cũng bằng nhau In ra số 3,
+ Có 3 số bằng nhau In ra số 4,
+ Có 2 cặp số bằng nhau In ra số 5,
+ Có 2 số bằng nhau In ra số 6,
+ Các số khác nhau In ra số 7.
Hướng dẫn: Tạo một mảng phụ ghi nhận số lần xuất hiện của các phần tử.
 Ví dụ:

Bài tập 7.




A(5) = {2, 5, 5, 2, 2} B(5) = {3, 2, 2, 3, 3}



A(5) = {-8, 3, 3, -8, 9} B(5) = {2, 2, 2, 2, 1}



….



Nếu Tổng các phần tử của dãy B là 25 In số 1, 17 In số 2, 13 In số 3, 11
In số 4, 9 In số 5, 7 In số 6, 5 In số 7.

Hè đến rồi, Nam được bố dẫn đi chơi công viên. Trong công viên có nhiều gian hàng trò chơi,
trong đó Nam thích nhất là gian trò chơi chọn số. Người ta viết sẵn một số dãy số nguyên dương
không được sắp xếp (dãy này có N phần tử, các phần tử có giá trị khác nhau đôi một, N ≤ 10000,
các số của dãy có giá trị từ 1 đến 30000), sau đó họ đưa ra 1 số M (M ≤ N) và yêu cầu

2.4.
3. Đề luyện tập cấp độ 3 (nâng cao):

13

ĐT: 0938.038.735





Q. Tân Phú

Năm: 2017

Phụ lục 01/NTC:
Lý thuyết xâu kí tự:

XÂU KÝ TỰ (STRING) TRONG PASCAL
Xâu là gì? Để xử lý các chuỗi văn bản, Pascal đưa ra một kiểu dữ liệu mới gọi là xâu ký tự và được định nghĩa
bằng từ khóa STRING. Xâu ký tự là dữ liệu bao gồm một dãy các ký tự trong bảng mã ASSCII.
Cách khai báo:
Var

Tên_Biến : STRING[độ dài của xâu];

 Ví dụ:
Const Hs_S = ‘0123456789ABCDEFGHIJ’;
Var

S : String[50];
Chuoi_S : Array [1..50] of Char;

Xâu ký tự trong bộ nhớ nó chiếm số byte bằng số ký tự cực đại được khai báo cộng với byte đầu tiên chứa số ký
tự hiện có của xâu. Độ dài tối đa của xâu ký tự là 255.
Cách nhập/xuất: Cách đọc hay viết kiểu STRING cũng tương tự như các kiểu dữ liệu khác, ta sử dụng các thủ tục
READ, hoặc WRITE.
 Ví dụ:
Readln(st);

Writeln(st);
Truy cập từng phần tử của xâu ký tự: tương tự mảng 1 chiều: thông qua tên biến kiểu STRING và chỉ số của nó
 Ví dụ:
St := 'Le Thanh Lam';
Write(st[4]);
Kết quả: cho ra chữ T.
Các thao tác trên xâu ký tự:
1) Phép cộng xâu:
 Ví dụ:
St1:=’Le’;
St2:=’Thanh’;
St:=st1 + st2;
KQ: ‘Le Thanh’
2) Phép so sánh:
 Hai xâu ký tự có thể so sánh với nhau bằng các phép so sánh =, >, <…
 Nguyên tắc so sánh thực hiện như sau, chúng sẽ đem từng ký tự tương ứng với nhau để so sánh, xâu nào
có ký tự có số thứ tự trong bảng mã ASCII lớn hơn thì xâu đó lớn hơn.
 Hai xâu ký tự được gọi là bằng nhau khi chúng hoàn toàn giống nhau (có độ dài như nhau).
 Ví dụ: ‘FILENAME’ = ’FILENAME ‘
3) Các thủ tục và hàm chuẩn xử lý xâu ký tự:
a. Hàm length(st): cho độ dài thực của xâu ký tự
 Ví dụ:
St:=’le thanh’;
LENGTH(St)  8.
b. Thủ tục DELETE(st, pos, num): xóa num ký tự trong xâu st kể từ vị trí pos
 Ví dụ:
St= ‘FILENAME’
Delete(St,5,4)  St = ‘FILE’
GVBS: Nguyễn Thị Cúc


14


Trường THCS Đồng Khởi – Q. Tân Phú

Giáo trình Pascal

c. Thủ tục INSERT(obj, st, pos): Thủ tục cho kết quả bằng cách chèn xâu ký tự có tên là Obj vào xâu
st tại vị trí pos, những ký tự đứng sau pos sẽ được dời về phía sau của xâu ký tự obj.
 Ví dụ:
Obj:= ‘Thanh ‘
St:=’Le Lam’;
INSERT(obj,st,4)  St=’Le Thanh Lam’;
d. Thủ tục STR(value, st): Thủ tục này thực hiện việc chuyển đối giá trị kiểu số (value) sang dạng xâu
ký tự và gán cho biến st.
 Ví dụ:
n là một só nguyên có giá trị: n:=150;
STR(n:5,st)  st = ’ 150’;
e. Thủ tục VAL(st, value,code): đổi một xâu ký tự st sang dạng số và gán cho biến value, nếu biến đối
thành công thì code sẽ nhận giá trị bằng 0, ngược lại thì cho giá trị khác không.
 Ví dụ:
VAL(‘123’,value,code)
 Code = 0 , Value = 123
f.

Hàm COPY(st, pos, num): sao chép trong xâu st, num ký tự tại vị trí pos,
 Ví dụ:
St=’Le Thanh Lam’
COPY(st,4,5)  ‘Thanh’;


g. Hàm CONCAT(s1,s2,…,sn): hàm cho ra 1 xâu mới bằng cách nối đuôi các xâu s1,s2,…,sn lại với
nhau.
 Ví dụ:
CONCAT(‘Le ’,’Thanh ‘, ‘Lam’)  ‘Le Thanh Lam’;
h. Hàm POS(st1,st2): hàm cho ta vị trí tìm thấy đầu tiên của xâu s1 trong xâu s2.
 Ví dụ:
POS(‘Lam’,‘Le Thanh Lam’)  10;
i.

Hàm Ord(Ch): Hàm cho ta biết mã ASCII của một ký tự.
 Ví dụ:
Ord(‘A’) 65
Ord(‘3’) 51

15

ĐT: 0938.038.735




Q. Tân Phú

GVBS: Nguyễn Thị Cúc

Năm: 2017

16