1. Trang chủ
  2. » Thể loại khác

GIẢI VÀ SƯU TẦM CÁC BÀI TOÁN PASCAL Ở TRUNG HOC CƠ SỞ docx

52 986 22

Đ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 52
Dung lượng 299,5 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ữ

Trang 2

I 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

and ( a > 0 ) and ( b > 0 ) and ( c > 0 ) Then

Writeln (' Thoa man : Day la 3 canh cua mot tam giac ')

So cac so >10 và <20 la : ( gia tri )

Tong cua chung la : ( gia tri )

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

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

Trang 3

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

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

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 :

Trang 4

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

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

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

Trang 5

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

Else Writeln(' Sai ! ') ;

Readln ;

END

Trang 6

p := 1; (* cho giá tṛ 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 ;

Writeln (' Go phim 50 lan ') ;

Trang 8

Writeln (' Tong can tim la : ', tong:12:6 ) ;

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

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

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

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

Trang 9

While ( j < i ) and ( A[j] <> A[i] ) Do inc(j) ;

If j = i Then Writeln( A[i] ) ;

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

Writeln (' Nhap day so : ') ;

Trang 10

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

Write (' Nhap do dai cua day so nguyen : ') ; Readln(n) ;

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

Trang 11

Write (' Nhap do dai cua day so nguyen : ') ; Readln(n) ;

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

Trang 12

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

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

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

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

Trang 13

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

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

Dùng thủ tục chuyển một số tự nhiên n cho trước sang hệ cơ số 2

Procedure Change ( n : integer ; Var St : String ) ;

Trang 14

Hãy viết lại thủ tục Insert đối với một chuỗi kí tự cho trước tùy ý

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

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

Trang 15

_ 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

Uses Crt;

Var a, b, c: real ;

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

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

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

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

Trang 16

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

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

Trang 17

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ó thh

hàm trả về giá tṛ True Nếu không thh hàm trả về giá tṛ False *)

For i:=1 to length(s1) do

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

Uses Crt;

Const M=100;

Var S: array[1 M] of string;

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

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

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

Trang 18

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

trong 2 xâu U và V *)

Var k, id : byte;

s, luu : string;

Begin

luu:=''; (* Xâu roăng *)

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

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

Trang 19

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

+ 'tich cua cac so nguyen to')

Trang 20

Write('Nhan Enter de ket thuc ');

Writeln('He co nghiem duy nhat :');

Writeln('x=', x:0:2, ' ; y=', y:0:2);

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

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

For i := 1 To 10 Do

Trang 21

For j := 2 to 9 do Write ( j:4 , 'x' , i:2 , '=' , a[i , j]:2) ;

(* hết 80 cột tự động xuống hàng *)

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

Trang 22

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 ;

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;

Trang 23

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ừ dãy đối xứng vào mảng một chiều

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

Var a: array [1 100, 1 100] of integer;

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

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

For i:=1 to length(s) do

a b Mỗi một nhóm các dấu chấm liền nhau bằng một dấu chấm

b 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

Trang 25

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 26

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ậythì thông báo

Var S: string;

i: integer;

BEGIN

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

i:= pos('aa', S); {thm ṿ trí xaâu con 'aa' trong S}

If i<>0 then Writeln(' Ton tai "aa" tai vi tri ', i)

Else Writeln(' Khong ton tai ') ;

a a Si là dấu phẩy đầu tiên

a 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); (* ṿ trí cuûa daá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.');

Trang 27

Write(' Nhap xau St = '); Readln(St);

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;

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 bien doi la: ', S);

Trang 28

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

Viết chương trình nhập xãu kí tự từ bàn phím , sau đó gọt xâu lại bằng cách cách xoá

đi các kí tự trống ở hai đầu của xâu Ví dụ nếu nhập xâu “ Ha noi “ , thì kết quả sẽ là

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

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

Trang 29

Var i,n: byte;

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

Trang 30

Lua chon cua ban : _

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 32

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

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

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

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

Trang 33

• · Họ đệm : một xâu 25 kí tự

• · 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

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

(* Nhập danh sách học sinh từ bàn phím *)

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

• · 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 *)

Uses Crt;

Const n=5;

Type Danhsach=record

holot: string[25];

Trang 34

• · Họtên : một xâu 35 kí tự

• · 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 35

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 36

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]

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

Close(f);

End;

BEGIN

ClrScr;

Trang 37

• · 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

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

Trang 38

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

• · 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

VIII CẤU TRÚC DỮ LIỆU KIỂU FILE

Bài 1:

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

Trang 39

Type String10 = String[10];

Trang 41

Procedure Copyfile(fi1,fi2: string);

Var nread,nbuf: word;

buf: array [1 1024] of byte;

Cách 2 : Kiểm tra xem số lượng các từ Begin và End cĩ 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;

Ngày đăng: 15/03/2014, 11:20

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w