Tin tức thư viện

Chức năng Dừng xem quảng cáo trên violet.vn

12087057 Kính chào các thầy, cô! Hiện tại, kinh phí duy trì hệ thống dựa chủ yếu vào việc đặt quảng cáo trên hệ thống. Tuy nhiên, đôi khi có gây một số trở ngại đối với thầy, cô khi truy cập. Vì vậy, để thuận tiện trong việc sử dụng thư viện hệ thống đã cung cấp chức năng...
Xem tiếp

Hỗ trợ kĩ thuật

  • (024) 62 930 536
  • 091 912 4899
  • hotro@violet.vn

Liên hệ quảng cáo

  • (024) 66 745 632
  • 096 181 2005
  • contact@bachkim.vn

CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI TIN 8

Wait
  • Begin_button
  • Prev_button
  • Play_button
  • Stop_button
  • Next_button
  • End_button
  • 0 / 0
  • Loading_status
Nhấn vào đây để tải về
Báo tài liệu có sai sót
Nhắn tin cho tác giả
(Tài liệu chưa được thẩm định)
Nguồn:
Người gửi: Lê Văn Thuận (trang riêng)
Ngày gửi: 00h:05' 09-04-2024
Dung lượng: 238.0 KB
Số lượt tải: 253
Số lượt thích: 0 người
Bồi dưỡng học sinh giỏi Pascal

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
         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 ;
    If 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 .
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 ;
    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 ;
    END .
 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 .

Bà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
    N , M : Integer ;
   Begin
    Clrscr ;
    Write(' N , M = ') ; Readln( N , M ) ;
    If ( (N + M) mod 2 = 0 ) Then Writeln(' Dung ! ')    Else Writeln(' Sai ! ') ;
    Readln ;
  END .

VÒNG LẶP XÁC ĐỊNH VÀ KHÔNG XÁC ĐỊNH
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 .
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 .
2)
Uses Crt ;
  Var  a : Array[ 'A'..'Z' ] of integer; (* mảng bộ đếm *)
          ch : char ;                 (* biến nhập kí tự *)
          i : 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
    Write (' 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 ;

  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 ;
  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 .
6) 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
     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) ;
     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 : ') ;
     For 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 ;
     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 ;
     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
         Begin
            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 ;
              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 ;
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 ;
      Until 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 :
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 :
a11x + a12y = c1
a21x + a22y = c2
Bài 2 :Lập phương trình tạo ra một mảng chứa bảng cửu chương .
Bài 3 :Viết chương trình nhập hai số nguyên dương m , n . Sau đó tính trung bình
cộng bình phương các số nguyên từ m đến n .
Bài 4 :Viết chương trình nhập từ bàn phím các phần tử của một mảng hai chiều .
Kích thước của mảng được nhập trước từ bàn phím .
Bài 5 :Dãy số sau được gọi là dãy Fibonaci :
a1 = 1
a2 = 1
a3 = 2

a4 = 3
...
an = an-1 + an-2
Viết chương trình tính 20 số Fibonaci đầu tiên và đưa ra kết quả vào một mảng 20
phần tử .
Bài 6 :Dãy số an được định nghĩa như sau :
a1 = 1
a2 = 2
...
an = 2an-1 + an-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 .
b. Mỗi một nhóm các dấu chấm liền nhau bằng một dấu chấm .

c. Một nhóm các dấu chấm đứng liền nhau bằng dấu ba chấm .
Bài 3 :Cho số tự nhiên n và một dãy các kí tự S1 , S2 , … , Sn . Hãy tìm số tự nhiên I
đầu tiên sao cho các kí tự Si , Si+1 đều là chữ cái a . Nếu trong dãy không có những
cặp như vậy thì thông báo .
Bài 4 :Cho số tự nhiên n và dãy các kí tự S1 , S2 , … , Sn . Biết rằng trong dãy có ít
nhất một dấu phẩy . Hãy tìm số tự nhiên i sao cho :
a. Si là dấu phẩy đầu tiên . b. Si là dấu phầy cuối cùng .
Bài 5 :Viết chương trình nhập một xâu kí tự , sau đó chỉ ra xem xâu đó có phải là
xâu đối xứng không ( xâu đối xứng là xâu có các kí tự giống nhau và đối xứng nhau
qua điể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
4. Nhap them
5. Thoat
Lua chon cua ban : _
Sau đó đợi gõ phím . Chương trình phải đợi cho tới khi phím gõ vào là một trong các
chữ số 1 .. 5 hoặc các chữ cái đầu của các tuỳ chọn thì thông báo phím gõ vào hợp lệ
và kết thúc chương trình . Trong chương trình phải dùng một tập hợp để kiểm tra
việc nhập giá trị cho biến từ bàn phím .
Bài 5 :Hãy lập chương trình nhập vào một xâu nhị phân . Các kí tự nhập vào không
hợp lệ bị bỏ qua .
Bài 6 :Hãy lập chương trình nhập vào một xâu kí tự từ bàn phím . Yêu cầu các kí tự
nhập vào phải là các chữ cái thuộc bảng chữ cái tiếng Anh , bỏ qua các phím khác .
Bài 7 :Viết chương trình có chức năng thêm phần tử vào tập hợp trực tiếp từ bàn
phím và loại bớt phần tử khỏi tập hợp cũng trực tiếp từ bàn phím .

CẤU TRÚC DỮ LIỆU KIỂU RECORD
Bài 1 :Thông tin về mỗi học sinh gồm :
Họ đệm : một xâu 25 kí tự .
Tên : một xâu 10 kí tự .
Tuổi : một số nguyên hai chữ số .
Lớp : một xâu hai chữ số và một chữ cái viết hoa
Hãy lập chương trình nhập từ bàn phím danh sách một lớp 15 học sinh vào một
mảng bản ghi . Sau đó hiển thị danh sách lên màn hình , mỗi người một dòng .
Bài 2 :Thông tin về mỗi học sinh là một bản ghi gồm các trường :
Họđệm : một xâu 25 kí tự .
Tên : một xâu 10 kí tự .
Tuổi : một số nguyên hai chữ số .
Lớp : một xâu hai chữ số và một chữ cái viết hoa
Một file bản ghi chứa một danh sách một lớp gồm 20 học sinh . Hãy lập chương
trình hiển thị danh sách lên màn hình , mỗi người một dòng .
Bài 3 :Một file bản ghi chứa một danh sách học sinh , thông tin về mỗi học sinh
giống như bài trên . Hãy lập chương trình tạo một file bản ghi khác chứa danh sách
đó , mỗi bản 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 :
Tổng số các ngày lễ và tổng số các ngày nghỉ lễ trong năm .
Tổng số các ngày lễ và tổng số các ngày nghỉ lễ trong quí 1 , quí 2 , …
Kết quả thể hiện trên màn hình .
CẤU TRÚC DỮ LIỆU KIỂU FILE
Bài 1 :Hãy lập chương trình tạo một tệp số nguyên chứa các số nguyên tố nhỏ hơn

10000 theo thứ tự tăng dần .
Bài 2 :Cho f là tệp văn bản chứa các xâu 10 kí tự . Hãy lập chương trình nhập và
hiển thị nội dung file đó lên màn hình , mỗi xâu một dòng , đầy trang màn hình thì
dừng lại đợi gõ Enter mới hiển thị trang tiếp theo cho tới hết.
Bài 3 :Bạn hãy viết chương trình cho phép đọc dữ liệu từ bàn phím và ghi thêm vào
cuối một tệp các bản ghi .
Bài 4 :Cho một văn bản chứa trong một text file f . Trong văn bản , tính từ trái sang
phải , từ trên xuống dưới , kí tự # là kí hiệu xoá đi một từ đứng ngay trước nó nếu
có . Ví dụ '#Ta#oi di ngu#h###hoc' có nghĩa là 'Toi di hoc' . Bạn hãy viết chương
trình sửa lại file f theo quy ước trên .
Bài 5 :Cho 2 file f và g cùng kiểu ( nhưng không rõ kiểu nào ) . Bạn hãy lập thủ tục
gán nội dung của file g cho file f.
Bài 6 :Cho một file text ghi lại một chương trình Pascal của một học sinh . Hãy viết
chương trình kiểm tra lỗi của chương trình Pascal trên theo các cách sau đây :
Cách 1 : Kiểm tra xem số lượng các dấu ' ( dấu mở và dấu đóng ) có bằng nhau
không ?
Cách 2 : Kiểm tra xem số lượng các từ Begin và End có bằng nhau không ?
Bài 7 :Cho một file text . Hãy viết chương trình đếm xem file text trên chứa bao
nhiêu từ . ( Chú ý : theo quy định , các từ cách nhau bởi một hay nhiều dấu cách ) .
Bài 8 :Cho một file text . Viết chương trình loại bỏ các khoảng trống thừa bên trong
file text này .
CẤU TRÚC DỮ LIỆU KIỂU CON TRỎ
Bài 1 :Bạn hãy lập chương trình cho phép ta nhập từ bàn phím một danh sách được
ghép nối . Sau đó gỡ bỏ một record khỏi danh sách .
Bài 2 :Bạn hãy lập chương trình cho phép nhập một danh sách được ghép nối . Sau
đó chèn thêm một record vào danh sách .
Bài 3 :Bạn hãy lập chương trình cho phép nhập một danh sách được ghép nối . Sau
đó đổi chỗ hai record trong danh sách .

Hướng dẫn :

CHƯƠNG TRÌNH CON
1) Procedure Change ( n : integer ; Var St : String ) ;
  (* thủ tục chuyển số tự nhiên n cho trước sang
       hệ cơ số 2 và được lưu ở trong xâu St *)
  Type
    b : Array[0 ..  1] Of Char = ('0' , '1') ;
  Var
    du , So : Integer ;
    S : String ;
 
  Begin
    S := '' ; (* xâu rỗng *)
    So := n ;
    Repeat
      Du := So mod 2 ;
      So :=So div 2 ;
      S := b[du] + s ;
    Until So = 0 ;
    St := S ;

  End ;
2) Uses Crt ;
Var  a, b, c, x1, x2: real;
(*================================*)
Procedure  Nhapabc(var  aa,bb,cc: real);
Begin
  Write('a='); Readln(aa);
  Write('b='); Readln(bb);
  Write('c='); Readln(cc);
End;
(*=================================*)
Procedure GPTB2;
Var Delta: real;
Begin
   Delta:=sqr(b)-4*a*c;
   If Delta<0 then Writeln('Phuong trinh vo nghiem.')
   Else
      If Delta=0 then
            Begin
               Write('Phuong trinh co nghiem kep : ');
            Write('x1,2=',-b/(2*a):8:2);
         End

      Else
         Begin
            x1:=(-b+sqrt(Delta))/(2*a);
            x2:=(-b-sqrt(Delta))/(2*a);
           Writeln('Phuong trinh co 2 nghiem phan biet la :');
             Writeln('X1=',x1:8:2, 'X2=',x2:8:2);
         End;
End;
(*================================*)
BEGIN (* CT chính *)
   Clrscr;
   Writeln(' Giai Phuong Trinh Bac Hai Voi Cac He So :');
   Nhapabc(a,b,c);
   If a<>0 then  GPTB2 
   Else  Writeln(' Khong phai phuong trinh bac hai ');
   Readln ;
END .
3) Uses Crt;
  Var  a, b, c: real ;
  (*================================*)
  Procedure Nhap(Var a, b, c: real);
     Procedure input (Var a: real; tenbien: Char);

     Begin
        Repeat
           Write('Nhap ' + tenbien+' = '); Readln(a);
        Until (a>=0);
     End;
  Begin   (* bắt đầu thủ tục nhập *)
     Input(a, 'a');
     Input(b, 'b');
     Input(c, 'c');
  End;      (* kết thúc thủ tục nhập *)
  (*================================*)
  Procedure Kiemtra(a, b, c: Real);
  Begin
     If (a        Writeln(a:0:2, ', ', b:0:2, '  va  ', c:0:2, 
                      ' lap thanh ba canh cua tam giac ')
           Else  Writeln('Khong lap thanh ba canh cua tam giac') ;
  End;
  (*===============================*)
  Procedure Trung_tuyen (a, b, c: Real);
  Var    ma, mb, mc: real;
  Begin

     ma:=sqrt((2*sqr(b)+2*sqr(c)-sqr(a))/4);
     mb:=sqrt((2*sqr(a)+2*sqr(c)-sqr(b))/4);
     mc:=sqrt((2*sqr(a)+2*sqr(b)-sqr(c))/4);
     Writeln('Cac trung tuyen cua tam giac la : ') ;
     Writeln('ma=', ma:0:2, '   mb=', mb:0:2, '   mc=', mc:0:2);
  End;
  (*================================*)
  Procedure Dientich (a, b, c: real); Var p, S: real;
  Begin
     p:=(a+b+c)/2;
     S:=sqrt(p*(p-a)*(p-b)*(p-c));
    Writeln('Dien tich =', S:0:2);
  End;
  (*================================*)
  BEGIN   (* Chương trình chính *)
     Clrscr;
     Nhap(a, b, c);
     Kiemtra(a, b, c);
     Dientich(a, b, c);
     Trung_tuyen(a, b, c);
     Readln;
END.

4) Uses Crt;
  Var  a, b, c: real ;
  (*================================*)
  Procedure Nhap(Var a, b, c: real);
     Procedure input (Var a: real; tenbien: Char);
     Begin
        Repeat
           Write('Nhap ' + tenbien+' = '); Readln(a);
        Until (a>=0);
     End;
  Begin   (* bắt đầu thủ tục nhập *)
     Input(a, 'a');
     Input(b, 'b');
     Input(c, 'c');
  End;      (* kết thúc thủ tục nhập *)
  (*================================*)
  Procedure Kiemtra(a, b, c: Real);
  Begin
     If (a        Writeln(a:0:2, ', ', b:0:2, '  va  ', c:0:2, 
                      ' lap thanh ba canh cua tam giac ')
           Else  Writeln('Khong lap thanh ba canh cua tam giac') ;

  End;
  (*===============================*)
  Procedure Trung_tuyen (a, b, c: Real);
  Var    ma, mb, mc: real;
  Begin
     ma:=sqrt((2*sqr(b)+2*sqr(c)-sqr(a))/4);
     mb:=sqrt((2*sqr(a)+2*sqr(c)-sqr(b))/4);
     mc:=sqrt((2*sqr(a)+2*sqr(b)-sqr(c))/4);
     Writeln('Cac trung tuyen cua tam giac la : ') ;
     Writeln('ma=', ma:0:2, '   mb=', mb:0:2, '   mc=', mc:0:2);
  End;
  (*================================*)
  Procedure Dientich (a, b, c: real); Var p, S: real;
  Begin
     p:=(a+b+c)/2;
     S:=sqrt(p*(p-a)*(p-b)*(p-c));
    Writeln('Dien tich =', S:0:2);
  End;
  (*================================*)
  BEGIN   (* Chương trình chính *)
     Clrscr;
     Nhap(a, b, c);

     Kiemtra(a, b, c);
     Dientich(a, b, c);
     Trung_tuyen(a, b, c);
     Readln;
END.
5) Uses Crt;
  Var X, Y, Z: byte;
  Begin
     Clrscr;
     Writeln('Giai phuong trinh X+Y+Z=12 trong pham vi '
                    + 'so nguyen khong am voi dieu kien x<4');
     For X:=0 to 3 do
        For Y:=0 to 12 do
           For Z:=0 to 12 do
              If (X+Y+Z=12) then Writeln(' x=',X,' y=',Y, 'z=',Z);
     Readln;
  End.
6) Uses Crt;
  Var  N, a, b, c, X, Y, Z, i: Integer;
  Begin
    Clrscr;
    Write(' N, a, b, c = '); Readln(N, a, b,c);

    If (a+b+c-3       Begin
          Writeln('Phuong trinh vo nghiem'); Readln;
          Exit;
       End
    Else
       Begin
          Writeln('Phuong trinh co nghiem la:');
          Writeln('x': 10, 'y': 10, 'z':10);
          i:=4;
          For X:=0 to (a-1) do
             For Y:=0 to (b-1) do
                For Z:=0 to (c-1) do
                   If (X+Y+Z=N) then
                    Begin
                      Writeln(x: 10, y: 10, z: 10);
                      inc(i);
                      If i=24 then
                        Begin
                          Write('Nhan Enter de tiep tuc...'); Readln;
                           i :=0;
                        End;

                    End ;
       End ;
    Write('Nhan Enter de ket thuc...');
    Readln;
  End.
7)
Uses Crt;
  Var    xau1,xau2,xau: string;
  (*==================================*)
  Procedure compare(s1, s2: string; Var kq: string);
  Var i: byte;
  (*===============================*)
  Function kt(ch: char; st: string): boolean;
  (* Kiểm tra xem kí tự Ch có trong...
 
Gửi ý kiến