Bài tập pascal cơ bản đến nâng cao theo chương trình TIN HỌClớp 11 không phân ban Nhằm giúp các bạn học sinh lớp 11 tiếp cận với ngôn ngữ lập trình Pascal một cách dễ dàng và vận dụng và
Trang 1Bài tập pascal cơ bản đến nâng cao theo chương trình TIN HỌC
lớp 11 không phân ban
Nhằm giúp các bạn học sinh lớp 11 tiếp cận với ngôn ngữ lập trình Pascal một cách dễ dàng và vận dụng vào các ngôn ngữ lập trình khác trong tin học, tôi sưu tầm và biên soạn một số bài toán cơ bản đến nâng cao có trong chương trình của lớp 11 không phân ban Các chương trình nhằm mục đích tham khảo cho các bạn ham mê tin học và là tài liệu chuẩn bị cho các bài kiểm tra về môn tin học.
Nha trang tháng 3/2011
Trang 2Phần I : CÁC BÀI TẬP CƠ BẢNBài 1: Tìm giá trị lớn nhất trong 4 số a, b, c, d (a, b, c, được nhập từ bàn phím).
Program Program TIM_SO_LON_NHAT;
Write('Nhap d='); Readln(d); max :=a;
If b>max then max :=b; If c>max then max :=c; if d>max then max :=d;
Writeln('So lon nhat la : ',max : 4 : 2);
Writeln(‘nhap so thu nhat’); readln(a);
Writeln(‘nhap so thu hai’); readln(b);
Writeln(‘nhap so thu ba’); readln(c);
If(a+b>c) And(a+c>b) And(b+c>a) then
Begin
Cv :=a+b+c; p :=c/2;s :=sqrt(p*(p-a)*(p-b)*(p-c));
Writeln(‘ba so vua nhap la ba canh cua tam giac’);
Trang 3Writeln(‘ chu vi cua tam gia la’, cv : 4 : 2, ‘ dien tich cua tam giac la’, s:6 :2); End
Else Writeln(‘ba so vua nhap khong phai la ba canh cua tam giac’);
Writeln(‘nhap do cao cua vat’); readln(h);
Writeln(‘nhap gia toc’); readln(g);
Write ('Nhap a= '); readln(a);
Write ('Nhap b= '); readln(b);
Trang 4Writeln('GIAI PHUONG TRINH BAC II : ');
Trang 5Writeln('Phuong trinh co vo so nghiem') Else Writeln('Phuong trinh vo nghiem') Else Writeln('Phuong trinh co mot nghiem : x=',-c/b : 4 : 2) Else
Trang 6dd :=a*d-b*c; dx :=m*d-b*n; dy :=a*n-c*m; If dd=0 then
If (dx=0) And (dy=0) then
Writeln('He vo so nghiem hoac vo nghiem')
Else writeln('He vo nghiem') Else
Begin Write('He co nghiem : '); Writeln('x=',dx/dd : 4 : 2,' va y=',dy/dd : 4 : 2); End;
Readln
End.
Bài 6: Nhập vào thời gian 1 công việc nào đó là x giây Hãy chuyển đổi và viết ra màn hình số thời gian trên dưới dạng bằng bao nhiêu giờ, bao nhiêu phút, bao nhiêu giây Program DOI_GIO_PHUT_GIAY;
Bài 7: Nhập vào tâm và bán kính của một đường tròn Sau đó nhập vào một điểm
A(x, y) bất kì và kiểm tra xem nó có thuộc đường tròn hay không?
Trang 7Write('Nhap ban kinh R= '); readln(r);
Write('Nhap hoanh do tam duong tron = '); readln(x0);
Write('Nhap tung do tam duong tron = '); readln(y0);
Write('Nhap hoanh do diem a = '); readln(xa);
Write('Nhap tung do diem a = '); readln(ya);
Bài 7 b: Viết chương trình nhập vào tâm và bán kính hai đường tròn, xác định vị trí tương đối của hai đường tròn đó.
Writeln('*Duong tron thu nhat');
Write(' +Ban kinh : '); Readln(R1);
Write(' +Toa do x : '); Readln(x1);
Write(' +Toa do y : '); Readln(y1);
writeln;
Writeln('*Duong tron thu hai');
Write(' +Ban kinh : '); Readln(R2);
Write(' +Toa do x : '); Readln(x2);
Write(' +Toa do y : '); Readln(y2);
Kc :=Sqrt(Sqr(x1 – x2) + Sqr(y1 – y2));
Tong :=R1 + R2; Hieu :=ABS(R1 – R2);
Trang 8If (Kc = 0) AND (Hieu = 0) Then
Writeln('-Hai duong tron trung nhau')
Else
If (Hieu > Kc) Then
Writeln('-Hai duong tron long nhau')
Else If (Tong = Kc) OR (Hieu = Kc) Then
Writeln('-Hai duong tron tiep xuc nhau') Else If (Tong > Kc) AND (Hieu < Kc) Then Writeln('-Hai duong tron cat nhau ') Else If (Tong < Kc) Then
Writeln('-Hai duong tron o ngoai nhau-');
Writeln('Khong tinh duoc do x la so am');
Readln;
End.
Bài 9: Tính n!
Trang 9Write (' Doc Ngay : '); Readln ( Ngay );
Write (' Doc Thang : '); Readln ( Thang );
Write (' Doc Nam : '); Readln ( Nam );
Nam :=1900 + ( Nam mod 1900 );
0 : Writeln (‘ngay ’,ngay,’ thang ',thang,’ nam ’,nam,’ la ngay Chu Nhat ');
1 : Writeln ('ngay ’,ngay,’ thang ',thang,’ nam ’,nam,’ la ngay Thu Hai ');
Trang 102 : Writeln ('ngay ’,ngay,’ thang ',thang,’ nam ’,nam,’ la ngay Thu Ba ');
3 : Writeln (‘ngay ’,ngay,’ thang ',thang,’ nam ’,nam,’ la ngay Thu Tu ');
4 : Writeln (‘ngay ’,ngay,’ thang ',thang,’ nam ’,nam,’ la ngay Thu Nam ');
5 : Writeln ('ngay ’,ngay,’ thang ',thang,’ nam ’,nam,’ la ngay Thu Sau ');
6 : Writeln ('ngay ’,ngay,’ thang ',thang,’ nam ’,nam,’ la ngay Thu Bay '); End;
Readln;
END.
Bài 11: Viết chương trình :
Nhâp số báo danh Nhập điểm văn, toán, ngoại ngữ
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;
Writeln (' Phieu Bao Diem ');
Trang 11Writeln (' 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 12If Pt = '-’ Then T:=a - b;
If Pt = '*’ Then T :=a * b;
If Pt = '/’ Then T :=a / b; Write ( a, pt, b, ' = ', T ); Readln;
END.
Trang 15Writeln(‘can so hang thu may cua day Fibonaxi’); readln(n);
Write (' nhap co so a = : '); Readln(a);
Write (' nhap so mu n = : '); Readln(n);
i :=1; giatri :=1;
While i <= n Do Begin
Trang 16Bài 14b Viết chương trình nhập vào hai số nguyên dương a, b bất kỳ, hiển thị ước chung lớn nhất của hai số và bội chung nhỏ nhất của hai số đó.
Writeln(‘nhap so thu nhat ’); readln(a);
Writeln(‘nhap so thu hai ’); readln(b);
Writeln(‘uoc chung lon nhat cua ‘,a,’ va ’,b,’ la ‘,uc);
Writeln(‘boi chung nho nhat cua ‘,a,’va ’,b,’ la ‘,bc);
d Tính trung bình các phần tử dương trong mảng
e Tìm vị trí đầu tiên của phần tử =k với k nhập từ bàn phím.
f Tìm vị trí phần tử =k với k nhập từ bàn phím, nếu có nhiều phần tử =k thì hiển thị ra màn hình tất cả vị trí phần tử=k đó.
g Đếm số lượng phần tử là nguyên tố trong mảng.
h Kiểm tra mảng vừa nhập có phải là cấp số cộng hay không?
i Sắp xếp mảng theo thứ tự tăng dần các phần tử và hiển thị ra màn hình mảng tăng đó
Prgram BAI_15;
Trang 17Uses crt;
Var A : array[1 100] of integr;
i, k,demd, s, demnt, tg,n, d, dd,j : integer;
For i :=1 to n do if A[i]>0 then demd :=demd+1;
Writeln(‘ so luong phan tu duong cua mang la’, demd); { -Cau b -}
s :=0;
For i :=1 to n do if A[i]>0 then s :=s+ A[i];
Writeln(‘ tong cac phan tu duong cua mang la’, s);
Trang 18J :=1;
While (j<=n) And (A[j]<>k) do j :=j+1;
If j> n then Writeln(‘khong co gia tri ’, k, ’ trong mang’)
Else Writeln(k, ‘ nam o vi tri thu ’, j,’ trong mang’); { -Cau f -} Writeln(‘ nhap gia tri can tim vi tri ’); readln(k);
J :=1; writeln(‘cac vi tri xuat hien cua ’,k,’ trong mang la’);
Trang 19{ -Cau h -}
d :=A[2]-A[1]; j:=3;
While (j<=n) And (A[j]-A[j-1]=d) do j:=j+1;
if j>n then Writeln(‘ mang vua nhap la cap so cong’) else Writeln(‘ mang vua nhap khong phai la cap so cong’);
{ -Cau i -}
For i :=1 to n do
For j :=i+1 to n-1 do
If A[j]>A[j+1] then Begin {doi vi tri hai phan tu A[j] va A[j+1]}
Bài 15 b: Viết chương trình nhập vào mảng gồm n phần tử (n<=100) tìm và hiển thị
vị trí phần tử có giá trị lớn nhât, sau đó sắp xếp các phần tử theo thứ tự tăng dần và hiển thị các phần tử sắp xếp đó ra màn hình.
Program Tim_vi_tri;
uses crt;
var a : array[1 100] of integer;
var i,n,j, tg,max, vt : integer;
Trang 20End
Bài 15C: Viết chương trình nhập mảng gồm n phần tử kiểu nguyên(n<=100) và cho
ra màn hình phần tử xuât hiện nhiều nhất và số lần xuât hiện của nó trong mảng
Trang 21write('st[',i,']=');readln(st[i]);
End;
b[i]:=0;
for i:=1 to n do for j:=i to n do
if st[i]=st[j] then inc(b[i]);
max:=b[1];
for i:=1 to n do if b[i]>max then max:=b[i];
write(' So xuat hien nhieu nhat la ');
for i:=1 to n do
if max=b[i] then write(st[i],' ');
write(' -xuat hien - ',max,' –lan ');
Readln End
Bài 16 Viết chương trình nhập mảng gồm n (n<=100) phần tử rồi chèn vào một số bất kỳ vào một vị trí nào đó trong mảng, số cần chèn và vị trí chèn nhập từ bàn phím.
Uses crt;
Var i,spt, so,vitri : Integer;
Trang 22For i :=spt+1 Downto Vitri+1 Do
a[i] :=a[i-1]; a[vitri] :=so; spt :=spt+ 1;
Trang 23Write('-Vi tri muon xoa : '); Readln(vitri);
For i :=vitri to spt - 1 Do a[i] :=a[i+1];
Bài 18 Viết chương trình nhập mảng gồm n (n<=100)phần tử rồi xóa đi những phần
tử trùng nhau trong mảng và in ra màn hình phần tử sau khi đã bỏ bớt.
Program Bo_so_trung;
Uses crt;
Trang 25Writeln(' Bam phim <Enter> de ket thuc ');
For ch :='A' to 'Z' Do a[ch] :=0 ;
Writeln (' Go phim 50 lan ') ;
Trang 26Bài tập 2: Nhập xâu cho trước kiểm tra có phải xâu đối xứng hay không?
If dx then Write(' St la xau doi xung ')
Else Write(St,’ khong phai la xau doi xung ') ;
Trang 28While (s[lengh(s)] =’ ‘ do Delete(s,length(s),1);
While pos(‘ ‘,s)<>0 do Delete(s,pos(‘ ‘,s),1);
Writeln(‘ xau sau khi xoa het ky tu trang du thua la’, s);
Trang 29While pos(‘ ‘,s)<>0 do Delete(s,pos(‘ ‘,s),1);
K :=length(s);
For i :=1 to k do if ( s[i]=’ ‘ )And( s[i+1]<>’ ‘) do upcase(s[i+1];
Writeln(‘xau sau khi dieu chinh la’,s);
Readln
End
Bài tập phần bản ghi, file
Bài tập 1: Chương trình nhập danh sách học sinh gồm Họ tên, tuổi, lớp của học sinh,in ra danh sách vừa nhập
Writeln('Thong tin hoc sinh thu ',i);
Write('Cho ho lot : '); Readln(ds[i].holot);
Trang 30Write('Cho ten : '); Readln(ds[i].ten);
Write('Cho tuoi : '); Readln(ds[i].tuoi);
Write('Cho lop : '); Readln(ds[i].lop);
Trang 32Bài tập 3 : Thông tin về mỗi học sinh là một bản ghi gồm các trường :
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
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.
Trang 33Tuổ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
Trang 34ds2.lop :=UpCase(lop[3]); Write(f2,ds2);
Trang 35Readln; END.
Trang 36Bài tập về chương trình con
Bài tập 1 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 ) ;
Write('b='); Readln(bb);
Write('c='); Readln(cc);
Trang 37If Delta<0 then Writeln('Phuong trinh vo nghiem.') Else
Trang 38Else Writeln(' Khong phai phuong trinh bac hai ');
• 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);
Trang 39Writeln(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;
Trang 40END.
Bài tập 4 : Số Hoàn Hảo là số có tổng các ước của nó (trừ nó) bằng chính nó
Ví dụ : 6 = 1 + 2 + 3
a. Viết chương trình kiểm tra xem 1 số có là số hoàn hảo không
b. Liệt kê tất cả số hoàn hảo từ 1 2000 và đếm xem có bao nhiêu số
if n mod i=0 then d :=d+i;
if d=n then writeln(' So vua nhap la so hoan hao')
else writeln(' So vua nhap khong la so hoan hao');
Trang 41write(' Nhap n='); readln(n);
• Kiểm tra xem có phải là số nguyên tố không
• Kiểm tra xem có phải là số chính phương không
Sau đó trên chương trình chính kiểm tra và trả lời số vừa nhập thuộc số nào?
Trang 43Begin
clrscr;
write(' Nhap n=');readln(n);
if chanle(n) then writeln(' So vua nhap la chan')
else writeln(' So vua nhap la so le');
if nguyento(n) then writeln(' So vua nhap la nguyen to')
else writeln(' So vua nhap khong phai la so nguyen to');
if chinhphuong(n) then writeln(' So vua nhap la so chinh phuong') else writeln(' So vua nhap khong la so chinh phuong');
Trang 44write ('Nhap so can tinh giai thua : ');readln(a);
if a :=0 or a :=1 then writeln('Giai thua cua ',a,' = 1')
else writeln('Giai thua cua',a,' =', gt(a) );