1. Trang chủ
  2. » Giáo án - Bài giảng

bài tập Pascal hay(có đáp án)

48 2K 20

Đ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 48
Dung lượng 281 KB

Nội dung

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ữ t

Trang 1

Bài tập chương 1: CÚ LỆNH IF ….THEN…

* Bài 1 : Nhập ba số a,b,c bất kì Hãy kiểm tra xem ba số nó có thể là độ dài của tam giác hay tam giác không? Thông báo lên màn hình “thỏa mãn” hay ‘ Không thỏa mãn”

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ì

Nếu các số lớn hơn 10 và nhỏ hơn 20 thì tính tổng của chúng Sau đó, in ra màn hình :So cac so >10 và

<20 là : ( gia tri ) ;Tong cua chung la : ( gia tri )

Writeln (' So cac so >10 va <20 la : ', Dem ) ;

Writeln (' Tong cua chung la :', Tong ) ;

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 ;

Trang 2

Write (' Doc Ngay, Thang, Nam : ') ;

Readln ( Ngay , Thang , Nam ) ;

Nam := 1900 + ( Nam mod 1900 ) ;

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 ') ;

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 ) ;

Trang 3

Writeln (' Diem van : ', Van ) ;

Writeln (' Diem toan : ', Toan ) ;

Writeln (' Diem ngoai ngu : ', Ngoaingu) ;

Writeln (' Tong diem : ', Tongdiem) ;

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

If ( (N + M) mod 2 = 0 ) Then Writeln(' Dung ! ')

Else Writeln(' Sai ! ') ;

Trang 4

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)

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 :

Trang 5

Write (' Cho so a : ') ; Readln(a) ;

Write (' Cho so mu n : ') ; Readln(n) ;

Trang 6

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 : 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

Write(' Do dai cua day so N = ') ; Readln (N) ;

Writeln (' Nhap day so : ') ;

Trang 7

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 : ') ;

* Bài 10 : 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âuGIẢI

writeln (' Chuong trinh tinh thoi gian rut tien lai ') ;

write (' So tien lai muon rut ra : ') ; readln(x) ;

writeln (' Ban phai gui tien trong ', thang div 12 , ' nam ',

thang mod 12 ,' thang ') ;

Trang 8

writeln (' Khi do so tien ban rut ra duoc la ', tien:12:2 ,' dong ') ;

Writeln (' Tim USCLN cua N so :') ;

Write (' Nhap so N : ') ; Readln(n) ;

BÀI TẬP CHƯƠNG 3: CẤU TRÚC DỮ LIỆU MẢNG

Bài 1:Lập phương trình tạo ra một mảng chứa bảng cửu chương

For j := 2 To 9 Do a[i, j] := i*j ;

Writeln(' Bang cuu chuong : ') ; Writeln ;

Trang 9

Writeln ('Trung binh cong bimh phuong cac so '

+ 'nguyen tu m den n la: ', tb:12:2);

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 : ') ;

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ử

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

Var a : Array [1 100] Of Word ;

i, N : Byte ;

S : Real ;

Trang 10

Bài 8 : 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

Writeln('Nhap cac phan tu cua day:');

For i:=1 to (n+1) div 2 do

Trang 11

BÀI TẬP CHƯƠNG 4: 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 ( 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 *)

Trang 12

Procedure Insert ( St1 : String ; Var St2 : String ;Vt : Byte ) ;

(* chèn xâu St1 vào St2 bắt đầu từ vị trí Vt *)

_ 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

GIẢI

Uses Crt;

Var a, b, c: real ;

(*================================*)

Procedure Nhap(Var a, b, c: real);

Procedure input (Var a: real; tenbien: Char);

Trang 13

Begin

If (a<b+c) and (b<a+c) and (c<a+b) then

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;

Writeln('Giai phuong trinh X+Y+Z=12 trong pham vi '

+ 'so nguyen khong am voi dieu kien x<4');

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

GIẢI

Uses Crt;

Var N, a, b, c, X, Y, Z, i: Integer;

Trang 14

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

Function kt(ch: char; st: string): boolean;

(* Kiểm tra xem kí tự Ch có trong xâu St không Nếu có thì

hàm trả về giá trị True Nếu không thì hàm trả về giá trị False *)

Trang 15

If (not kt(s1[i],kq)) and (kt(s1[i],s2)) then

Compare(xau1, xau2, xau);

If xau<>'' then Writeln('Xau chung la: ',xau)

Else Writeln('Khong co ki tu nao trong ca hai xau ');

Write('Nhan ENTER de ket thuc ');

Var S: array[1 M] of string;

max, min, i, j, n: byte;

(*===============================*)

Function D(U,V: string): byte;

(*Trả về tổng số loại kí tự không giống nhau

For id:=1 to length(U) do

If (pos(U[id],V)=0) and (pos(U[id],luu)=0) then

luu:=concat(luu,U[id]);

For id:=1 to length(V) do

If(pos(V[id],U) = 0) and (pos(V[id],luu)=0) then

Writeln(#7,'Co ',n,' xau ki tu nen khong the '

+ 'so sanh duoc');

Until n>=2;

Writeln('Nhap ',n,' xau ki tu :');

For i:=1 to n do

Trang 16

If max<d(S[i],S[j]) then max:=d(S[i],S[j]);

If min>d(S[i],S[j]) then min:=d(S[i],S[j]);

2 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 3 Thoát khỏi chương trình

Writeln('So ',N,' khong the phan tich thanh '

+ 'tich cua cac so nguyen to')

Trang 17

Write(' Cho mot xau ki tu : '); Readln(s);

For ch:= 'A' to 'Z' do A[ch]:=0;

For i:=1 to length(s) do

Trang 18

b 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 c Một nhóm các 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 bien doi la : ', S);

While i< length(S) do

If (S[i]='.')and(S[i+1]='.') then Delete(S,i,1)

Trang 19

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

Var S: string;

i: integer;

BEGIN

Write(' Cho mot xau ki tu : '); Readln(S);

i:= pos('aa', S); {tìm vị trí xâu 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ự 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

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);

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

Trang 20

If dx then Write(' St la xau doi xung ')

Else Write(' St khong phai la xau doi xung ') ;

For j:=1 to i-1 do if (S[j]=S[i]) then t:=true;

If not t then dem:= dem+1;

Trang 21

For i:=1 to length(S) do

If S[i] in ['a' 'z'] then S[i]:= Upcase(S[i]);

Write('Chuoi sau khi da bien doi la: ', S);

If Hoten[1] in Chu then Hoten[1]:=Upcase(Hoten[1]);

For i:=2 to len do

If (Hoten[i-1]=#32)and(Hoten[i] in Chu) then

While (S[length(S)] = #32) do Delete(S,length(S),1);

Write('Chuoi sau khi da bien doi la: ', S);

Trang 22

Function Card(S: Tap): byte;

Var i,n: byte;

Trang 23

For i:=1 to n do Read(f,ds[i]);

Trang 24

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

Trang 25

Until not(ch in ['a' 'z']);

Writeln('Cac phan tu cua tap hop la:');

Trang 26

Writeln('Cac phan tu con lai cua tap hop la:');

  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

Writeln('Thong tin hoc sinh thu ',i);

Write('Cho ho lot : '); Readln(ds[i].holot);

Write('Cho ten : '); Readln(ds[i].ten);

Write('Cho tuoi : '); Readln(ds[i].tuoi);

Write('Cho lop : '); Readln(ds[i].lop);

Trang 27

  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

(* Doc tu mot file ban ghi *)

  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

(* Doi kieu ban ghi *)

Trang 28

a 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 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

(* Khen thuong va len lop *)

Trang 29

Var ds: array [1 100] of Danhsach;

max10:=0; max11:=0; max12:=0;

For i:=1 to n do With ds[i] do

Begin

l:=copy(lop,1,2);

If (l='10')and(diem>max10)and(diem>8.0) then max10:=diem

Else If (l='11')and(diem>max11)and(diem>8.0) then max11:=diem

Else If (l='12')and(diem>max12)and(diem>8.0) then max12:=diem;

End;

Writeln('Hoc sinh gioi nhat khoi 10 : ');

For i:=1 to n do With ds[i] do

If (copy(lop,1,2)='10')and(diem>=max10) then

Writeln(holot:20,ten:10,tuoi:4,lop:5,diem:5:1);

Writeln('Hoc sinh gioi nhat khoi 11 : ');

For i:=1 to n do With ds[i] do

If (copy(lop,1,2)='11')and(diem>=max11) then

Writeln(holot:20,ten:10,tuoi:4,lop:5,diem:5:1);

Writeln('Hoc sinh gioi nhat khoi 12 : ');

For i:=1 to n do With ds[i] do

If (l='10')and(diem>=5.0) then lop:='11'+lop[3]

Else If (l='11')and(diem>=5.0) then lop:='12'+lop[3]

Trang 30

Else If (l='12')and(diem>=5.0) then lop:='DTN';

End;

Assign(f,'bai4n.dat'); Rewrite(f);

For i:=1 to n do With ds[i] do

If lop<>'DTN' then Write(f,ds[i]);

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

Trang 31

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')

While (i<=n)and(ds[i].tensach<>ten) do i:=i+1;

If (i>n) then Writeln('Khong tim duoc')

Writeln('1 Tim kiem theo tac gia va nam xuat ban.');

Writeln('2 Tim kiem theo ten sach');

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;

Ngày đăng: 23/01/2015, 17:00

TỪ KHÓA LIÊN QUAN

w