THÔNG TIN TÀI LIỆU
BÀI TẬP PASCAL CÓ LỜI GIẢI Học Lê Trung (0168 995 4843) 1 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 tính hai ẩn dng ma trận : a 11 x + a 12 y = c 1 a 21 x + a 22 y = c 2 GIẢI Uses Crt; Var a: array[1 2, 1 2] of real; c: array[1 2] of real; d, dx, dy, x, y: real; BEGIN Clrscr; Writeln('Giai he phuong tring tuyen tinh hai an:'); Writeln(' a11x+a12y=c1'); Writeln(' a21x+a22y=c2'); Writeln('Nhap cac he so cua he phuong trinh'); Write('a11='); Readln(a[1,1]); Write('a12='); Readln(a[1,2]); Write('c1='); Readln(c[1]); Write('a21='); Readln(a[2,1]); Write('a22='); Readln(a[2,2]); 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 trình tạo ra một mảng chứa bảng cửu chương . Uses Crt ; Var a : Array[1 10, 2 9] Of Byte ; i, j : Byte ; BEGIN Clrscr ; For i := 1 To 10 Do For j := 2 To 9 Do a[i, j] := i*j ; Writeln(' Bang cuu chuong : ') ; Writeln ; For i := 1 To 10 Do For j := 2 to 9 do Write ( j:4 , 'x' , i:2 , '=' , a[i , j]:2) ; BÀI TẬP PASCAL CÓ LỜI GIẢI Học Lê Trung (0168 995 4843) 2 (* hết 80 cột tự động xuống hng *) Readln ; END . Bài 3 : Viết chương trình nhập hai số nguyn dương m , n . Sau đĩ tính trung bình cộng bình phương cc số nguyn từ m đến n . Var m , n , k , s : Word ; tb : real ; BEGIN Writeln('Nhap 2 so nguyen duong m, n :') ; Write (' m = ') ; Readln(m) ; Write (' n = ') ; Readln(n); If m > n Then (* đỗi chỗ để m <= n *) Begin k := m ; m := n ; n := k ; End ; s := 0 ; For k := m To n do s := s + sqr(k) ; tb := s / (n - m + 1) ; Writeln ('Trung bàinh cong bàimh phuong cac so ' + 'nguyen tu m den n la: ', tb:12:2); Readln ; END . Bài 4 : Viết chương trình nhập từ bn phím cc 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ừ bn phím . Var m , n , i , j : Byte ; a : Array[1 100, 1 100] Of Real; BEGIN Write ('Nhap cac kich thuoc cua mang hai chieu : ') ; Write (' So hang m = ') ; Readln(m) ; Write (' So cot n = ') ; Readln(n) ; Writeln (' Nhap cac phan tu cua mang : ') ; For i := 1 To m Do For j := 1 To n Do Begin Write ('a[', i:2, ', ' , j:2 ,']=') ; Readln(a[i, j]) ; End ; Readln ; END . BÀI TẬP PASCAL CÓ LỜI GIẢI Học Lê Trung (0168 995 4843) 3 Bài 5 : Dy số sau được gọi l dy Fibonaci : a 1 = 1 a 2 = 1 a 3 = 2 a 4 = 3 . . . a n = a n-1 + a n-2 Viết chương trình tính 20 số Fibonaci đầu tin v đưa ra kết quả vo một mảng 20 phần tử . Var a : Array[1 20] Of Byte ; i : Byte ; BEGIN a[1] :=1; a[2] :=1; For i:=3 to 20 do a[i]:=a[i-1]+a[i-2] ; END . Bài 6 : Dy 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 ) Hy lập chương trình tính v gn gi trị của dy vo bàiến mảng . Var a : Array [1 100] Of Word ; i, N : Byte ; S : Real ; BEGIN Write (' Nhap so N>=2 : ') ; Readln(n) ; a[1] := 1 ; a[2] := 2 ; For i := 3 To N Do a[i] := 2*a[i-1]+a[i-2] ; S := 0 ; For i := 1 to N do S := S+1/sqr(a[i]) ; Writeln (' S = ', S:12:6) ; Readln ; END . Bài 7 : Nhập số tự nhin N v viết chương trình tạo mảng bao gồm N số nguyn tố đầu tin . var a:array[1 100,1 100]of byte; BÀI TẬP PASCAL CÓ LỜI GIẢI Học Lê Trung (0168 995 4843) 4 n,i,j,k,l,ba:byte; d:boolean; BEGIN write(' Nhap kich thuoc cua mang hai chieu NxN. N = ');readln(n); for i:=1 to n do for j:=1 to n do begin ba:=0; repeat d:=FALSE; if j>1 then for k:=1 to j-1 do if a[i,k]=ba then d:=true; if i>1 then for k:=1 to i-1 do if a[k,j]=ba then d:=true; ba:=ba+1; until not d; a[i,j]:=ba-1; end; for i:=1 to n do for j:=1 to n do write(a[i,j]:8); readln; END . 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 cc số được nhập sẽ hiện trn mn hình đng tại vị trí của mình trn bảng số . Uses Crt; Var BÀI TẬP PASCAL CÓ LỜI GIẢI Học Lê Trung (0168 995 4843) 5 a : array[1 3, 1 3] of integer ; i, j: byte ; BEGIN Clrscr; Writeln('Nhap mot bang so nguyen kich thuoc 3x3:'); Gotoxy(10, 4); Write(1); Gotoxy(19, 4); Write(2); Gotoxy(28, 4); Write(3); Gotoxy(5, 6); Write(1); Gotoxy(5, 8); Write(2); Gotoxy(5,10); Write(3); For i:=1 to 3 do For j:=1 to 3 do Begin Gotoxy(9*j-1, 2*i+4); Read(a[i, j]); Gotoxy(9*j-1, 2*i+4); ClrEol; Write(a[i, j]:6); End; Readln; END . Bài 9 : a. a. Viết chương trình nhập dữ liệu từ dy đối xứng vo mảng một chiều . b. b. Viết chương trình nhập dữ liệu l ma trận đối xứng vo mảng hai chiều . a) Var a: array [1 100] of integer; n, i: byte; Begin Write('Nhap so phan tu cua day doi xung:'); Readln(n); Writeln('Nhap cac phan tu cua day:'); For i:=1 to (n+1) div 2 do Begin Write('a[', i:2, ']='); Readln(a[i]); a[n-i+1] := a[i]; End; Readln ; BÀI TẬP PASCAL CÓ LỜI GIẢI Học Lê Trung (0168 995 4843) 6 END ; b) Var a: array [1 100, 1 100] of integer; n, i, j: integer; BEGIN Write('Nhap kich thuoc cua mang doi xung: '); Readln(n); Write('Nhap cac phan tu cua mang:'); For i:=1 to n do For j:=1 to i do Begin Write('a[', i:2, ',', j:2, ']='); Readln(a[i, j]); a[j,i]:=a[i,j]; End; Readln ; END ; BÀI TẬP CHƯƠNG 5: XU 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ữ ci tiếng Anh trong một xu kí tự Str . Var A: array [ 'A' 'Z'] of integer; S: string; ch: char; i: integer; BEGIN Write(' Cho mot xau ki tu : '); Readln(s); For ch:= 'A' to 'Z' do A[ch]:=0; For i:=1 to length(s) do Begin If Upcase(S[i]) in (['A' 'Z']) then Begin S[i]:= Upcase(S[i]); A[S[i]]:= A[S[i]]+1; End; BÀI TẬP PASCAL CÓ LỜI GIẢI Học Lê Trung (0168 995 4843) 7 End; For ch:= 'A' to 'Z' do Writeln('So lan xuat hien cua ',ch,' trong xau la: ', A[ch]:4) ; Readln ; END . Bài 2 : Cho số tự nhin n v xu cĩ độ di n . Hy bàiến đổi xu đ cho bằng cch thay đổi trong đĩ : a. a. Tất cả cc dấu ! bằng dấu chấm . b. b. Mỗi một nhĩm cc dấu chấm liền nhau bằng một dấu chấm . c. c. Một nhĩm cc dấu chấm đứng liền nhau bằng dấu ba chấm . a ) Var S: string; i: byte; BEGIN Write(' Cho mot xau ki tu S = '); Readln(S); For i:=1 to length(S) do If S[i] = '!' then S[i]:= '.'; Write( ' Chuoi sau khi da bàien doi la : ', S); Readln; END . b ) Uses crt; Var S : string; i : byte; BEGIN Clrscr; Write(' Cho mot xau ki tu S = '); Readln(S); i:=1; BÀI TẬP PASCAL CÓ LỜI GIẢI Học Lê Trung (0168 995 4843) 8 While i< length(S) do If (S[i]='.')and(S[i+1]='.') then Delete(S,i,1) Else inc(i); Write('Chuoi sau khi da bàien doi la: ' ,S); Readln; END . c ) Uses crt; Var S: string; i, j: byte; BEGIN Clrscr; Write('Nhap xau S='); Readln(S); i:=1; While i<=Length(S) do Begin If S[i]='.' then Begin j:=i; While (S[i]='.')and(i<=length(S)) do inc(i); dec(i); If (i-j)=1 then insert('.',S,i) Else If (i-j)>2 then Begin BÀI TẬP PASCAL CÓ LỜI GIẢI Học Lê Trung (0168 995 4843) 9 Delete(S,j+2,i-j-2); i:=j+1; End; End ; Inc(i); End; Write('Chuoi sau khi bàien doi la: ',S); Readln; END . Bài 3 : Cho số tự nhin n v một dy cc kí tự S 1 , S 2 , … , S n . Hy tìm số tự nhin I đầu tin sao cho cc kí tự S i , S i+1 đều l chữ ci a . Nếu trong dy khơng cĩ những cặp như vậy thì thơng bo . Var S: string; i: integer; BEGIN Write(' Cho mot xau ki tu : '); Readln(S); i:= pos('aa', S); {tìm vị trí xu con 'aa' trong S} If i<>0 then Writeln(' Ton tai "aa" tai vi tri ', i) Else Writeln(' Khong ton tai .') ; Readln; END . Bài 4 : Cho số tự nhin n v dy cc kí tự S 1 , S 2 , … , S n . Bàiết rằng trong dy cĩ ít nhất một dấu phẩy . Hy tìm số tự nhin i sao cho : a. a. S i l dấu phẩy đầu tin . b. b. S i l dấu phầy cuối cng . a ) Var S: string; i: integer; BEGIN Write('Cho mot xau S co dau ",": '); Readln(S); i:= pos(',', S); (* vị trí của dấu ',' trong S *) If i<> 0 then Write(' Vi tri thoa man la: ', i); BÀI TẬP PASCAL CÓ LỜI GIẢI Học Lê Trung (0168 995 4843) 10 Readln; END . b ) Var S: string; i: integer; BEGIN Write('Cho mot xau S co dau ",": '); Readln(S); i:= length(S); While (i>=1)and(S[i] <> ',' ) do i:=i -1; If i>=1 then Write('So thu tu thoa man la: ', i) Else Write('Khong ton tai.'); Readln; END . Bài 5 : Viết chương trình nhập một xu kí tự , sau đĩ chỉ ra xem xu đĩ cĩ phải l xu đối xứng khơng ( xu đối xứng l xu cĩ cc kí tự giống nhau v đối xứng nhau qua điểm giữa xu , ví dụ ‘ABBA’ hoặc ‘ABCBA’ ) . Uses Crt; Var St : string; dx : Boolean; i, len: byte; BEGIN Clrscr; Write(' Nhap xau St = '); Readln(St); dx:= True; i:=1; len:= Length(St); While dx and (i<=(len div 2)) do Begin dx:=(St[i] = St[len - i+1]); inc(i); End; If dx then Write(' St la xau doi xung ') Else Write(' St khong phai la xau doi xung ') ; Readln; END . Bài 6 : Cho một xu kí tự S . Hy viết chương trình tính xem trong S cĩ bao nhiu loại kí tự khc nhau ( phn bàiệt chữ in hoa với chữ in thường ) . Ví dụ với S l “Pascal” ta cĩ đp số l 5 . Var S: string; i, j, dem: integer; t: boolean; BEGIN Write('Cho mot xau ki tu S: '); Readln(S); dem:=0; For i:=1 to length(S) do Begin t:=false; For j:=1 to i-1 do if (S[j]=S[i]) then t:=true; If not t then dem:= dem+1; End; [...]... #32) do Delete(S,length(S),1); Write('Chuoi sau khi da bàien doi la: ', S); Readln; END BÀI TẬP CHƯƠNG 6: DỮ LIỆU KIỂU TẬP Bài 1 : Bạn hy viết hm Card(A) đếm số phần tử của tập hợp A cho trước cĩ kiểu Set Of 0 99 (* hm đếm số phần tử của tập hợp *) Học Lê Trung (0168 995 4843) 11 BÀI TẬP PASCAL CÓ LỜI GIẢI Uses Crt; Type Tap=set of 0 99; Const inp='Number.dat'; Var S : Tap; i : byte; Procedure Nhap;...BÀI TẬP PASCAL CÓ LỜI GIẢI Write('So ki tu khac nhau cua xau S la: ', Dem); Readln; END Bài 7 : Viết chương trình nhập một xu kí tự v bài n đổi chng thnh tồn chữ in hoa Var S : string; i : integer; BEGIN Write('Cho mot xau ky tu: '); Readln(S); For i:=1 to length(S) do If S[i] in ['a' 'z'] then S[i]:= Upcase(S[i]); Write('Chuoi sau khi da bàien doi la: ', S); Readln; END Bài 8 : Họ tn... Xem Học Lê Trung (0168 995 4843) 13 BÀI TẬP PASCAL CÓ LỜI GIẢI Sua chua Loai bo Nhap them Thoat Lua chon cua ban : _ Sau đĩ đợi g phím Chương trình phải đợi cho tới khi phím g vo l một trong cc chữ số 1 5 hoặc cc chữ ci đầu của cc tuỳ chọn thì thơng bo phím g vo hợp lệ v kết thc chương trình Trong chương trình phải dng một tập hợp để kiểm tra việc nhập gi trị cho bài n từ bn phím 2 2 3 3 4 4 5 5 (*... '); End; Readln; END Bài 5 : Hy lập chương trình nhập vo một xu nhị phn Cc kí tự nhập vo khơng hợp lệ bị bỏ qua (* nhập một xu nhị phn *) Uses Crt; Const bàit : set of char= ['0','1']; Var ch: char; st: string; BEGIN Clrscr; st:=''; Write('Nhap vao mot xau nhi phan : '); Repeat ch:= Readkey; If ch in bàit then begin st:=st+ch; Write(ch); end Học Lê Trung (0168 995 4843) 14 BÀI TẬP PASCAL CÓ LỜI GIẢI... 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 cĩ chức năng thm phần tử vo tập hợp trực tiếp từ bn phím v loại bớt phần tử khỏi tập hợp cũng trực tiếp từ bn phím (* loai bo cac phan tu khoi tap hop *) Uses Crt; Var tap: set of char; ch: char; BEGIN tap:=[]; Writeln('Nhap cac... tap:=tap-[ch]; Writeln(ch); Until not(ch in ['a' 'z']); Writeln('Cac phan tu con lai cua tap hop la:'); For ch:='a' to 'z' do Học Lê Trung (0168 995 4843) 15 BÀI TẬP PASCAL CÓ LỜI GIẢI If ch in tap then Write(ch,' '); Readln; END BÀI TẬP CHƯƠNG 7: KIỂU RECORD Bài 1 : Thơng tin về mỗi học sinh gồm : Họ đệm : một xu 25 kí tự Tn : một xu 10 kí tự Tuổi : một số nguyn hai chữ số Lớp : một xu hai chữ số... 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 : Hy lập chương trình tạo một tệp số nguyn chứa cc số nguyn tố nhỏ hơn 10000 theo thứ tự tăng dần (* Tạo file số nguyn tố nhỏ hơn 10000 *) Uses Crt; Const N=10000; Học Lê Trung (0168 995 4843) 23 BÀI TẬP PASCAL CÓ LỜI GIẢI Var i , j : Integer; f: File of Integer; a: Array[2 N] of boolean;... In_kq; END BÀI TẬP CHƯƠNG 10: ĐỒ HỌA Bài 1 : Vẽ hình chữ nhật cĩ tm trng với tm mn hình , cc cạnh song song v tỉ l với cc cạnh mn hình , kích thước lớn dần theo thời gian (* Hình chữ nhật thay đổi kích thước *) Uses Crt,Graph; Var Gd,Gm,x,y: Integer; tl: real; BEGIN Gd:=Detect; InitGraph(Gd,Gm,''); If GraphResult GrOk Then Halt ; tl:=GetMaxY/GetMaxX; Học Lê Trung (0168 995 4843) 31 BÀI TẬP PASCAL... cịn cĩ thm trường Điểm chứa điểm trung bình của học sinh trong năm học Hy lập chương trình : a a Hiển thị ln mn hình danh sch 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ở ln v cao nhất trong khối b b Lập danh sch học sinh trong năm học mới , bài t một học sinh cĩ điểm trung bình từ 5.0 trở ln thì được ln lớp Ch ý : lớp 10A ln lớp 11A , lớp 11A ln 12A Kết quả chứa... thuc '); Readln; END Bài 5 : Cho file bản ghi f chứa dữ liệu về kho sch , dữ liệu về mỗi cuốn sch được chứa trong một bản ghi gồm 3 trường mang thơng tin về : Họ tn tc giả : một xu 26 kí tự Tn sch : một xu 40 kí tự Năm xuất bản : một số nguyn 4 chữ số Học Lê Trung (0168 995 4843) 20 BÀI TẬP PASCAL CÓ LỜI GIẢI Hăy lập chương trình nhập dữ liệu vo kho sch , sau đĩ tìm ra : Những cuốn sch của . Write('Chuoi sau khi da bàien doi la: ', S); Readln; END . BÀI TẬP CHƯƠNG 6: DỮ LIỆU KIỂU TẬP Bài 1 : Bạn hy viết hm Card(A) đếm số phần tử của tập hợp A cho trước cĩ kiểu. BÀI TẬP PASCAL CÓ LỜI GIẢI Học Lê Trung (0168 995 4843) 1 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 tính. ch:=Readkey; Until ch = #13; END . Bài 7 : Viết chương trình cĩ chức năng thm phần tử vo tập hợp trực tiếp từ bn phím v loại bớt phần tử khỏi tập hợp cũng trực tiếp từ bn phím . (* loai
Ngày đăng: 14/02/2015, 09:00
Xem thêm: tổng hợp những bài tập passcal nâng cao bồi dưỡng.