Ngôn ngữ lập trình pascal
Trang 1bµi tËp ng«n ng÷ lËp tr×nh pascal
phÇn I: c¸c bµi tËp lµm quen cÊu tróc
®iÒu khiÓn, cÊu tróc lÆp
phÇn II: c¸c bµi tËp m¶ng
phÇn III: c¸c bµi tËp x©u
phÇn IV: c¸c bµi tËp b¶n ghi
phÇn V: c¸c bµi tËp tÖp
Trang 2PhÇn I: C¸c bµi tËp lµm quen cÊu tróc ®iÒu khiÓn, cÊu tróc lÆp
Bµi tËp: T×m sè lín nhÊt trong 3 sè a,b,c.
if max<b then max:=b;
if max<c then max:=c;
writeln('gia tri lon nhat=',max);
until (a>0) and (b>0) and (c>0);
if (a+b>c) and (a+c>b) and (b+c>a) then
writeln('a,b,c la 3 canh cua mot tam giac')
Trang 3Bài tập: Nhập vào một số nguyên dơng, kiểm tra xem số đó có phải là số nguyên
if snt(n) then writeln(n,' la so nguyen to')
else writeln(n,' khong phai la so nguyen to');
Trang 4Bài tập: Tìm tất cả các số nguyên tố nhỏ hơn n ( n là một số nguyên dơng đợc nhập vào từ bàn phím ).
1
- với ai =
i
1 sao cho ai ≥ Epsilon cho trớc.
Trang 5Bµi tËp:ViÕt ra mµn h×nh n sè h¹ng ®Çu tiªn trong d·y sè Fibonaxi D·y Fibonaxi
Trang 6Bài tập: Nhập vào một số nguyên dơng, kiểm tra xem số đó có bao nhiêu ớc.
Trang 7Bµi tËp: Gi¶i vµ biÖn luËn ph¬ng tr×nh bËc nhÊt 1 Èn:
if b=0 then writeln('pt vo so nghiem')
else writeln(' pt vo nghiem')
if d<0 then writeln('pt vo nghiem')
else if d=0 then writeln('pt co nghiem kep=',-b/2*a)
Trang 8Bµi tËp: T×m íc sè chung lín nhÊt cña 2 sè nguyªn d¬ng a,b.
until (a>0) and (b>0);
while a<>b do if a>b then a:=a-b
Trang 9Bài tập: "Nhân ấn độ": Để nhân hai số nguyên dơng x và y, ngời ta thực hiện
đồng thời (số lần thực hiện nh nhau) hai thao tác:
- Lấy x chia cho 2 lấy phần nguyên.
- Lấy y nhân với 2.
Quá trình trên sẽ dừng lại khi x=1 Trong quá trình thực hiện ngời ta ghi nhớ x là
lẻ Tổng của các số y trong các lần x lẻ trong quá trình thực hiện chính là kết quả của phép nhân ấn độ x ì y Hãy cài đặt thuật toán trên dới dạng một hàm để tính tích của hai số x và y.
Trang 11Bµi tËp: TÝnh chØnh hîp chËp k cña n phÇn tö trong tËp A.
Trang 12Bµi tËp: ViÕt ra mµn h×nh c¸c ký tù sau:
Trang 13Bµi tËp: ViÕt ra mµn h×nh c¸c ký tù sau:
Trang 14Bµi tËp: ViÕt ra mµn h×nh c¸c ký tù sau:
Trang 15Bµi tËp: ViÕt ch¬ng tr×nh in ra mµn h×nh b¶ng cöu ch¬ng d¹ng 1 nh sau:
Trang 17Bµi tËp: NhËp m¶ng 1 chiÒu n phÇn tö, t×m phÇn tö cã gi¸ trÞ b»ng trung b×nh céng cña n phÇn tö.
Trang 18Bµi tËp: NhËp m¶ng 1 chiÒu n phÇn tö, t×m phÇn tö cã gi¸ trÞ lín nhÊt vµ cho biÕt
Trang 19Bài tập: Nhập mảng 1 chiều n phần tử và một số x Tìm xem có phần tử nào của mảng có giá trị bằng x? Nếu có thì cho biết vị trí của phần tử đó trong mảng.
Trang 20Bµi tËp: NhËp m¶ng 1 chiÒu n phÇn tö nguyªn d¬ng T×m sè tù nhiªn nhá nhÊt vµ kh¸c víi c¸c phÇn tö cña m¶ng.
Trang 21Bài tập: Nhập vào một ma trận (m,n), đếm số phần tử âm, tìm giá trị lớn nhất của các phần tử, tính tổng các phần tử.
writeln('so phan tu am=',spta(A,m,n));
writeln('phan tu lon nhat=',max(A,m,n));
writeln('tong cac phan tu=',tong(A,m,n));
Trang 22Bµi tËp: NhËp vµo mét ma trËn (m,n) T×m phÇn tö cã gi¸ trÞ b»ng trung b×nh céng cña m×n phÇn tö.
Trang 23Bµi tËp: NhËp vµo mét ma trËn (m,n) T×m phÇn tö cã gi¸ trÞ lín nhÊt vµ cho biÕt
Trang 24Bài tập: Nhập vào một ma trận vuông (n,n) Tìm tổng các phần tử phía trên đờng chéo chính.
Trang 25Bài tập: Nhập vào một ma trận (m,n) Tìm cột có tổng các phần tử là lớn nhất và cho biết đó là cột nào.
for i:=1 to q do Smax:=Smax+X[i,1]
else for i:=1 to p do Smax:=Smax+X[i,1];
writeln('cot co tong lon nhat la cot ',cotmax);
writeln('tong do co gia tri=',Smax);
readln;
end.
Trang 26Bài tập: Nhập vào một ma trận (m,n) Tìm dòng có tổng các phần tử là nhỏ nhất
và cho biết đó là dòng nào.
Trang 27Bµi tËp: NhËp vµo hai ma trËn (m,n) vµ (n,p) T×m ma trËn tÝch cña hai ma trËn.
Trang 28Bµi tËp: NhËp vµo mét ma trËn (m,n) T×m ma trËn chuyÓn vÞ cña ma trËn (m,n).
Trang 29Phần III: Các bài tập xâu
Bài tập: Viết chơng trình đảo lộn một xâu.
Trang 30Bài tập: Nhập vào một xâu Kiểm tra xem xâu có đối xứng không.
if doixung(A) then writeln('xau A co doi xung')
else writeln('xau A khong doi xung');
readln;
end.
Trang 31Bài tập: Nhập vào họ và tên một ngời, khi nhập có thể viết thoải mái, chữ hoa, chữ thờng lẫn lộn, dấu cách viết không giới hạn Dữ liệu xuất ra phải thoả mãn
nh sau: chữ cái đầu của họ, đệm, tên phải là hoa, các chữ còn lại là chữ thờng, giữa họ-đệm, đệm-đệm, đệm-tên chỉ tồn tại một dấu cách.
for i:=1 to length(st) do
if (st[i]>='A') and (st[i]<='Z') then
st[i]:=chr(ord(st[i])+32);
st[1]:=upcase(st[1]);
for i:=1 to length(st) do
if st[i]=' ' then st[i+1]:=upcase(st[i+1]);
writeln('xau moi nhan duoc la:',st);
readln;
end.
Trang 32Bài tập: Nhập vào một xâu, đếm số chữ trong xâu ( quan niệm chữ đợc phân cách với nhau bởi dấu cách.
Trang 33Bµi tËp: NhËp vµo hai x©u, trén chóng thµnh mét x©u, víi x©u kÕt qu¶:
for i:=1 to length(X) do S:=S+X[i]+Y[i];
for i:=length(X)+1 to length(Y) do S:=S+Y[i];
end
else
begin
for i:=1 to length(Y) do S:=S+X[i]+Y[i];
for i:=length(Y)+1 to length(X) do S:=S+X[i];
Trang 34PhÇn IV: C¸c bµi tËp b¶n ghi
Bµi tËp: TÝnh tæng, tÝch hai ®a thøc.
Trang 35Bài tập: Nhập vào danh sách n sinh viên, mỗi sinh viên là một bản ghi đợc đặc
tr-ng bởi các trờtr-ng: tên, tuổi, điểm môn 1, điểm môn 2, điểm môn 3, tổtr-ng Tính tổng=(điểm môn 1+điểm môn 2+điểm môn 3) Sắp xếp danh sách theo chiều giảm dần của tổng In danh sách những sinh viên có tổng ≥20.
Trang 36Trang 35 Bài tập: Cộng, trừ, nhân, chia hai phân số Phân số đợc mô tả là một bản ghi gồm hai trờng: tử số, mẫu số.
if X.tu=0 then write(X.tu)
else if X.mau=1 then write(X.tu)
if Y=0 then uscln:=X
else uscln:=uscln(Y,X mod Y);
Trang 37writeln('nhap phan so A:');nhap(A);
writeln('nhap phan so B:');nhap(B);
Trang 38Trang 37 Bµi tËp: Céng, trõ, nh©n, chia hai sè phøc.
Trang 39Trang 38
Phần V: Các bài tập tệp
Bài tập: Cho file "MT.INT", dòng đầu ghi hai số tự nhiên m,n, trong m dòng tiếp theo, mỗi dòng ghi n số Đọc file ra mảng hai chiều (m,n).Tìm ma trận chuyển vị của ma trận đó rồi ghi kết quả vào file "MT.OUT".
Trang 40Trang 39 Bài tập: Cho file "DT.INP", dòng đầu tiên là bậc của hai đa thức, hai dòng sau là các hệ số Tìm tích của hai đa thức vừa đọc Kết quả ghi vào file"DT.OUT", dòng đầu tiên là bậc của đa thức tích, dòng thứ 2 là các hệ số của đa thức tích.
for i:=A.bac downto 0 do read(F,A.hs[i]);
for i:=B.bac downto 0 do read(F,B.hs[i]);
Trang 41Trang 40 Bài tập: Cho file "LINE.INP" chứa một dòng văn bản Đọc dòng văn bản trong file ra bộ nhớ rồi đếm số từ xuất hiện trong dòng văn bản đó Kết quả ghi vào file "LINE.OUT".
Trang 42Trang 41