Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 38 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
38
Dung lượng
241,77 KB
Nội dung
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