Thông tin tài liệu
Bài tập ngôn ngữ lập trình PasCal Biên soạn: Hoàng Đức Hà Bài tập chơng 1 Sử dụng 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 . Bài 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 ) Bài 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 ; 1 Bài tập ngôn ngữ lập trình PasCal Biên soạn: Hoàng Đức Hà 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 . Bài 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 . Bài 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 ') ; 5 : Writeln (' Thu Sau ') ; 6 : Writeln (' Thu Bay ') ; End ; 2 Bài tập ngôn ngữ lập trình PasCal Biên soạn: Hoàng Đức Hà 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 . Bà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 ; 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 . Bài giải: Uses Crt ; Var a , b , T : Real ; Pt : Char ; 3 Bài tập ngôn ngữ lập trình PasCal Biên soạn: Hoàng Đức Hà 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 : x 2 + ( m 2 ) x + 1 = 0 ở đây m là tham số thực tuỳ ý . Bài 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 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. Bài 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 ! ') ; 4 Bµi tËp ng«n ng÷ lËp tr×nh PasCal Biªn so¹n: Hoµng §øc Hµ Readln ; END . 5 Bài tập ngôn ngữ lập trình PasCal Biên soạn: Hoàng Đức Hà Bài tập chơng 2 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 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) . Bài 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 *) 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 . Bài 3 : Cho số tự nhiên n , hãy lập trình để tính các tổng sau : a. a. 1 + 1/2 2 + 1/3 2 + + 1/n 2 b. b. 1 + 1/2! + 1/3! + + 1/n! Bài giải: a) Var n , i : Word ; S : Real ; BEGIN Write (' Nhap n : ') ; Readln (n) ; 6 Bài tập ngôn ngữ lập trình PasCal Biên soạn: Hoàng Đức Hà 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 . 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 ) Bài 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 . Bài giải: Uses Crt ; Var i , n : Integer ; tong: Real ; BEGIN Clrscr ; Write (' Cho so tu nhien n : ') ; Readln (n) ; tong :=0 ; i :=1 ; 7 Bài tập ngôn ngữ lập trình PasCal Biên soạn: Hoàng Đức Hà 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 . Bài giải: 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 . Bài 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 . Bài 8 : 8 Bài tập ngôn ngữ lập trình PasCal Biên soạn: Hoàng Đức Hà 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 . Bài 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. Bài giải: 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; 9 Bài tập ngôn ngữ lập trình PasCal Biên soạn: Hoàng Đức Hà 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 . Bài 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) ; 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 ) ; 10 [...]... ; a[i+1] := d ; Until a[i] = 0 ; Writeln (' USCLN cua ', N ,' so la : ', a[n] ) ; Readln ; 11 Bài tập ngôn ngữ lập trình PasCal END Biên soạn: Hoàng Đức Hà 12 Bài tập ngôn ngữ lập trình PasCal Biên soạn: Hoàng Đức Hà Bài tập chơng 3 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 giải: Procedure Change ( n : integer ; Var St : String ) ; (* thủ tục chuyển số tự nhiên n... Begin Write('a[', i:2, ',', j:2, ']='); Readln(a[i, j]); 23 Bài tập ngôn ngữ lập trình PasCal a[j,i]:=a[i,j]; End; Readln ; END ; Biên soạn: Hoàng Đức Hà 24 Bài tập ngôn ngữ lập trình PasCal Biên soạn: Hoàng Đức Hà Bài tập chơng 5 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 giải: Var A: array [ 'A' 'Z'] of integer; S: string; ch:... thì kết quả sẽ là Ha noi Bài giải: Var S: String; BEGIN Write('Cho mot xau ky tu: '); Readln(S); While S[1] = #32 do Delete(S,1,1); While (S[length(S)] = #32) do Delete(S,length(S),1); Write('Chuoi sau khi da bien doi la: ', S); 28 Bài tập ngôn ngữ lập trình PasCal Readln; END Biên soạn: Hoàng Đức Hà 29 Bài tập ngôn ngữ lập trình PasCal Biên soạn: Hoàng Đức Hà Bài tập chơng 6 Bài 1 : Bạn hãy viết hàm... Write(ch,' '); 33 Bài tập ngôn ngữ lập trình PasCal Biên soạn: Hoàng Đức Hà Writeln; Writeln('Ban muon bo cac phan tu nao khoi tap hop:'); Repeat ch:=ReadKey; 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 If ch in tap then Write(ch,' '); Readln; END 34 Bài tập ngôn ngữ lập trình PasCal Biên soạn: Hoàng Đức Hà Bài tập chơng 7... ',Card(S),' phan tu.'); Readln; END 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 giải: Uses Crt; Const n=5; Type Danhsach=record holot: string[25]; ten: string[10]; tuoi: 0 99; lop: string[3]; End ; Var ds: array [1 20] of Danhsach; i,j: byte; 30 Bài tập ngôn ngữ lập trình PasCal f: file of Danhsach;... Else Write(' St khong phai la xau doi xung ') ; Readln; END 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 giải: Var S: string; i, j, dem: integer; t: boolean; BEGIN 27 Bài tập ngôn ngữ lập trình PasCal Biên soạn: Hoàng Đức Hà Write('Cho mot xau ki tu S: ');.. .Bài tập ngôn ngữ lập trình PasCal Biên soạn: Hoàng Đức Hà Until i > m ; End ; If m > 0 Then For k := 1 To m Do Write ( b[k] : 4 ) ; Readln ; END 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 giải: uses crt ; var... tai "aa" tai vi tri ', i) Else Writeln(' Khong ton tai ') ; Readln; END 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 a Si là dấu phẩy đầu tiên b b Si là dấu phầy cuối cùng Bài giải: a ) Var S: string; 26 Bài tập ngôn ngữ lập trình PasCal i: integer; Biên soạn: Hoàng Đức Hà BEGIN Write('Cho mot xau S co... dem:=0; 18 Bài tập ngôn ngữ lập trình PasCal Biên soạn: Hoàng Đức Hà Repeat If (N1 mod u=0) then Begin 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 19 Bài tập ngôn... nguyen to :'); nhap(N); phantich(N); Write('Nhan Enter de ket thuc '); Readln; END 19 Bài tập ngôn ngữ lập trình PasCal Biên soạn: Hoàng Đức Hà Bài tập chơng 4 L#m viƯc víi 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 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 . tr×nh PasCal Biªn so¹n: Hoµng §øc Hµ Readln ; END . 5 Bài tập ngôn ngữ lập trình PasCal Biên soạn: Hoàng Đức Hà Bài tập chơng 2 Sử dụng lệnh For Bài 1. ng«n ng÷ lËp tr×nh PasCal Biªn so¹n: Hoµng §øc Hµ END . 12 Bài tập ngôn ngữ lập trình PasCal Biên soạn: Hoàng Đức Hà Bài tập chơng 3 Bài 1 : Dùng thủ tục
Ngày đăng: 21/06/2013, 01:26
Xem thêm: Bài tập PasCal, Bài tập PasCal, Nhập dữ liệu nhập số tự nhiên n .