trang Blog

banyanhdTham gia: 18/03/2009
  • ĐỀ CƯƠNG MÔN PASCAL
    Công Nghệ Thông Tin
    CameraNikon D3
    ISO3200
    Aperturef/8
    Exposure1/50th
    Focal Length200mm

    ĐỀ CƯƠNG MÔN PASCAL

     Câu 1: Viết chương trình nhập vào một số nguyên dương từ bàn phím (khi nhập có kiểm tra tính hợp lệ, nếu chưa thỏa mãn yêu cầu nhập lại) a, Hãy cho biết số đó có là số nguyên tố không. b, Lập chương trình tính tổng: S=1/1!+1/2!+....+1/n! TL: uses crt; var i,n :integer; s,p:real; begin { Nhap du lieu } clrscr; { lenh xoa man hinh } write('Nhap so n = '); readln(n); if n<=0 then writeln('Yeu cau nhap lai') else { Kiem tra so nguyen to} If (n=1)or(n=2)then writeln(' So vua nhap la so nguyen to ') else begin i:=2; while (i<=n) and (n mod i<> 0 )do i:=i+1; if i=n then writeln('So vua nhap la so nguyen to') else writeln('So vua nhap khong la so nguyen to'); end; { Tinh tong day } s:=0; p:=1; for i:=1 to n do begin p:=p*(1/i); s:=s+p; end; writeln('Tong s=',s:5:2); readln; end. Câu 2: Bạn có 100000đ đem gửi ngân hàng với lãi xuất 11%/tháng. Sau mỗi tháng tiền lại được nhập vào để tính lãi xuất tháng sau. Bạn muốn số tiền tăng lên thành x (x nhập từ bàn phím). Vậy phải gửi trong bao lâu. Hãy đưa kết quả lên màn hình theo số năm, số tháng cần gửi (Ví dụ: Bạn phải gửi 5 năm 7 tháng, nếu chưa đủ năm chỉ in đưa lên số tháng đã gửi). TL: uses crt ; varthang : Byte ; tien , lai , x : Real ; BEGIN clrscr ; writeln (' Chuong trinh tinh thoi gian rut tien lai ') ; write (' So tien lai muon rut ra : ') ; readln(x) ; tien := 1000 ; thang :=1 ; repeat lai := tien * 11 / 100 ; tien := tien + lai ; thang := thang + 1 ; until tien >= 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 .') ; readln ; END . Câu 3: Viết chương trình bằng ngôn ngữ pascal để: - Nhập từ bàn phím 3 số thực dương tùy ý. - Kiểm tra xem chúng có là số đo 3 cạnh tam giác không, nếu không đúng yêu cầu nhập lại. - Tính diện tích, đường cao ứng với cạnh a của tam giác đó. - In kết quả ra màn hình. TL: program_tamgiac; var a,b,c:integer; s,p,h:real; BEGIN write(' nhap canh a='); readln(a); write(' nhap canh b='); readln(b); write(' nhap canh c='); readln(c); writeln; { Kiem tra lap thanh ba canh cua tam giac} if(a<=0) or(b<=0)or(c<0) then writeln('yeu cau nhap lai') else Begin if(a+b>c)and(b+c>a)and(c+a>b) then begin writeln('Ban da nhap vao la mot tam giac'); p:=(a+b+c)/2; s:=sqrt(p*(p-a)*(p-b)*(p-c)); h:=(2*s)/a; writeln; writeln('dien tich tam giac s=',s:5:2); writeln; writeln('duong cao tinh theo canh a la h=',h:5:2); end else writeln(' Ban da nhap vao khong la mot tam giac'); end; Readln; END. Câu 4: Viết chương trình nhập vào một số nguyên dương >=10 a, Hãy cho biết số đó có là số chính phương không. b, Thông báo lên màn hình số đó có bao nhiêu chữ số, tổng của các chữ số đó. TL: uses crt; var n,s,i,dem:integer; begin {Nhap du lieu} write('Nhap gia tri n='); readln(n); writeln; if n<=10 then writeln('Yeu cau nhap lai') else {Kiem tra so chinh phuong } begin i:=1; while(i<=n) and (sqrt(n) <> i) do i:= i+1; if i=n then writeln(n,'Khong la so chinh phuong ') else writeln(n,'laso chinh phuong'); end; writeln; {Dem tong so cac chu so co trong so nhap va dem so co trong so vua nhap} begin s:=0; dem:=0; while(n<>0 )do begin s:=s +n mod 10; n:=n div 10; dem:=dem+1; end; writeln('Tong cac so=',s); writeln; writeln('Tong cac chu so co trong so=', dem); end; readln; end. Câu 5: Nhập một mảng A các số nguyên và một số nguyên x. Viết chương trình thực hiện các công việc sau: a, Sắp xếp mảng đó theo thứ tự giảm dần. b, Chèn số nguyên x vào mảng sao cho mảng đó không mất đi tính sắp thứ tự. TL: uses crt; var n,x,i,j,tg,k:integer; A:array[1..5]of integer; begin {Nhap gia tri cho mang} clrscr; writeln(' Nhap gia tri cac phan tu mang'); Begin for i:=1 to 5 do begin write('A[',i,']='); readln(A[i]); end; writeln; {In mang vua nhap } writeln('Mang vua nhap'); for i:=1 to 5 do writeln(A[i]); writeln; end; {Sap xep mang giam dan} writeln('Mang sap xep giam dan'); begin for i:=1 to 4 do for j:=i+1 to 5 do if A[i]<=A[i,j] then max:= A[i,j]; s:=s+max; writeln('Max tren dong',i,'la',max); end; writeln; writeln('Tong phan tu lon nhat cua moi dong:',s); readln; end. Câu 7: Viết chương trình nhập vào mảng số nguyên A (không thể có 2 phần tử trùng nhau trong mảng). Trong quả trình nhập phải kiểm tra: Nếu phần tử vừa nhập vào đã có trong mảng thi không bổ sung vào mảng. In ra màn hình các phần tử của A đã được sắp xếp tăng dần. TL: Uses Crt; Type Mang=ARRAY[1..50] Of Integer; Var A,B:Mang; n,m:Byte; Function KiemTra(x:Integer; n:Byte; A:Mang):Boolean; Var i:Byte; Found: Boolean; Begin Found:=False; i:=1; While (i<=n) AND (not Found) Do If x=A[i] Then Found:=True Else i:=i+1; KiemTra:=Found; End; Procedure NhapMang(Var n:Byte; Var A:Mang); Var ch:Char; x:Integer; Begin n:=0; Repeat Write('x='); Readln(x); If not KiemTra(x,n,A) Then Begin n:=n+1; A[n]:=x; End; Writeln('An ESC de ket thuc nhap!'); ch:=Readkey; Until ch=#27; End; Procedure GiaoAB(n:Byte; A:Mang;m:Byte; B:Mang); Var i:Byte; Begin For i:=1 To n Do If KiemTra(A[i],m,B) Then Write(A[i]:4) End; Begin Clrscr; Writeln('Nhap mang A: '); NhapMang(n,A); Writeln('Nhap mang B: '); NhapMang(m,B); Writeln('Giao cua 2 mang A&B la: '); GiaoAB(n,A,m,B); Readln; End. Câu 8: 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. Viết chương trình kiểm tra xem 1 số nguyên dương nhập từ bàn phím có là số hoàn hảo không. Có bao nhiêu số hoàn hảo từ 1 đến 2000, in ra các số đó. TL: uses crt; var n,i,j,s,k,dem:integer; Begin { Nhap dulieu} clrscr; write('Nhap so n='); readln(n); writeln; if n<1 then writeln('Yeu cau nhap lai') else begin {Kiem tra so hoan hao} s:=0; for i:=1 to n-1 do begin if n mod i=0 then s:=s+1; end; if s=n then writeln('n,La so hoan hao ') else writeln(n,'Khong la so hoan hao '); end; { Dem so hoan hao va in ra man hinh nhung so do} writeln; writeln('Cac so hoan hao tu 1 den 2000 la:'); begin dem:=0; for i:= 1 to 2000 do begin s:=0; for j:= 1 to i-1 do if ( i mod j = 0) then s:= s+ j; if(s=i) then begin writeln(i); end; end; writeln('Tong so hoan hao la :', dem); end; readln; end. Câu 9: Cho một mảng số nguyên gồm n phần tử, tìm dãy con có m phần tử (ma[i,j] then min:=a[i,j]; end; write('la so nho nha:',min); readln; end. Câu 12: Viết chương trình cho máy làm những công việc sau: a, Nhập vào mảng A có M dòng, N cột (M>5, N>6) các phần tử là các số nguyên lớn hơn 2 và nhỏ hơn 100 được nhập từ bàn phím. b, Đếm số các phần tử chẵn của mảng. c, In ra màn hình giá trị dương lớn nhất của mảng. TL: uses crt; var i,j,s,max,dem,m,n:integer; A:array[1..100,1..100] of integer; begin clrscr; {Nhap gia tri cua mang} writeln('Nhap kich thuoc mang:'); write('m='); readln(m); write('n='); readln(n); writeln; if (m<5) or (n<6) then begin writeln('yeu cau nhap lai'); readln; exit; end; writeln; writeln('Nhap cac phan tu mang:'); for i:= 1 to m do for j:= 1 to n do begin write('A[',i,',',j,']='); readln( A[i,j]); if( A[i,j] <2 ) or (A[i,j]>100) then begin writeln('Yeu cau nhap lai'); readln; exit; end; end; writeln; {In ra man hinh} clrscr; writeln('Mang vua nhap:'); for i:= 1 to m do begin for j:= 1 to n do write(A[i,j],' '); writeln; end; {Dem cac so chan } writeln; dem:=0; for i:= 1 to m do for j:= 1 to n do if A[i,j]mod 2= 0 then dem:= dem +1; writeln('Tong cac so chia het cho 2 =',dem); writeln; {Hien thi cac phan tu lon nhat cua mang} max:=A[i,j]; for i:= 1 to m do for j:= 1 to n do if (A[i,j]>0) and (max<=A[i,j]) then max:=A[i,j]; writeln('So nguyen duong lon nhat cua mang la:', max); readln; end. Câu 13: Viết chương trình tạo mảng 5 dòng, 5 cột với các phần tử là những số nguyên lớn hơn 5 và nhỏ hơn 100 được nhập từ bàn phím: a, Cho biết mảng có bao nhiêu số lẻ không chia hết cho 5 b, Tính tổng các phần tử nằm hình vuông ngoài cùng của mảng. TL: uses crt; var i,j,s,s1,s2,s3,s4,max,dem:integer; A:array[1..5,1..5] of integer; begin clrscr; {Nhap gia tri cho mang} writeln('Nhap cac phantu mang:'); for i:=1 to 5 do for j:=1 to 5 do begin write('A[',i,',',j,']='); readln(A[i,j]); if (A[i,j]<5) or (A[i,j]>100) then begin writeln('Yeu cau nhap lai'); readln; exit; end; end; writeln; {In ra man hinh } clrscr; writeln('Mang vua nhap:'); for i:= 1 to 5 do begin for j:= 1 to 5 do write(A[i,j],','); writeln; end; {Dem cac so le khong chia het cho 5} writeln; dem:=0; for i:= 1 to 5 do for j := 1 to 5 do if (A[i,j] mod 2 <> 0 ) and (A[i,j] mod 5 <> 0) then dem := dem+1; writeln('Tong cac so le khong chia het cho 5 = ',dem); writeln; {Tinh tong cac so tren hinh vuong ngoai cung cua mang} s1:=0; for i:= 1 to 1 do for j := 1 to 5 do s1:= s1+A[i,j]; s2:=0 ; for i := 5 to 5 do for j:=1 to 5do s1 :=s1+ A[i,j]; s3:=0 ; for i := 1 to 5 do for j:=1 to 1 do s1 :=s1+ A[i,j]; s4:=0 ; for i := 1 to 5 do for j:=5 to 5 do s1 :=s1+ A[i,j]; s:=s1+s2+s3+s4; writeln('Tong cac so tren hinh vuong ngoai cung =',s); readln; end. Câu 14: Viết chương trình cho máy làm những công việc sau: a, Nhập vào mảng A có N (N>10) phần tử là số tự nhiên lớn hơn 5 và nhỏ hơn 100 được nhập từ bàn phí. b, Tìm và đưa ra phần tử chẵn lớn nhất của mảng, vị trí của chúng. c, So số phần tử chắn với số phần tử lẻ. TL: uses crt; var maxc,n,chan,le,i:integer; A:array[1..1000] of integer; begin { Nhap ma tran } clrscr; writeln('Nhap cac kich thuoc mang:'); write('n='); readln(n); if n<10 then begin writeln('Yeu cau nhaplai'); readln; exit; end; writeln('Ma tran cua ban co kich thuoc',n); writeln; writeln('Nhap gia tri cac phan tu mang'); writeln; for i:= 1 to n do begin write('A[',i,']='); readln(A[i]); if (A[i]<5 ) or ( A[i]>100 ) then begin writeln('Yeu cau nhap lai'); readln; exit; end; end; { In ma tran } clrscr; writeln('Ma tran vua nhap vao:'); for i:= 1 to n do write(A[i],' '); writeln; {Tim phan tu chan lon nhat} writeln; maxc:= A[1]; for i:= 1 to n do if A[i]> maxc then writeln('Phan tu chan lon nhat la ',maxc,' va o vi tri',i); { So sanh chan -le} writeln; chan := 0 ; for i:=1 to n do if A[ i] mod 2 = 0 then chan:=chan+1; le:= n- chan; if le< chan then writeln('So chan nhieu hon so le'); if le> chan then writeln('So le nhieu hon so chan'); if le = chan then writeln('So chan bang so le'); readln; end. Câu 15: Viết chương trình cho máy tính làm những công việc sau: a, Nhập vào mảng A có n phần tử là những số nguyên lớn hơn 5 và nhỏ hơn 100 (n>12). b, Có bao nhiêu phần tử của mảng A là số nguyên tố ? TL: uses crt; var i,j,n,dem,d:integer; A:array[1..1000] of integer; begin { Nhap ma tran } clrscr; writeln('Nhap kich thuoc mang'); writeln('n='); readln(n); if n<12 then begin writeln('Yeu cau nhap lai'); readln; exit; end; writeln; writeln('Ma tran cua ban co kich thuoc',n); writeln; writeln('Nhap gia tri cac phan tu mang'); writeln; for i:=1 to n do begin write('A[',i,']='); readln(A[i]); if (A[i]< 5)or (A[i]>100) then begin writeln('Yeu cau nhap lai'); readln; exit; end; end; { In ma tran } clrscr; writeln('Ma tran vua nhap vao:'); for i:= 1 to n do write(A[i],' '); writeln; { Dem so nguyen } dem := 0; for i:= 1 to n do begin d:=0 ; for j:= 2 to A[i]-1 do if A[i] mod j=0 then d:=d+1; if d=0 then dem:=dem+1; end; if dem=0 then writeln('Khong co so nguyen to') else writeln('Tong so cac so nguyen to=',dem); readln; end. Câu 16: Viết chương trình cho máy làm những công việc sau: a, Nhận vào mảng A có M dòng, N cột (M>3, N>4) các phần tử là những số thực lớn hơn 1 và nhỏ hơn 100 được nhập từ bàn phím. b, Tìm và đưa ra phần tử nhỏ nhất của mảng, chúng ở dòng nào, cột nào ? TL: uses crt; var i,j,m,n,min:integer; A:array[1..100,1..100] of integer; begin clrscr; {Nhap cac gia tri cho mang} writeln; writeln('Nhap kich thuoc mang:'); write('m='); readln(m); write('n='); readln(n); writeln; if(m<3) or (n<4) then begin writeln('Yeu cap nhap lai'); readln; exit; end; writeln; writeln('Nhap cac phan tu mang:'); for i:=1to m do for j:= 1to n do begin write('A[',i,',',j,']='); readln(A[i,j]); if (A[i,j] <1 ) or (A[i,j]>100)then begin writeln('Yeu cau nhaplai'); readln; exit; end; end; writeln; {Inra man hinh} clrscr; writeln('Mang vua nhap:'); writeln; for i:= 1to m do begin for j:= 1 to n do write(A[i,j],' '); writeln; end; { TIm phan tu nho nhat cua mang} min:=A[1,1]; for i:= 1 to m do for j:= 1 to n do if A[i,j]<=min then min:=A[i,j]; writeln('So nho nhat cua mang la:',min); writeln; for i:= 1 to m do for j:= 1 to n do if A[i,j]= min then writeln('O dong ', i, ' cot ', j); writeln; readln; end. Câu 17: Viết chương nhận vào cho mảng A có m dòng, n cột (m>3, n>4) các phần tử là những số nguyên lớn hơn 3 và nhỏ hơn 150. TÌm tất cả các phần tử là số nguyên tố của mảng A và đưa chúng vào mảng 1 chiều B, in ra các phần tử của mảng B. TL: program tinh; uses crt; type mang=array[1..50]of integer; var a,b:mang; var n,m:byte; function kt(x:integer;n:byte;a:mang):boolean; var i:byte; t:boolean; begin t:=false; i:=1; while (i<=n)and (not t) do if x=a[i] then t:=true else i:=i+1; kt:=t; end; procedure nm(var n:byte;var a:mang); var ch:char; x:integer; begin n:=0; repeat write('x=');readln(x); if not kt(x,n,a) then begin n:=n+1; a[n]:=x; end; writeln('an esc de ket thuc'); ch:=readkey; until ch=#27; end; procedure giaoab(n:byte;a:mang;m:byte;b:mang); var i:byte; begin for i:=1 to n do if kt(a[i],m,b)then write(a[i]:4); end; begin clrscr; writeln('nhap mang a'); nm(n,a); writeln('nhap mang b'); nm(m,b); writeln('giao cua 2 mang A vaf b la'); giaoab(n,a,m,b); readln; end. Câu 18: Nhập vào một số n (5<=n<=10) và n phần tử của dãy A là các số tự nhiên lớn hơn 5 và nhỏ hơn 100. - In ra các phần tử là số chính phương. - Tính ước chung lớn nhất của tất cả các phần tử của dãy. TL: uses crt; var n : integer; a : array[1..10] of integer; {n<=10 nên m?ng có t?i da 10 ph?n t?} procedure nhap; var i : integer; begin clrscr; write('NHAP VAO SO PHAN TU N = '); repeat readln(n); if (5<=n) and (n<=10) then break; {n?u thoã mãn thì d?ng vòng l?p} writeln('Khong hop le (5<=n<=10). Nhap lai!!!'); {ngu?c l?i thì báo l?i} until false; writeln('NHAP VAO N PHAN TU (1<100)'); for i := 1 to n do begin write('a',i,'='); repeat readln(a[i]); if (1<100) then break; writeln('Khong hop le. Nhap lai!!!'); until false; end; end; function chinhphuong(n : integer): boolean; {hàm ki?m tra nguyên t?, xem gi?i thích ? ph?n trên} var i : integer; begin i:=1; while (i<>i) do i:=i+1; if i=n then writeln(n,'khong la so chinh phuong') else writeln(n,'la so chinh phuog') end; writeln; end; procedure inchinhphuong; var i :integer; begin writeln('CAC PHAN TU CHINH PHUONG TRONG DAY:'); for i := 1 to n do {duy?t qua m?i ph?n t? t? 1 d?n n} if chinhphuong(a[i]) then writeln(a[i]); {n?u ai là nguyên t? thì in ra} end; function UCLN(a,b: integer): integer; var r : integer; begin while b<>0 do begin r := a mod b; a := b; b := r; end; UCLN := a; end; procedure TinhUC; var i,u : integer begin u := a[1]; {u là UCLN c?a các ph?n t? t? 1 d?n i} for i := 2 to n do u := UCLN(u,a[i]); writeln('UCLN cua ca day la:',u); end; function hammu(a : real; n : integer): real; {hàm mu tính an} var s : real; i : integer; begin s := 1; for i := 1 to n do s := s * a; hammu := s; end; BEGIN nhap; inngto; tinhuc; END. Câu 19: Nhập vào một số n (5<=n<=10) và n phần tử của dãy a là các số tự nhiên lớn hơn 1 và nhỏ hơn 100. - Tính biểu thức sau: S = a2¬¬¬1+a22+...+a2n - Sắp xếp dãy tăng dần và in ra dãy sau sắp xếp. TL: {//Khai báo d? li?u:} uses crt; var n : integer; a : array[1..10] of integer; {n<=10 nên m?ng có t?i da 10 ph?n t?} {//Th? t?c nh?p d? li?u, có ki?m tra khi nh?p.} procedure nhap; var i : integer; begin clrscr; write('NHAP VAO SO PHAN TU N = '); repeat readln(n); if (5<=n) and (n<=10) then break; {n?u thoã mãn thì d?ng vòng l?p} writeln('Khong hop le (5<=n<=10). Nhap lai!!!'); {ngu?c l?i thì báo l?i} until false; writeln('NHAP VAO N PHAN TU (1<100)'); for i := 1 to n do begin write('a',i,'='); repeat readln(a[i]); if (1<100) then break; writeln('Khong hop le. Nhap lai!!!'); until false; end; end; {//Th? t?c tính t?ng các ph?n t? có l?y mu:} procedure tong; var s : real; i : integer; {s ph?i khai báo là s? th?c d? tránh tràn s?} begin s := 0; for i := 1 to n do s := s + hammu(a[i],i); {s := s + (ai)i} writeln('Tong can tinh:',s:10:0); end; {//Th? t?c s?p x?p tang d?n các ph?n t? c?a m?t m?ng:} procedure sxep; var i,j,tg : integer; begin for i := 1 to n-1 do for j := i + 1 to n do if a[i] > a[j] then begin tg := a[i]; a[i] := a[j]; a[j] := tg; end; writeln('DAY SAU KHI SAP XEP TANG DAN:'); for i := 1 to n do writeln(a[i]); end; {//Chuong trình chính: l?n lu?t g?i t?ng th? t?c} BEGIN nhap; tong; sxep; END. Câu 20: Viết chương trình nhập một sau kí tự, sau đó chỉ ra xem xâu đó có những loại kí tự nào, xâu đó có phải là xâu đối xứng không (xâu đối xứng có các kí tự giống nhau và đối xứng nhau qua điểm giữa xâu, ví dụ: ‘ABBA’ hoặc ‘ABCBA’) TL: Uses Crt; Var St : string; dx : Boolean; i, len: byte; BEGIN Clrscr; Write(' Nhap xau St = '); Readln(St); dx:= True; i:=1; len:= Length(St); While dx and (i<=(len div 2)) do Begin dx:=(St[i] = St[len - i+1]); inc(i); End; If dx then Write(' St la xau doi xung ') Else Write(' St khong phai la xau doi xung ') ; Readln; END . Câu 21: Nhập vào một xâu s khác rỗng và thực hiện chuẩn hóa xâu, tức là: a, Xóa các dấu cách thừa. b, Chuyển những kí tự đầu từ thành chữ hoa, những kí tự khác thành chữ thường. (ví dụ nhập: “ nguyen van hanh” kết quả: “Nguyen Van Hanh”) TL: Uses Crt; Var St:String; Procedure XoaTrangThua(Var St:String); Begin {Xóa các ký t? tr?ng ? d?u xâu} While St[1]=#32 Do Delete(St,1,1); {Xóa các ký t? tr?ng ? cu?i xâu} While St[Length(St)]=#32 Do Delete(St,Length(St),1); {Xóa các ký t? tr?ng ? gi?a xâu} While POS(#32#32,St)<>0 Do Delete(St,POS(#32#32,St),1); End; Begin Write(‘Nhap xau St: ‘); Readln(St); XoaTrangThua(St); Write(‘Xau sau khi xoa cac ky tu trang thua: ‘, St); Readln; procedure ChuyenKiTu(Var St:String); Begin i:=1->length(s) If s[i-1]=' ' then s[i]=UpCase(s[i]) Else s[i]=LowCase(s[i]). For i:=2 to length(S) do If (S[i-1]=" ") and (S[i]<>" ") then If (S[i-1]<>" ") and (S[i]<>" ") then End; End. Câu 22: Viết chương trình tạo một danh sách gồm 10 người với tên người được nhập vào từ bàn phím. Sau đó nhập một tên người tùy ý, tìm xem người đó có trong danh sách không và in ra thông báo cần thiết. TL: program tinh; uses crt; type ng=record ten:string; end; var a:array [1..10] of ng; i:integer; tenn:string; begin clrscr; for i:=1 to 10 do begin write('a[',i,']=');readln(a[i].ten); end; write('nhap mot ten nguoi bat ki:'); readln(tenn); for i:=1 to 10 do if tenn=a[i].ten then begin write('da tim thay:'); write('ten:',a[i].ten); break; end else if (i=10) then write('khong tim thay'); readln; end. Câu 23: Sử dụng dữ liệu kiểu mảng của các bản ghi. Viết chương trình cho phep nhập vào các thẻ theo dõi sách trong thư viện quản lý các mục: mã số, tên sách, tên tác giả. In ra nội dung một thẻ nếu mã số được nhập từ bàn phím. TL: program tinh; uses crt; type the=record ms:integer; ts:string; ttg:string; end; var a:array[1..100] of the; i,n,m:integer; begin clrscr; write('nhap n=');readln(n); for i:=1 to n do begin write('ma so:');readln(a[i].ms); write('ten sach:');readln(a[i].ts); write('ten tac gia:');readln(a[i].ttg); end; write('nhap vao ma so the'); readln(m); for i:=1 to n do if m=a[i].ms then begin writeln('ma so la:',a[i].ms); writeln('ten sach la:',a[i].ts); writeln('ten tac gia la :',a[i].ttg); break; end else if i=n then write('khong co'); readln; end. Câu 24: Viết chương trình quản lý học sinh chuyên tin. Mỗi học sinh được đặc trưng bởi: số báo danh, họ tên, ngày sinh, điểm toán, điểm văn, điểm tin, điểm trung bình các môn (điểm tin có hệ số 2). In ra những học sinh có điểm trung bình lớn hơn bằng 7. TL: program danhsach; uses crt; type nhansu=record; sbd: integer; ht:string; ns:string; dt,dv,dti:real; dtb:real; end; var a:array [1..100]of nhansu; i,n:integer; begin clrscr; write('nhap so hoc sinh can quan ly n='); readln(n); for i:=1 to n do begin write('ho ten:'); readln(a[i].ht); write('so bao danh:');readln(a[i].sbd); write('ngay sinh:');readln(a[i].ns); write('diem toan:');readln(a[i].dt); write('diem van:');readln(a[i].dv); write('diem tin:');readln(a[i].dti); a[i].dtb:=(a[i].dt+a[i].dv+a[i].dti*2)/4; writeln('diem trung binh la',a[i].dtb:10:2); end; writeln('danh sach sinh vien co diem trung binh >=7'); for i:=1 to n do if a[i].dtb>=7 then begin writeln('ho ten sinh vien:',a[i].ht); writeln('so bao danh:',a[i].sbd); writeln('ngay sinh:',a[i].ns); writeln('diem toan:',a[i].dt:10:2); writeln('diem van:',a[i].dv:10:2); writeln('diem tin:',a[i].dti:10:2); writeln('diem trung binh:',a[i].dtb:10:2); break; end else if (i=n) then write('khong co'); readln; end. Câu 25: Nhập một danh sách gồm n thí sinh được quản lý bới số báo danh, họ và tên, điểm toán, điểm văn, điểm ngoại ngữ, điểm tổng cộng. In ra màn hình những thí sinh trúng tuyển (những thí sinh có tổng điểm 3 môn lớn hơn hoặc bằng n là số dương nhập từ bàn phím) TL: program danhsach; uses crt; type nhansu=record ht:string[30]; sbd:integer; dt:integer; dv:integer; dnn:integer; td:real; end; var a:array [1..100] of nhansu; i,n,m:integer; begin clrscr; write('nhap danh sach cac thi sinh n='); readln(n); for i:=1 to n do begin write('ho ten:'); readln(a[i].ht); write('so bao danh:');readln(a[i].sbd); write('diem toan:');readln(a[i].dt); write('diem van:');readln(a[i].dv); write('diem ngoai ngu:');readln(a[i].dnn); a[i].td:=(a[i].dt+a[i].dv+a[i].dnn); writeln('tong diem la :',a[i].td:10:2); end; write('nhap m=');readln(m); for i:=1 to n do if (a[i].td>=m) then begin writeln('danh sach thi sinh trung tuyen la: '); writeln('ho ten:',a[i].ht); writeln('so bao danh:',a[i].sbd); writeln('diem toan:',a[i].dt); writeln('diem van:',a[i].dv); writeln('diem ngoai ngu:',a[i].dnn); end; readln; end.