1. Trang chủ
  2. » Công Nghệ Thông Tin

bài tập pascal có lời giải

26 3,8K 4

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 26
Dung lượng 212,77 KB

Nội dung

bài tập pascal có lời giải

Trường TH & THCS Phương Ninh BÀI TẬP BẢN GV: Diệp Thanh Toàn Trang 52 End; Close(f); Write(' So tu co trong file hoten.txt la: ',dem); Readln; END. 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 . (* Cat khoang trong thua *) Uses Crt; Const fi = 'file.inp'; fo = 'C:\file.out'; Var inp,out: text; s: string; BEGIN Assign(inp,fi); Reset(inp); Assign(out,fo); Rewrite(out); While not Eof(inp) do Begin Readln(inp,s); While (s[1]=' ')and(Length(s)>0) do Delete(s,1,1); While (s[Length(s)]=' ')and(Length(s)>0) do Delete(s,Length(s),1); While (Length(s)>0)and(pos(' ',s)<>0) do Delete(s,pos(' ',s),1); Writeln(out,s); End; Close(out); Close(inp); END. Trường TH & THCS Phương Ninh BÀI TẬP BẢN GV: Diệp Thanh Toàn Trang 1 BÀI TẬP CHƯƠNG 1:CÂU LỆNH IF ….THEN… Bài 1: Nhập 3 số a , b , c bất kì . Hãy kiểm tra xem ba số đó 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 . GIẢI 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 ) GIẢI 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 . Trường TH & THCS Phương Ninh BÀI TẬP BẢN GV: Diệp Thanh Toàn Trang 2 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. GIẢI 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. GIẢI 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 ) * 3 div 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 ') ; Trường TH & THCS Phương Ninh BÀI TẬP BẢN GV: Diệp Thanh Toàn Trang 51 Dem:=n; End; BEGIN Clrscr; Write(' So luong cac dau ( va ) '); If Dem('(')<>Dem(')') then Writeln('khong bang nhau.') Else Writeln('bang nhau.'); Write(' So luong cac tu Begin va End '); If Dem('End')<>Dem('Begin') then Writeln('khong bang nhau.') Else Writeln('bang nhau.'); Readln; END . 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 ) . (* Đếm từ *) Uses Crt; Const fi = 'hoten.txt'; Var f: text; s: string; dem: word; BEGIN Clrscr; dem:=0; Assign(f,fi); Reset(f); While not Eof(f) do Begin Readln(f,s); While s[1]=' ' do Delete(s,1,1); While length(s)>0 do Begin Case s[1] of ' ': While (s[1]=' ')and(length(s)>0) do Delete(s,1,1); Else Begin inc(dem); While (s[1]<>' ')and(length(s)>0) do Delete(s,1,1); End; End; End; Trường TH & THCS Phương Ninh BÀI TẬP BẢN GV: Diệp Thanh Toàn Trang 50 buf: array [1 1024] of byte; f1,f2: file; Begin Assign(f1,fi1); Reset(f1,1); Assign(f2,fi2); Rewrite(f2,1); nbuf:=1024; Repeat Blockread(f1,buf,nbuf,nread); Blockwrite(f2,buf,nread); Until nread<>nbuf; Close(f1); Close(f2); End; BEGIN Copyfile(f1,f2); END. 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 ) bằng nhau không ? Cách 2 : Kiểm tra xem số lượng các từ Begin và End bằng nhau không ? (* Dem (') và 'Begin' , 'End' *) Uses Crt; Const fi='C8_6.txt'; Function Dem(c: string): integer; Var n,l: integer; f: text; S: string; Begin l:=Length(c); n:=0; Assign(f,fi); Reset(f); While not Eof(f) do Begin Readln(f,S); While pos(c,s)<>0 do Begin Inc(n); Delete(s,pos(c,s),l); End; End; Close(f); Trường TH & THCS Phương Ninh BÀI TẬP BẢN GV: Diệp Thanh Toàn Trang 3 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 , tố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 tố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 . GIẢI 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 ; Trường TH & THCS Phương Ninh BÀI TẬP BẢN GV: Diệp Thanh Toàn Trang 4 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 . GIẢI Uses Crt ; Var a , b , kq : Real ; Pt : Char ; BEGIN Clrscr ; Write (' a = ') ; Readln( a ) ; Write (' b = ') ; Readln( b ) ; Write (' Phep tinh thuc hien la (+ - * /) : ') ; Readln( Pt ) ; If Pt = '+’ Then kq := a + b ; If Pt = '-’ Then kq := a - b ; If Pt = '*’ Then kq := a * b ; If Pt = '/’ Then kq := a / b ; Write ( a , pt , b , ' = ', kq ) ; 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ỳ ý . GIẢI 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 Trường TH & THCS Phương Ninh BÀI TẬP BẢN GV: Diệp Thanh Toàn Trang 49 Procedure docfile ( fi : String ); Var f : text ; Begin Assign(f,fi); Reset(f); while not eof(f) do Begin Read(f,ch); Write(ch); End; close(f) ; writeln ; End ; BEGIN Writeln(' Van ban ban dau doc tu file "vanban.txt" :') ; docfile(fi) ; assign(f,fi) ; reset(f) ; s:=''; Repeat Read(f,ch); If (ch='#')then Delete(s,length(s),1) Else s:=s+ch; Until Eof(f); Close(f); Assign(f,fi); Rewrite(f); Writeln(f,s); Close(f); Writeln(' Van ban sau khi sua chua :') ; docfile(fi) ; Readln; END . 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. (* Gan hai file *) Uses Crt; Const f1='calc.ex'; f2='C:\calc.exe'; Procedure Copyfile(fi1,fi2: string); Var nread,nbuf: word; Trường TH & THCS Phương Ninh BÀI TẬP BẢN GV: Diệp Thanh Toàn Trang 48 End; Close(f); Readln; End; BEGIN Ghi; Doc; END. 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 . (* Doc và ghi vào cuối tệp các bản ghi *) Uses Crt; Const inp='Hocsinh.dat'; Type Hocsinh=Record Ten : String[30]; Tuoi: Byte; End; Var F : file of Hocsinh; Hs: Hocsinh; BEGIN Assign(f,inp); Reset(f); Write('Ho va ten: '); Readln(Hs.Ten); Write('Tuoi : '); Readln(Hs.Tuoi); Seek(f,Filesize(F)); Write(f,Hs); Close(f); END . 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 xố đi một từ đứng ngay trước nó nếu . Ví dụ ‘#Ta#oi di ngu#h###hoc’ 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 . (* Sửa văn bản *) Uses Crt; Const fi='vanban.txt'; Var f: text; s: string; ch: char; Trường TH & THCS Phương Ninh BÀI TẬP BẢN GV: Diệp Thanh Toàn Trang 5 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‘. GIẢI 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 . BÀI TẬP CHƯƠNG 2:VÒNG LẬP XĐ 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 . GIẢI 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 . 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). GIẢI 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 *) Trường TH & THCS Phương Ninh BÀI TẬP BẢN GV: Diệp Thanh Toàn Trang 6 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 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 . 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/2 2 + 1/3 2 + … + 1/n 2 b. 1 + 1/2! + 1/3! + … + 1/n! GIẢI 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 Trường TH & THCS Phương Ninh BÀI TẬP BẢN GV: Diệp Thanh Toàn Trang 47 Close(F); clrscr; Write(' Viet ra file "C:\SoNT" cac so nguyen to nho hon 10000 '); Readln; END . 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. (* Ghi và đọc file of String *) Uses Crt; Const INP='FoString.dat'; Type String10 = String[10]; Procedure Ghi; Var f: file of String10; S: String10; Begin Assign(f,INP); Rewrite(f); Writeln('Nhap vao f. Thoi nhap khi S='''' (go Enter)!'); Readln(S); While (S<>'') do Begin Write(f,S); Readln(S); End; Close(f); End; Procedure Doc; Var f: file of String10; S: String10; Begin Clrscr; Assign(f,INP); Reset(f); While Not Eof(f) Do Begin Read(f,S); Writeln(S); If WhereY=25 then Begin Write('Press Enter to continue '); Readln; Clrscr; End; Trường TH & THCS Phương Ninh BÀI TẬP BẢN GV: Diệp Thanh Toàn Trang 46 Begin Writeln('So ngay le trong nam : ',n); Writeln('Tong so ngay nghi le trong nam : ',snn); Writeln; Writeln('So ngay le trong qui 1 : ',tsq1); Writeln('Tong so ngay nghi le trong qui 1 : ',snnq1); Writeln('So ngay le trong qui 2 : ',tsq2); Writeln('Tong so ngay nghi le trong qui 2 : ',snnq2); Writeln('So ngay le trong qui 3 : ',tsq3); Writeln('Tong so ngay nghi le trong qui 3 : ',snnq3); Writeln('So ngay le trong qui 4 : ',tsq4); Writeln('Tong so ngay nghi le trong qui 4 : ',snnq4); Writeln; End; BEGIN Clrscr; Nhap; Tinh_ngay_nghi; Inkq; Write('Ban Enter de ket thuc '); Readln; END. BÀI TẬP CHƯƠNG 8: 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 . (* Tạo file số nguyên tố nhỏ hơn 10000 *) Uses Crt; Const N=10000; Var i , j : Integer; f: File of Integer; a: Array[2 N] of boolean; BEGIN For i:=2 to N do a[i]:=true; i:=2; Repeat For j:=2 to (N div i) do a[i*j]:=false; Repeat Inc(i) Until a[i] or (i>N); Until i>N; Assign(F,'C:\SoNT.dat'); Rewrite(F); For i:=1 to N do If a[i] then Write(F,i); Trường TH & THCS Phương Ninh BÀI TẬP BẢN GV: Diệp Thanh Toàn Trang 7 Begin p := p * i ; (* tính i *) S := S + 1 / p ; End ; Writeln (' S = ', S:0:2) ; Readln ; END . Bài 4 : Tính giá trị của biểu thức sau : ( 1 + 1/1 2 ) ( 1 + 1/2 2 ) … ( 1 + 1/n 2 ) GIẢI 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 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. GIẢI 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 . 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. GIẢI Trường TH & THCS Phương Ninh BÀI TẬP BẢN GV: Diệp Thanh Toàn Trang 8 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 . 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 . GIẢI 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 . Trường TH & THCS Phương Ninh BÀI TẬP BẢN GV: Diệp Thanh Toàn Trang 45 Begin n:=0; Assign(f,'bai6.dat'); Reset(f); While not Eof(f) do Begin Inc(n); Read(f,ds[n]); End; Close(f); End; Procedure Tinh_ngay_nghi; Var i: integer; Begin snn:=0; snnq1:=0; tsq1:=0; snnq2:=0; tsq2:=0; snnq3:=0; tsq3:=0; snnq4:=0; tsq4:=0; For i:=1 to n do With ds[i] do Begin Inc(snn,songay); If (thang<3) then Begin Inc(snnq1,songay); Inc(tsq1); End Else If (thang<6) then Begin Inc(snnq2,songay); Inc(tsq2); End; If (thang<9) then Begin Inc(snnq3,songay); Inc(tsq3); End ; If (thang<12) then Begin Inc(snnq4,songay); Inc(tsq4); End; End; End; Procedure Inkq; Var i: integer; Trường TH & THCS Phương Ninh BÀI TẬP BẢN GV: Diệp Thanh Toàn Trang 44 Writeln('2. Tim kiem theo ten sach'); Writeln; Write('Ban chon [1/2] : '); Repeat c:=Readkey; Until pos(c,'12')>0; Writeln(c); If c='1' then TheoTG Else TheoTS; End; BEGIN ClrScr; Nhap; Timkiem; Write('Ban Enter de ket thuc '); Readln; END. 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 . (* Tinh so ngay le va ngay nghi trong nam ,qui *) Uses Crt; Type Danhsach=record ngay: byte; thang: byte; ten: string[15]; songay: integer; end; Var ds: array [1 100] of Danhsach; n: integer; f: file of Danhsach; snn,snnq1,snnq2,snnq3,snnq4: integer; tsq1,tsq2,tsq3,tsq4: integer; Procedure Nhap; Trường TH & THCS Phương Ninh BÀI TẬP BẢN GV: Diệp Thanh Toàn Trang 9 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. GIẢI 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 . 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. GIẢI Uses Crt ; Var b : Array[1 100] Of Real; a : Real ; n , i : Byte ; Trường TH & THCS Phương Ninh BÀI TẬP BẢN GV: Diệp Thanh Toàn Trang 10 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 . 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. GIẢI 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) ; Trường TH & THCS Phương Ninh BÀI TẬP BẢN GV: Diệp Thanh Toàn Trang 43 M: Danhsach; Procedure Nhap; Begin n:=0; Assign(f,'bai5.dat'); Reset(f); While not Eof(f) do Begin Inc(n); Read(f,ds[n]); End; Close(f); End; Procedure TheoTG; Var tacgia: string; namXB: integer; i: integer; Begin Write('Cho ten tac gia : '); Readln(M.tacgia); Write('Cho nam xuat ban : '); Readln(M.NamXB); i:=1; While (i<=n)and((ds[i].tacgia<>tacgia)or(ds[i].namXB<>namXB)) do i:=i+1; If (i>n) then Writeln('Khong tim duoc') Else Writeln(ds[i].tacgia:28,ds[i].tensach:42,ds[i].namXB:6); End; Procedure TheoTS; Var ten: string; i: integer; Begin Write('Cho ten sach : '); Readln(ten); i:=1; While (i<=n)and(ds[i].tensach<>ten) do i:=i+1; If (i>n) then Writeln('Khong tim duoc') Else Writeln(ds[i].tacgia:28,ds[i].tensach:42,ds[i].namXB:6); End; Procedure Timkiem; Var c:char; Begin Writeln('1. Tim kiem theo tac gia va nam xuat ban.'); [...]... Writeln; Writeln('Bam Enter de ket thuc!'); Readln; END BÀI TẬP BẢN BÀI TẬP BẢN BÀI TẬP CHƯƠNG 3: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ệ số 2 GIẢI 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 ngồi các trường Họđệm , Tên , Tuổi , Lớp giống như các bài trên còn thêm trường Điểm chứa điểm trung bình của học sinh... 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 BÀI TẬP BẢN BÀI TẬP BẢN BÀI TẬP CHƯƠNG 7: KIỂU RECORD 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 GIẢI 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... Ninh Var ch: char; st: string; BÀI TẬP BẢN BEGIN Clrscr; st:=''; Writeln('Nhap vao mot xau toan cac chu cai:'); Repeat ch:=Readkey; If ch in A then begin st:=st+ch; write(ch); End Else if ch#13 then Write(#7); If ch=#0 then ch:=Readkey; Until ch = #13; END Bài 7 : Viết chương trình 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... Write('Max(d(Si,Sj)=',max,' Min(d(Si,Sj)=',min); Readln; END BÀI TẬP BẢN Bài 9: Viết chương trình hồ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 ) Trang 34 GV: Diệp Thanh Toàn Trang 19 Trường TH & THCS Phương Ninh BÀI TẬP BẢ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 Thốt khỏi chương trình GIẢI Uses Crt; Type uoc_nguyen_to=array[1... Trường TH & THCS Phương Ninh BÀI TẬP BẢN inc(dem); a[dem]:=u; N1:=N1 div u; End Else inc(u); Until N1=1; End Else dem:=0; Viet; End; (*==============================*) BEGIN (* Main Program *) Clrscr; Writeln('Phan tich so N thanh tich cua cac so nguyen to :'); nhap(N); phantich(N); Write('Nhan Enter de ket thuc '); Readln; END BÀI TẬP CHƯƠNG 4: CẤU TRÚC DỮ LIỆU MẢNG Bài 1: Giải hệ phương trình tuyến... End; If dx then Write(' St la xau doi xung ') Else Write(' St khong phai la xau doi xung ') ; Readln; END BÀI TẬP BẢN Bài 6 : Cho một xâu kí tự S Hãy viết chương trình tính xem trong S 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 đáp số là 5 Var S: string; i, j, dem: integer; t: boolean; BEGIN Write('Cho mot xau ki tu S: '); Readln(S);... St2[i] ; St2 := S ; End ; End ; 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 GV: Diệp Thanh Toàn Trang 14 Trường TH & THCS Phương Ninh Writeln; Write('Bam Enter de ket thuc '); Readln; END BÀI TẬP BẢN 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... THCS Phương Ninh BÀI TẬP BẢN Trường TH & THCS Phương Ninh BÀI TẬP BẢN Write('c2='); Readln(c[2]); d:=a[1,1]*a[2,2] - a[2,1] * a[1,2]; dx:=c[1]*a[2,2] - c[2] * a[1,2]; dy:=a[1,1]*c[2] - a[2,1] * c[1]; If d=0 then Writeln(' He vo nghiem hoac vo so nghiem') Else Begin x:=dx/d; y:=dy/d; Writeln('He co nghiem duy nhat :'); Writeln('x=', x:0:2, ' ; y=', y:0:2); End ; Readln; END Bài 2: Lập phương... While (S[length(S)] = #32) do Delete(S,length(S),1); Write('Chuoi sau khi da bien doi la: ', S); Readln; END BÀI TẬP CHƯƠNG 6: 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 kiểu Set Of 0 99 (* hàm đếm số phần tử của tập hợp *) Uses Crt; Type Tap=set of 0 99; Const inp='Number.dat'; Var S : Tap; i : byte; Procedure Nhap; Var a: byte; f: text; Trang 31 Trường... Write ( b[k] : 4 ) ; Readln ; END Bài 11: Bạn 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 GIẢI uses crt ; var thang : Byte ; Trang 42 GV: Diệp Thanh Toàn Trang 11 Trường TH & THCS Phương Ninh tien , lai , x : Real ; BÀI TẬP BẢN BEGIN clrscr ; writeln . TH & THCS Phương Ninh BÀI TẬP CƠ BẢN GV: Diệp Thanh Toàn Trang 1 BÀI TẬP CHƯƠNG 1:CÂU LỆNH IF ….THEN… 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. & THCS Phương Ninh BÀI TẬP CƠ BẢN GV: Diệp Thanh Toàn Trang 13 BÀI TẬP CHƯƠNG 3: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 . GIẢI Procedure Change. Writeln(' Sai ! ') ; Readln ; END . BÀI TẬP CHƯƠNG 2:VÒNG LẬP XĐ 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 . GIẢI Var i : Byte ; (* chỉ số chạy

Ngày đăng: 15/04/2014, 15:14

TỪ KHÓA LIÊN QUAN

w