CHUYÊN ĐỀ HỌC SINH GIỎI TIN 8
CÂU LỆNH IF … THEN … ELSE
Bài 1 :Nhập 3 số a , b , c bất kì . Hãy kiểm tra xem ba số đó có thể là độ dài ba cạnh của
một tam giác hay không ? Thông báo lên màn hình ‘ Thỏa mãn ‘, ‘ Không thỏa mãn trong
từng trường hợp tương ứng .
1) Var
a , b , c : Real ;
BEGIN
Writeln (' Nhap do dai 3 canh cua tam giac : ') ;
Write (' a = ') ; Readln ( a ) ;
Write (' b = ') ; Readln ( b ) ;
Write (' c = ') ; Readln ( c ) ;
If ( a + b > c ) and ( b + c > a ) and ( c + a > b ) and ( a > 0 ) and ( b > 0 ) and ( c > 0 )
Then
Writeln (' Thoa man : Day la 3 canh cua mot tam giac ')
Else
Writeln (' Khong thoa man ! ') ;
Readln ;
END .
Bài 2 :Nhập N số bất kì .
Đếm các số lớn hơn 10 và nhỏ hơn 20 và tính tổng của chúng . Sau đó , đưa ra màn hình :
So cac so >10 và <20 la : ( gia tri )
Tong cua chung la : ( gia tri )
2) Var
Tong , So : Real ; I , N , Dem : Integer ;
BEGIN
Write (' Bao nhieu so : ') ; Readln ( N ) ;
Tong := 0 ; Dem := 0 ;
For I := 1 To N Do
Begin
If Thang < 3 Then
Begin
Thang := Thang + 12 ; Nam := Nam - 1 ;
End ;
Thu := Abs ( Ngay + Thang * 2 + ( Thang + 1 ) * 3div 5 + Nam + Nam div 4 ) mod 7 ;
Case Thu Of
0 : Writeln (' Chu Nhat ') ; 1 : Writeln (' Thu Hai ') ; 2 : Writeln (' Thu Ba
') ; 3 : Writeln (' Thu Tu ') ;
4 : Writeln (' Thu Nam ') ; 5 : Writeln (' Thu Sau ') ; 6 : Writeln (' Thu Bay
') ;
End ;
Readln ;
END .
Bài 5 :Viết chương trình :
Nhâp số báo danh
Nhập điểm văn , toán , ngoại ngữ
In ra màn hình dưới dạng :
_ Phiếu điểm :
_ Số báo danh :
_ Điểm văn :
_ Điểm toán :
_ Điểm ngoại ngữ :
_ Tổng số điểm :
Bạn đã trúng tuyển ( hoặc Bạn đã không trúng tuyển ) với điều kiện Tổng số điểm >= 15
hay ngược lại .
5) Uses Crt ;
Var SBD : Integer;
Van , Toan , Ngoaingu , Tongdiem : Real ;
BEGIN
Clrscr ;
If Pt = '*’ Then T := a * b ; If Pt = '/’ Then T := a / b ;
Write ( a , pt , b , ' = ', T ) ;
Readln ;
END .
Bài 7 :Giải và biện luận phương trình : x
2
+ ( m – 2 ) x + 1 = 0 ở đây m là tham số thực
tuỳ ý .
7) Uses Crt;
Var m , Delta : Real ;
BEGIN
Clrscr;
Write (' m = ') ; Readln( m ) ;
Delta := sqr( m-2 ) - 4 ;
If Delta < 0 Then Writeln(' Phuong trinh vo nghiem ')
Else
Begin
If Delta = 0 Then Writeln(' Phuong trinh co nghiem kep X= ', -( m - 2 ) / 2 )
Else
Begin
Writeln(' Phuong trinh co 2 nghiem : ') ;
Writeln (' X1 = ', ( -(m-2) + sqrt(delta) ) / 2 ) ; Writeln (' X2 = ', ( -(m-2) -
sqrt(Delta) ) / 2 ) ;
End ;
End ;
Readln ;
END .
Bài 8 :Viết chương trình nhập hai số tự nhiên N, M và thông báo ‘Dung‘ nếu N , M cùng
tính chẵn lẽ , trong trường hợp ngược lại thì thông báo ‘Sai‘.
8) Uses Crt ;
Sử dụng lệnh While
Bài 5 :Lập trình tính tổng :
A = 1 + 1/2 + 1/3 + … + 1/n
ở đây n là số tự nhiên được nhập vào từ bàn phím .
Bài 6 :Tính hàm lũy thừa a
n
, ở đây a thực và n tự nhiên được nhập vào từ bàn phím
Bài 7 :Viết chương trình nhập một dãy số tối đa 100 số , sau đó in ra màn hình các số
khác nhau .
Bài 8 :Viết chương trình nhập một dãy số tối đa 100 số , sau đó sắp xếp lại theo thứ tự
tăng dần .
Sử dụng lệnh Repeat
Bài 9 :Cho một dãy số được nhập từ bàn phím . Hãy viết chương trình nhập một số a rồi
liệt kê tất cả các phần tử trong dãy lớn hơn a.
Bài 10 :Viết chương trình nhập một dãy số tối đa 50 số rồi in ra màn hình các số trùng
nhau của dãy .
Bài 11 :Bạn có 1000 đ đem gửi ngân hàng với lãi suất 8%/tháng . Sau mỗi tháng tiền lãi
được nhập vào để tính lãi suất tháng sau . Bạn muốn để dành cho đến khi số tiền tăng lên
là x . Vậy phải để trong bao lâu
Bài 12 :Viết chương trình tìm ƯSCLN của N số được nhập từ bàn phím .
1)Var i : Byte ; (* chỉ số chạy *)
p : word ; (* tích số *)
BEGIN
p := 1; (* cho giá trị ban đầu của tích *)
For i := 1 to 10 Do (* cho i chạy từ 1 tới 10 *)
p := p * i ; (* lần lượt nhân i với p *)
Write (' 1 * 2 * * 10 = ', p ) ;
Readln ;
END .
S := S + 1 / sqr(i) ;
Writeln (' S = ', S:0:2) ;
Readln ;
END .
b) Var n , i , j , p : Word ;
S : Real ;
BEGIN
Write (' Nhap n : ') ; Readln(n) ;
p := 1 ;
s := 0 ;
For i :=1 To n Do
Begin
p := p * i ; (* tính i *)
S := S + 1 / p ;
End ;
Writeln (' S = ', S:0:2) ;
Readln ;
END .
4)Var i , n : Byte ;
p : Real ;
Begin
Write(' Nhap n : ') ; Readln (n) ;
p := 1 ;
For i := 1 To n Do p := p * ( 1 + 1/sqr(i) ) ;
Writeln(' p = ', p:10:5 ) ;
Readln ;
End .
5) Uses Crt ;
Var i , n : Integer ;
tong: Real ;
END .
7) Uses Crt;
Var A : Array [1 100] Of Integer;
i , j , n : Integer ;
BEGIN
Clrscr ;
Write(' Do dai cua day so N = ') ; Readln (N) ;
For I := 1 To N Do
Begin
Write ('A[', i , ']= ') ; Readln ( A[i] ) ;
End ;
Writeln (' Cac so khac nhau la : ') ; Writeln ( A[1] ) ;
i := 2 ;
While i <= N Do
Begin
j := 1 ;
While ( j < i ) and ( A[j] <> A[i] ) Do inc(j) ;
If j = i Then Writeln( A[i] ) ;
i :=i + 1 ;
End ;
Readln ;
END .
8) Uses Crt;
Var A : Array [1 100] Of Integer ;
i , j , n , T : Integer ;
BEGIN
Clrscr ;
Write(' Do dai cua day so N = ') ; Readln (N) ;
BEGIN
Clrscr ;
Write ('Nhap do dai cua day so : ') ; Readln(n) ;
Writeln (' Nhap cac phan tu cua day : ') ;
For i := 1 To n Do
Begin
Write (' b[', i ,'] = ') ; Readln( b[i] ) ;
End ;
Write (' Nhap so thuc a : ') ; Readln(a) ;
Writeln (' Cac phan tu lon hon a cua day : ') ;
i:=1;
Repeat
If ( b[i] > a ) Then Writeln (' b[', i ,'] = ', b[i]:8:2 ) ;
inc(i) ;
Until i > n ;
Readln ;
END .
10) Uses crt ;
Var a , b : Array[1 50] Of Integer ;
n , m , i , j , k : Byte ;
trung : Boolean ;
BEGIN
Clrscr ;
Write (' Nhap do dai cua day so nguyen : ') ; Readln(n) ;
Writeln (' Nhap cac phan tu cua day : ') ;
For i := 1 To N do
Begin
Write (' a[', i ,'] = ') ; Readln( a[i] ) ;
End ;
Until j > m ;
inc ( i ) ;
Until i > m ;
End ;
If m > 0 Then
For k := 1 To m Do Write ( b[k] : 4 ) ;
Readln ;
END .
11) uses crt ;
var
thang : Byte ;
tien , lai , x : Real ;
BEGIN
clrscr ;
writeln (' Chuong trinh tinh thoi gian rut tien lai ') ;
write (' So tien lai muon rut ra : ') ; readln(x) ;
tien := 1000 ;
thang :=1 ;
repeat
lai := tien * 8 / 100 ;
tien := tien + lai ;
thang := thang + 1 ;
until tien >= x ;
writeln (' Ban phai gui tien trong ', thang div 12 , ' nam ',
thang mod 12 ,' thang .') ;
writeln (' Khi do so tien ban rut ra duoc la ', tien:12:2 ,' dong .') ;
readln ;
END .
12) Uses crt ;
_ Viết thủ tục tính diện tích của tam giác .
_ Viết thủ tục tính các trung tuyến của tam giác .
_ Viết hoàn thiện chương trình chính .
Bài 5 :Giải phương trình x + y + z = 12 trong phạm vi số nguyên không âm với điều kiện
x < 4 .
Bài 6 :Cho trước các số N , a , b , c tự nhiên . Giải phương trình sau trong phạm vi số
nguyên không âm x + y + z = N với điều kiện x < a , y < b , z < c .
Bài 7 :Viết thủ tục Compare ( S1 , S2 : String ; Var Kq : String ) thực hiện công việc
sau : so sánh hai xâu S1 và S2 , tìm tất cả các kí tự có trong cả hai xâu trên . Xâu Kq sẽ
chứa tất cả các kí tự đó , mỗi kí tự chỉ được nhớ một lần .
Bài 8 :Viết hàm tính D (St1 , St2) , với U, V là hai xâu kí tự bất kì , là tổng số các kí tự
không giống nhau trong hai xâu trên , mỗi loại kí tự chỉ được nhớ một lần . Ví dụ D
(‘aabba’ , ‘bcdd’) = 2 vì chỉ có hai kí tự a và d là không giống nhau trong các xâu trên .
Bài 9 :Viết chương trình hoàn chỉnh thực hiện các công việc của thực đơn sau :
1. Nhập dữ liệu ( nhập số tự nhiên n ) .
2. Phân tích ra thừa số nguyên tố ( phân tích n thành tích các số nguyên tố )
3. Thoát khỏi chương trình .
CẤU TRÚC DỮ LIỆU KIỂU MẢNG
Bài 1 :Giải hệ phương trình tuyến tính hai ẩn dùng ma trận :
a
11
x + a
12
y = c
1
a
21
x + a
22
y = c
Bài 6 :Dãy số a
n
được định nghĩa như sau :
a
1
= 1
a
2
= 2
. . .
a
n
= 2a
n-1
+ a
n-2
( n > 2 )
Hãy lập chương trình tính và gán giá trị của dãy vào biến mảng .
Bài 7 :Nhập số tự nhiên N và viết chương trình tạo mảng bao gồm N số nguyên tố đầu
tiên .
Bài 8 :Viết chương trình nhập một bảng số 3 x 3 với điều kiện các số được nhập sẽ hiện
trên màn hình đúng tại vị trí của mình trên bảng số .
Bài 9 :a. Viết chương trình nhập dữ liệu từ dãy đối xứng vào mảng một chiều .
b. Viết chương trình nhập dữ liệu là ma trận đối xứng vào mảng hai chiều .
X¢U KÝ T
Bài 1 :Lập trình đếm số lần xuất hiện ở mỗi loại kí tự thuộc bảng chữ cái tiếng Anh trong
một xâu kí tự Str .
Bài 2 :Cho số tự nhiên n và xâu có độ dài n . Hãy biến đổi xâu đã cho bằng cách thay đổi
trong đó :
a. Tất cả các dấu ! bằng dấu chấm .
giữa xâu , ví dụ ‘ABBA’ hoặc ‘ABCBA’ ) .
Bài 6 :Cho một xâu kí tự S . Hãy viết chương trình tính xem trong S có bao nhiêu loại kí
tự khác nhau ( phân biệt chữ in hoa với chữ in thường ) . Ví dụ với S là “Pascal” ta có
đáp số là 5 .
Bài 7 :Viết chương trình nhập một xâu kí tự và biến đổi chúng thành toàn chữ in hoa .
Bài 8 :Họ tên một học sinh được nhập từ bàn phím . Bạn hãy viết chương trình điều
chỉnh lại các kí tự đầu của các từ đơn trong tên của học sinh ấy trở thành chữ in hoa .
Bài 9 :Viết chương trình nhập xãu kí tự từ bàn phím , sau đó gọt xâu lại bằng cách cách
xoá đi các kí tự trống ở hai đầu của xâu . Ví dụ nếu nhập xâu “ Ha noi “ , thì kết quả sẽ là
“Ha noi” .
D÷ LIƯU KIĨU TƯP
Bài 1 :Bạn hãy viết hàm Card(A) đếm số phần tử của tập hợp A cho trước có kiểu Set Of
0 99 .
Bài 2 :Bạn hãy lập chương trình tạo một tập hợp các số nguyên chẵn kiểu Byte và loại
khỏi nó các số chia hết cho 3 . Kết quả thể hiện trên màn hình .
Bài 3 :Xét chương trình sau :
Program B4 ;
Var
Thoat : Set Of Char = [‘e’ , ’E’] ;
BEGIN
Write (‘ Hay go E de ket thuc : ‘) ;
Repeat
Ch := Readkey ;
Until Ch in thoat ;
END .
Hãy tìm và sửa lỗi trong chương trình đó .
Bài 4 :Bạn hãy lập chương trình hiển thị một menu dạng sau trên màn hình
1. Xem
2. Sua chua
3. Loai bo
ghi gồm các trường :
• Họtên : một xâu 35 kí tự .
• Tuổi : một số nguyên hai chữ số .
• Khối : một số nguyên hai chữ số .
• Lớp : một chữ cái viết hoa
Bài 4 :Một file bản ghi chứa một danh sách học sinh PTTH , thông tin về mỗi học sinh
ngoài các trường Họđệm , Tên , Tuổi , Lớp giống như các bài trên còn có thêm trường
Điểm chứa điểm trung bình của học sinh trong năm học . Hãy lập chương trình :
a. Hiển thị lên màn hình danh sách những học sinh giỏi nhất của trường là những bạn có
điểm trung bình từ 8.0 trở lên và cao nhất trong khối .
b. Lập danh sách học sinh trong năm học mới , biết một học sinh có điểm trung bình từ
5.0 trở lên thì được lên lớp . Chú ý : lớp 10A lên lớp 11A , lớp 11A lên 12A Kết quả
chứa trong file .
Bài 5 :Cho file bản ghi f chứa dữ liệu về kho sách , dữ liệu về mỗi cuốn sách được chứa
trong một bản ghi gồm 3 trường mang thông tin về :
• Họ tên tác giả : một xâu 26 kí tự .
• Tên sách : một xâu 40 kí tự .
• Năm xuất bản : một số nguyên 4 chữ số .
Hăy lập chương trình nhập dữ liệu vào kho sách , sau đó tìm ra :
• Những cuốn sách của một tác giả cho trước xuất bản vào một năm cho trước .
• Những cuốn sách có tên cho trước .
Kết quả hiện trên màn hình
Bài 6 :
File bản ghi F chứa danh sách các ngày lễ trong một năm , mỗi bản ghi gồm ngày tháng ,
tên ngày lễ và số ngày được nghỉ . Hãy lập chương trình nhập danh sách các ngày lễ và
tính :