100 bài tập Turbo Pascal

Bài tập 1.1:

 Viết chương trình tính chu vi và diện tích của hình chữ nhật có chiều dài hai cạnh là a, b (được nhập từ bàn phím).

a. Hướng dẫn:

- Nhập hai cạnh vào hai biến a, b.

- Chu vi hình chữ nhật bằng 2*(a+b); Diện tích hình chữ nhật bằng a*b.

b. Mã chương trình:

 

Program Chu_nhat;

uses crt;

Var a, b, S, CV: real;

Begin

 Write('Nhap chieu dai:'); readln(a);

 Write('Nhap chieu rong:'); readln(b);

 S := a*b;

 CV := (a+b)*2;

 Writeln('Dien tich hinh chu nhat la:',S);

 Writeln('Chu vi hinh chu nhat la:',CV:10:2);

 readln

end.

 

c. Nhận xét: Lệnh write cho phép in ra màn hình một hoặc nhiều mục. Có thể định dạng được số in ra bằng cách qui định khoảng dành cho phần nguyên, khoảng dành cho phần thập phân.

 

doc55 trang | Chuyên mục: Pascal | Chia sẻ: dkS00TYs | Lượt xem: 112853 | Lượt tải: 1download
Tóm tắt nội dung 100 bài tập Turbo Pascal, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
 end;
var x: Phan_so;
Procedure Nhap_Phan_so(Var a:Phan_so);
begin
 with a do
 begin
 Write('Nhap tu so: ');readln(Tu);
 Write('Nhap mau so: '); readln(Mau);
 end;
end;
{-------------------}
Procedure In_Phan_so(a:Phan_so);
Begin
 with x do
 Write('Phan so vua nhap la:',Tu,'/',Mau);
end;
{-------------------}
begin
 clrscr;
 Nhap_Phan_so(x);
 In_Phan_so(x);
 Readln
end.
c. Nhận xét: 
	Ở 8.1 ta khai báo một biến có kiểu record. Ở 8.2 ta khai báo một kiểu Phan_so bằng lệnh Type rồi sau đó mới khai báo biến x có kiểu Phan_so.
Bài tập 8.3
	Thực hiện 8.2 với yêu cầu phân số được nhập dạng a/b.
a. Hướng dẫn: 
b. Mã chương trình: 
Program Phan_So_2;
uses crt;
Type Phan_so = record
 Tu: Integer;
 Mau: Integer;
 end;
var x: Phan_so;
Procedure Nhap_Phan_so(Var a:Phan_so);
var st,st1:string;
 n,m:integer;
begin
 write('Nhap phan so a/b: ');readln(st);
 n:= Pos(st,'/');
 with a do
 begin
 st1:= copy(st,1,n-1);
 val(st1,tu,m);
 st1:= copy(st,n+1,length(st)-n);
 val(st1,Mau,n);
 end;
end;
{-------------------}
Procedure In_Phan_so(a:Phan_so);
Begin
 with x do
 Write('Phan so vua nhap la:',Tu,'/',Mau);
end;
{-------------------}
begin
 clrscr;
 Nhap_Phan_so(x);
 In_Phan_so(x);
 Readln
end.
c. Nhận xét: 
	Ở đây ta lại được một ứng dụng của kiểu string. Với việc dùng string làm bộ đệm việc nhập phân số dễ, gần với thực tế hơn. Tất nhiên, phải xủ lý nhiều mới được phân số cần nhập.
Bài tập 8.4
	Thực hiện 8.1 với yêu cầu sau khi nhập thực hiện rút gọn rối mới in phân số. 
a. Hướng dẫn: 
b. Mã chương trình: 
Program Phan_So_2;
uses crt;
Type Phan_so = record
 Tu: Integer;
 Mau: Integer;
 end;
var x: Phan_so;
{----------------------}
Function UCLN(a,b:integer):integer;
begin
 if a mod b = 0 then UCLN:=b
 else UCLN:=UCLN(b,(a mod b));
end;
{----------------------}
Procedure Nhap_Phan_so(Var a:Phan_so);
var st,st1:string;
 n,m:integer;
begin
 repeat
 write('Nhap phan so : ');readln(st);
 n:= Pos('/',st);
 until n>0;
 with a do
 begin
 st1:= copy(st,1,n-1);
 val(st1,tu,m);
 st1:= copy(st,n+1,length(st)-n);
 val(st1,Mau,n);
 end;
end;
{-------------------}
Procedure In_Phan_so(a:Phan_so);
Begin
 if a.Tu=a.Mau then write(1)
 else
 with a do
 Write(Tu,'/',Mau);
end;
{-------------------}
Procedure Rut_Gon_Phan_so(var a:Phan_so);
var tam: integer;
begin
 tam:=UCLN(a.Tu,a.Mau);
 with a do
 begin
 Tu:=Tu div tam;
 mau:=Mau div tam;
 end;
end;
{--------------------}
begin
 clrscr;
 Nhap_Phan_so(x);
 Rut_gon_phan_so(x);
 write('Phan so sau khi rut gon: ');
 In_Phan_so(x);
 Readln
c. Nhận xét: 
Bài tập 8.5
Viết chương trình cho phép cộng hai phân số với yêu cầu: Mỗi phân số được lưu trong một biến kiểu record.
a. Hướng dẫn: 
b. Mã chương trình: 
Program Phan_So_2;
uses crt;
Type Phan_so = record
 Tu: Integer;
 Mau: Integer;
 end;
var x,y,z: Phan_so;
{----------------------}
Function UCLN(a,b:integer):integer;
begin
 if a mod b = 0 then UCLN:=b
 else UCLN:=UCLN(b,(a mod b));
end;
{----------------------}
Procedure Nhap_Phan_so(Var a:Phan_so);
var st,st1:string;
 n,m:integer;
begin
 repeat
 write('Nhap phan so : ');readln(st);
 n:= Pos('/',st);
 until n>0;
 with a do
 begin
 st1:= copy(st,1,n-1);
 val(st1,tu,m);
 st1:= copy(st,n+1,length(st)-n);
 val(st1,Mau,n);
 end;
end;
{-------------------}
Procedure In_Phan_so(a:Phan_so);
Begin
 if a.Tu=a.Mau then write(1)
 else
 with a do
 Write(Tu,'/',Mau);
end;
{-------------------}
Procedure Rut_Gon_Phan_so(var a:Phan_so);
var tam: integer;
begin
 tam:=UCLN(a.Tu,a.Mau);
 with a do
 begin
 Tu:=Tu div tam;
 mau:=Mau div tam;
 end;
end;
{--------------------}
Procedure Cong_Phan_so(a,b:Phan_so; Var c:Phan_so);
begin
 with c do
 begin
 Tu:=a.Tu*b.Mau + a.Mau*b.Tu;
 Mau:= a.Mau * b.Mau
 end;
 Rut_gon_phan_so(c);
end;
{--------------------}
begin
 clrscr;
 Nhap_Phan_so(x);
 Nhap_Phan_so(y);
 Cong_phan_so(x,y,z);
 In_Phan_so(z);
 Readln
end.
c. Nhận xét: 
Bài tập 8.6
	Viết chương trình cho phép nhập danh sách học viên. Sau khi nhập một học viên chương trình yêu cầu trả lời có nhập tiếp (Y/N). Ấn Y để tiếp tục nhập, ấn N để thôi nhập. Hồ sơ mỗi học viên được quản lý như sau:
Hoso = record
 Holot: string[20];
 Ten: string[10];
 Gioitinh:boolean;
 Ngaysinh: string[10];
 SDD: longint;
 Donvi: string[15];
 end;
a. Hướng dẫn: 
b. Mã chương trình: 
Program Nhan_su;
uses crt;
type Hoso = record
 Holot: string[20];
 Ten: string[10];
 Gioitinh:boolean;
 Ngaysinh: string[10];
 SDD: longint;
 Donvi: string[15];
 end;
var danhsach: array[1..100] of Hoso;
 nhap:Char;
 gt: string;
 i:byte;
Begin
 nhap:='Y';
 i:=0;
 while nhap='Y' do
 begin
 clrscr;
 window(10,10,60,40);
 writeln('------ NHAP HO SO NHAN SU-------');
 writeln;
 i:=i+1;
 writeln('Nhap ho so nguoi thu ',i,':');
 write('Ho lot:');readln(danhsach[i].Holot);
 write('Ten:');readln(danhsach[i].Ten);
 write('Gioi tinh (Nam/Nu):');readln(gt);
 if gt = 'Nu' then danhsach[i].Gioitinh:= true;
 write('Ngay sinh:');readln(danhsach[i].Ngaysinh);
 write('So dien thoai:');readln(danhsach[i].SDD);
 write('Don vi:');readln(danhsach[i].Donvi);
 write('Nhap tiep Y/N');readln(nhap);
 nhap:=upcase(nhap);
 end;
end.
c. Nhận xét: 
Bài tập 8.7
	Viết chương trình cho phép nhập và in danh sách danh sách nữ của lớp với yêu cầu: Sử dụng chương trình con nhập danh sách và chương trình con in một hồ sơ.
a. Hướng dẫn: 
b. Mã chương trình: 
Program Nhan_su;
uses crt;
type Hoso = record
 Holot: string[20];
 Ten: string[10];
 Gioitinh:boolean;
 Ngaysinh: string[10];
 SDD: longint;
 Donvi: string[15];
 end;
Type danhsach = array[1..100] of Hoso;
Var ds: danhsach;
 i:integer;
Procedure Nhap_ho_so(Var ds:danhsach);
var nhap:Char;
 i:byte;
 gt: string;
begin
 nhap:='Y';
 i:=0;
 while nhap='Y' do
 begin
 clrscr;
 writeln('------ NHAP HO SO NHAN SU-------');
 writeln;
 i:=i+1;
 writeln('Nhap ho so nguoi thu ',i,':');
 write('Ho lot:');readln(ds[i].Holot);
 write('Ten:');readln(ds[i].Ten);
 write('Gioi tinh (Nam/Nu):');readln(gt);
 if gt = 'Nu' then ds[i].gioitinh:= true;
 write('Ngay sinh:');readln(ds[i].ngaysinh);
 write('So dien thoai:');readln(ds[i].SDD);
 write('Don vi:');readln(ds[i].Donvi);
 write('Nhap tiep Y/N: ');readln(nhap);
 nhap:=upcase(nhap);
 end;
end;
Procedure In_ho_so(HVien:Hoso);
begin
 with Hvien do
 writeln('|',Holot:20,Ten:10,'|',Ngaysinh:10,'|',SDD:10,'|',Donvi:20,'|');
end;
begin
 nhap_ho_so(ds);
 writeln('DANH SACH HOC VIEN NU');
 writeln;
 i:=1;
 while ds[i].holot'' do
 begin
 if ds[i].gioitinh then in_ho_so(ds[i]);
 i:=i+1;
 end;
 readln
end.
c. Nhận xét: 
Bài tập 8.8
	Phát triển thêm chức năng sắp xếp (Theo tên) để chương trình cho phép nhập, sắp xếp, in danh sách.
a. Hướng dẫn: 
b. Mã chương trình: 
c. Nhận xét: 
Bài tập 8.9
a. Hướng dẫn: 
b. Mã chương trình: 
c. Nhận xét: 
Bài tập 8.10
a. Hướng dẫn: 
b. Mã chương trình: 
c. Nhận xét: 
IX. Dữ liệu kiểu tệp:
Bài tập 9.1
	Viết chương trình cho phép ghi các số lẻ xuống đĩa với tên so_le.dat sau đó đọc và xuất ra màn hình nội dung file này.
a. Hướng dẫn: 
- Thủ tục chuẩn bị ghi file xuống đĩa ( assign, rewrite).
- Kiểm tra nếu là số lẻ if i mod 2 = 1 thì ghi xuống đĩa.
- Thủ tục chuẩn bị đọc file từ đĩa ( assign, reset).
- Đọc và in nội dung.
- Đóng file.
b. Mã chương trình: 
Program File_So_le;
uses crt;
var sole: file of integer;
 i,n,so:integer;
begin
 write('Nhap n: ');readln(n);
 { Thu tuc chuan bi ghi xuong dia}
 assign(sole,'sole.dat');
 rewrite(Sole);
 {Thuc hien ghi cac so le xuong file sole = sole.dat }
 for i:= 1 to n do if i mod 2 = 1 then write(sole,i);
 close(sole);
 writeln('Da ghi xuong file sole.dat');
 readln;
 {Thu tuc chuan bi doc duw lieu tu file tren dia}
 assign(sole,'sole.dat');
 reset(sole);
 {Thuc hien do va in ra man hinh}
 while not eof(sole) do
 begin
 read(sole,so);
 write(so,', ');
 end;
 close(sole);
 readln
end.
c. Nhận xét: 
Bài tập 9.2.
	Viết chương trình tìm các số nguyên tố nhỏ hơn hoặc bằng n ( nhập từ bàn phím) và ghi các số này xuống đĩa.
a. Hướng dẫn: 
- Hàm nguyen_to để kiểm tra một số a có phải là số nguyên tố không.
- Thực hiện như 9.1 thay if i mod 2 = 1 bằng nguyen_to(n)
b. Mã chương trình: 
Program File_Nguyen_to;
uses crt;
var nguyento: file of integer;
 i,n,so:integer;
{--------------------}
Function nguyen_to(a:integer):boolean;
var i: integer;
begin
 nguyen_to:=true;
 for i:=2 to a-1 do if a mod i = 0 then nguyen_to:=false;
end;
{--------------------}
begin
 write('Nhap n: ');readln(n);
 assign(nguyento,'nguyento.dat');
 rewrite(nguyento);
 for i:= 2 to n do if nguyen_to(i) then write(nguyento,i);
 close(nguyento);
 writeln('Da ghi xuong file nguyento.dat');
 readln;
 assign(nguyento,'nguyento.dat');
 reset(nguyento);
 while not eof(nguyento) do
 begin
 read(nguyento,so);
 write(so,', ');
 end;
 readln
end.
c. Nhận xét: 
Bài tập 9.3
	Viết chương trình thực hiện việc cấp số xe mô tô với yêu cầu:
- Cấp số ngẫu nhiên có 4 chữ số.
- Số đã cấp được lưu lại trên đĩa để quản lý.
a. Hướng dẫn: 
- Dùng hàm random để tạo số ngẫu nhiên.
- Lưu số vừa cấp thêm vào file so_xe.dat.
b. Mã chương trình: 
c. Nhận xét: 
Bài tập 9.4
- Đọc file so_xe.dat để xét xem số vừa tạo có trong file này không. Nếu đã có thì quay lại tạo số ngẫu nhiên khác. Lặp cho đến khi tạo được số không có trong file này (chưa cấp ) thì cấp số này.
a. Hướng dẫn: 
b. Mã chương trình: 
c. Nhận xét: 
Bài tập 9.5
a. Hướng dẫn: 
b. Mã chương trình: 
c. Nhận xét: 
Bài tập 9.6
a. Hướng dẫn: 
b. Mã chương trình: 
c. Nhận xét: 
Bài tập 9.7
a. Hướng dẫn: 
b. Mã chương trình: 
c. Nhận xét: 
Bài tập 9.8
a. Hướng dẫn: 
b. Mã chương trình: 
c. Nhận xét: 
Bài tập 9.9
a. Hướng dẫn: 
b. Mã chương trình: 
c. Nhận xét: 
Bài tập 9.10
a. Hướng dẫn: 
b. Mã chương trình: 
c. Nhận xét: 
X. Đồ hoạ và âm thanh:

File đính kèm:

  • doc100 bài tập Turbo Pascal.doc