Bài 6 :Viết chương trình nhập hai số thực.. 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 ‘
Trang 1CHUYÊ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
Trang 2Tong , So : Real ; I , N , Dem : Integer ;
BEGIN
Write (' Bao nhieu so : ') ; Readln ( N ) ;
Tong := 0 ; Dem := 0 ;
For I := 1 To N Do
Begin
Write (' So = ') ; Readln ( So ) ;
If ( So > 10 ) and ( So < 20 ) Then
Begin
Tong := Tong + So ; Dem := Dem + 1 ;
End ;
End ;
Writeln (' So cac so >10 va <20 la : ', Dem ) ; Writeln (' Tong cua chung la :', Tong )
;
Readln ;
END
Bài 3:Nhập bốn số a , b , c , d Hãy tìm giá trị lớn nhất của chúng và gán giá trị lớn nhất
đó cho biến Max
3) Var
Max , a , b , c , d : Real ;
BEGIN
Writeln (' Nhap gia tri cua 4 so : ') ;
Write (' a = ') ; Readln ( a ) ; Write (' b = ') ; Readln ( b ) ; Write (' c = ') ; Readln ( c ) ; Write (' d = ') ; Readln ( d ) ;
Max := a ;
Trang 3If Max < b Then Max := b ; If Max < c Then Max := c ; If Max < d Then Max := d
;
Writeln (' Gia tri lon nhat la : ', Max ) ;
Readln ;
END
Bài 4:Đọc ngày tháng năm , sau đó viết ra màn hình đó là ngày thứ mấy trong tuần
4) Var
Thu , Ngay , Thang : Byte ; Nam : Integer ;
BEGIN
Write (' Doc Ngay Thang Nam : ') ; Readln ( Ngay , Thang , Nam ) ;
Nam := 1900 + ( Nam mod 1900 ) ;
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
Trang 4Bà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 ;
Write (' So bao danh : ') ; Readln( SBD ) ; Write (' Diem toan : ') ; Readln( Toan ) ;
Write (' Diem ngoai ngu : ') ; Readln( Ngoaingu ) ; Write (' Diem van : ') ; Readln ( Van ) ;
Tongdiem := Toan + Van + Ngoaingu ;
Clrscr ;
Writeln (' Phieu Bao Diem ') ;
Writeln (' So bao danh : ', SBD ) ; Writeln (' Diem van : ', Van ) ;
Writeln (' Diem toan : ', Toan ) ; Writeln (' Diem ngoai ngu : ', Ngoaingu) ; Writeln (' Tong diem : ', Tongdiem) ;
If Tongdiem >= 15 Then
Writeln(' Ban da trung tuyen ') Else Writeln(' Ban khong trung tuyen ') ;
Readln ;
Trang 5END
Bài 6 :Viết chương trình nhập hai số thực Sau đó hỏi phép tính cần thực hiện và in kết quả của phép tính đó
Nếu là “+” , in kết quả của tổng lên màn hình
Nếu là “-” , in kết quả của hiệu lên màn hình
Nếu là “/” , in kết quả của thương lên màn hình
Nếu là “*” , in kết quả của tích lên màn hình Nếu là “+” , in kết quả của tổng lên màn hình
Nếu là “+” , in kết quả của tổng lên màn hình
6) Uses Crt ;
Var
a , b , T : Real ; Pt : Char ;
BEGIN
Clrscr ;
Write (' a = ') ; Readln( a ) ; Write (' b = ') ; Readln( b ) ;
Write (' Phep tinh thuc hien la (+ - * /) : ') ;
Readln( Pt ) ;
If Pt = '+’ Then T := a + b ; If Pt = '-’ Then T := a - b ;
If Pt = '*’ Then T := a * b ; If Pt = '/’ Then T := a / b ;
Write ( a , pt , b , ' = ', T ) ;
Readln ;
END
Trang 6Bài 7:Giải và biện luận phương trình : x2 + ( 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 ;
Var
Trang 7N , M : Integer ;
Begin
Clrscr ;
Write(' N , M = ') ; Readln( N , M ) ;
If ( (N + M) mod 2 = 0 ) Then Writeln(' Dung ! ') Else Writeln(' Sai ! ') ;
Readln ;
END
Sử dụng lệnh For
Bài 1 :Lập trình tính tích các số tự nhiên từ 1 tới 10
Bài 2:Viết chương trình đếm số lần xuất hiện của các kí tự thuộc bảng chữ cái trong 50 lần gõ kí tự bằng bàn phím (không phân biệt a với A, b với B …, dùng hàm Upcase để chuyển đổi chữ thường với chữ hoa)
Bài 3 :Cho số tự nhiên n , hãy lập trình để tính các tổng sau :
a 1 + 1/22 + 1/32 + … + 1/n2 b 1 + 1/2! + 1/3! + … + 1/n!
Bài 4 :Tính giá trị của biểu thức sau :
( 1 + 1/12 ) ( 1 + 1/22 ) … ( 1 + 1/n2 )
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 an , ở đâ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
Trang 8Bà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
2)
Uses Crt ;
Var a : Array[ 'A' 'Z' ] of integer; (* mảng bộ đếm *)
ch : char ; (* biến nhập kí tự *)
Trang 9i : byte ; (* chỉ số của lần gõ phím *)
BEGIN
Clrscr ;
For ch :='A' to 'Z' Do a[ch] := 0 ; (* xả bộ đếm *)
Writeln (' Go phim 50 lan ') ;
For i := 1 To 50 Do (* thực hiện 100 lần *)
Begin
ch :=Readkey ; (* nhập kí tự vào Ch không cần gõ Enter *)
ch := Upcase(ch) ; (* Đỗi chữ thường thành chữ hoa *) a[ch] := a[ch] + 1 ;
End;
Writeln (' So lan xuat hien cac ki tu la :') ;
For ch :='A' to 'Z' do (* Kiểm tra bộ đếm từ 'A' tới 'Z' *)
If a[ch] > 0 Then (* Nếu Ch có xuất hiện *)
Writeln (ch , a[ch] : 4 , ' lan ') ; (* Viết ra màn hình kí tự và
số lần xuất hiện *)
Readln ;
END
3)a) Var n , i : Word ;
S : Real ;
BEGIN
Trang 10Write (' Nhap n : ') ; Readln (n) ;
S := 0 ;
For i := 1 To n Do
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 ;
Trang 11Begin
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 ;
BEGIN
Clrscr ;
Write (' Cho so tu nhien n : ') ; Readln (n) ;
tong :=0 ;
i :=1 ;
While i <= n Do
Begin
tong := tong + 1/i ;
i := i + 1 ;
End ;
Writeln (' Tong can tim la : ', tong:12:6 ) ;
Readln ;
END
Trang 126) Uses Crt ;
Var i , n : Integer ;
a , giatri : Real ;
BEGIN
Clrscr ;
Write (' Cho so a : ') ; Readln(a) ;
Write (' Cho so mu n : ') ; Readln(n) ;
i := 1 ;
giatri := 1 ;
While i <= n Do
Begin
giatri := giatri * a ;
i:= i+1 ;
End ;
Writeln(' a mu n bang : ', giatri ) ;
Readln ;
END
7) Uses Crt;
Var A : Array [1 100] Of Integer;
i , j , n : Integer ;
BEGIN
Trang 13Clrscr ;
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 ;
Trang 14Write(' Do dai cua day so N = ') ; Readln (N) ; Writeln (' Nhap day so : ') ;
For i := 1 To N Do
Begin
Write('A[', i ,'] = ') ; Readln ( A[i] ) ;
End ;
i := 1 ;
While (i <= n-1) Do
Begin
j := i+1;
While j<=n do
Begin
If A[j] < A[i] then
Begin
T := A[j];
A[j ] := A[i];
A[i] := T ;
End ;
j := j + 1;
End ;
i := i + 1;
End ;
Writeln(' Day sau khi sap xep : ') ;
Trang 15For i := 1 To N Do Write(A[i] : 4) ;
Readln ;
END
9) Uses Crt ;
Var b : Array[1 100] Of Real;
a : Real ;
n , i : Byte ;
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 ;
Trang 16Readln ;
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 ;
i := 1 ; m := 0 ;
Repeat
trung := false ;
j := i + 1;
Repeat
If ( j <= n ) and ( a[i] = a[j] ) Then trung := true ; inc (j) ; Until trung or ( j > n ) ;
If trung Then
Trang 17Begin
m := m + 1;
b[m] := a[i] ; writeln ( b[m] : 4 ) ;
End ;
inc(i) ;
Until i > n ;
If m > 1 Then
Begin
i := 1 ;
Repeat
j := i + 1 ;
Repeat
trung := false ;
If b[i] = b[j] Then trung := true ;
If trung Then
Begin
If j < m Then
For k := j To m - 1 Do b[k] := b[k + 1] ;
m := m - 1 ;
dec ( j ) ;
End ;
inc ( j ) ;
Until j > m ;
Trang 18inc ( 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 ;
Trang 19writeln (' 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 ;
Var a : Array [1 100] Of Integer ;
n , i : Byte ;
d : integer ;
BEGIN
Clrscr ;
Writeln (' Tim USCLN cua N so :') ;
Write (' Nhap so N : ') ; Readln(n) ;
Writeln ('Nhap ', N ,' so : ') ;
For i := 1 To n Do
Begin
Write(' So thu ', i ,' = ') ; Readln( a[i] ) ;
End ;
For i := 1 To n-1 Do
Repeat
d := a[i] ;
a[i] := a[ i+1 ] mod a[i] ;
a[i+1] := d ;
Trang 20Until a[i] = 0 ;
Writeln (' USCLN cua ', N ,' so la : ', a[n] ) ;
Readln ;
END
CHƯƠNG TRÌNH CON
Bài 1 :Dùng thủ tục chuyển một số tự nhiên n cho trước sang hệ cơ số 2
Bài 2 :Dùng thủ tục giải phương trình bậc hai ax2 + bx + c = 0
Bài 3 :Hãy viết lại thủ tục Insert đối với một chuỗi kí tự cho trước tùy ý
Bài 4:Viết chương trình thực hiện lần lượt các công việc sau :
_ Lập thủ tục nhập ba số thực dương a , b , c từ bàn phím
_ Lập thủ tục kiểm tra xem ba số trên có lập thành ba cạnh của tam giác hay không ? _ 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 :