Kiểm tra N có là số đẹp số hoàn hảo là số nguyên dương, đọc từ trái sang phải nó, chữ số đứng trước... Tính chu vi, diện tích, độ dài 3 đường cao..[r]
(1)NguyÔn ThÞ Huª _ THPT T©n Yªn II – B¾c Giang Bµi tËp Pascal Mét sè ®o¹n lÖnh cÇn nhí 1.1 Cấu trúc chương trình Pascal { PhÇn khai b¸o} - Khai báo tên chương trình: - Khai b¸o th viªn: program <tên chương trình>; uses <tªn th viÖn>; - Khai b¸o h»ng: const <tªn h»ng> : <gi¸ trÞ cña h»ng>; - Khai b¸o biÕn: var <tªn biÕn> : <kiÓu d÷ liÖu>; - Khai báo chương trình con: Thñ tôc: procedure <tªn thñ tôc> [ (danh s¸ch c¸c tham sè) ] <phÇn khai b¸o c¸c biÕn dïng thñ tôc>; Begin <d·y c¸c lÖnh> End; Hµm : function <tªn hµm> [(danh s¸ch tham sè)] : <kiÓu d÷ liÖu> <phÇn khai b¸o c¸c biÕn dïng thñ tôc>; Begin <d·y c¸c lÖnh> <tªn hµm> : <biÓu thøc>: { tr¶ l¹i gi¸ trÞ cho hµm} End; {Phần thân chương trình} Begin <D·y c¸c lÖnh>; End 1.2 Mét sè kiÓu d÷ liÖu hay dïng - KiÓu nguyªn: Byte: Từ đến 255 Integer: Từ -215 đến 215 -1 -1Lop11.com (2) victory.no.bad@gmail.com Word: Từ đến 216 -1 Longint: Từ -231 đến 231 - - KiÓu thùc: Real: có giá trị tuyệt đối nằm phạm vi từ 10-38 đến 1038 - KiÓu kÝ tù: Char: 256 kÝ tù bé m· ASCII - KiÓu logic: Boolean: cã gi¸ trÞ True hoÆc False 1.3 Thủ tục chuẩn vào/ đơn giản - NhËp d÷ liÖu tõ bµn phÝm: Read (<danh s¸ch c¸c biÕn vµo>); HoÆc Readln (<danh s¸ch c¸c biÕn vµo>); - XuÊt d÷ liÖu mµn h×nh: Write (<danh s¸ch kÕt qu¶ ra>); HoÆc Writeln (<danh s¸ch kÕt qu¶ ra>); 1.4 C©u lÖnh rÏ nh¸nh - If - then: D¹ng thiÕu: If <®iÒu kiÖn> then <c©u lÖnh>; Dạng đủ: If <®iÒu kiÖn> then <c©u lÖnh 1> else <c©u lÖnh 2>; - Case - of: Case <biÓu thøc> of <h»ng 1> : <lÖnh 1>; <h»ng 2> : <lÖnh 2>; … <h»ng n - 1> : <lÖnh n - 1>; Else <h»ng n> : <lÖnh n>; End; -2Lop11.com (3) NguyÔn ThÞ Huª _ THPT T©n Yªn II – B¾c Giang 1.5 C©u lÖnh lÆp - Lặp với số lần biết trước: Dạng tiến: For <biến đếm> := <giá trị đầu> to <giá tri cuối> <c©u lÖnh>; Dạng lùi: For <biến đếm> := <giá trị cuối> downto <giá trị đầu> <c©u lÖnh>; - Lặp với số lần chưa biết trước: While <®iÒu kiÖn> <lÖnh>; Repeat <c©u lÖnh>; Until <®iÒu kiÖn>; 1.6 M¶ng chiÒu - Khai b¸o Trùc tiÕp: Var <tªn biÕn m¶ng> : array [ kiÓu chØ sè ] of <kiÓu phÇn tö>; Gi¸n tiÕp: Type <tªn kiÓu m¶ng> = array [ kiÓu chØ sè ] of <kiÓu phÇn tö>; Var <tªn biÕn m¶ng> : <tªn kiÓu m¶ng>; - NhËp m¶ng For i:= to n Begin Write (‘ nhap A[‘,i,’] = ’); Readln (a[i]); End; - In m¶ng For i:= to n Write (A[i] : 5); 1.7 M¶ng chiÒu - Khai b¸o Trùc tiÕp: -3Lop11.com (4) victory.no.bad@gmail.com Var <tªn biÕn m¶ng> : array [ kiÓu chØ sè hµng, kiÓu chØ sè cét] of <kiÓu phÇn tö>; Gi¸n tiÕp: Type <tªn kiÓu m¶ng> = array [ kiÓu chØ sè hµng, kiÓu chØ sè cét] of <kiÓu phÇn tö>; Var <tªn biÕn m¶ng> : <tªn kiÓu m¶ng>; - NhËp m¶ng For i:= to n For j:=1 to m Begin Write (‘ nhap A[’,i,’,’,j,’] = ’); Readln (a[i,j]); End; - In m¶ng For i:= to n Begin For j:=1 to m Write (A[i,j]:5 ); Readln; End; 1.8 X©u - Khai b¸o Var <tên biến xâu> : String [ <độ dài lớn xâu> ]; - NhËp x©u Write (‘ nhap vao xau: ‘); readln ( <tªn x©u>); - In x©u Write (‘xau: ‘, <tªn x©u>); Mét sè thuËt to¸n c¬ b¶n 2.1 Kiểm tra N có là số chẵn (tương tự số lẻ) If N mod 2=0 then write (‘N la so chan’); -4Lop11.com (5) NguyÔn ThÞ Huª _ THPT T©n Yªn II – B¾c Giang 2.2 Kiểm tra N có phải là số chính phương (số chính phương là số bình phương số nguyên dương) If Sqr(Round(Sqrt(N)))= N then write(‘N la so chinh phuong’); 2.3 Kiểm tra N có là số nguyên tố (số nguyên tố là số nguyên dương có ước nguyên dương là và chính nó) i := 2; m := Round ( Sqrt (N)); { i vµ m khai b¸o kiÓu nguyªn} While (i<=m) and (N mod i <> 0) i := i + 1; If i>m then Write (‘ N la so nguyen to’); 2.4 Kiểm tra N có là số hoàn hảo (số hoàn hảo là số nguyên dương có tổng c¸c íc trõ nã b»ng chÝnh nã) S := 0; { S khai b¸o cïng kiÓu víi N} For i := to N - If N mod i = then S := S + i ; If S = N write (‘ N la so hoan hao’); 2.5 Kiểm tra N có là số đẹp (số hoàn hảo là số nguyên dương, đọc từ trái sang phải nó, chữ số đứng trước <= chữ số đướng sau) {BiÕn kt khai b¸o kiÓu logic} Str (N, S); { S khai b¸o kiÓu x©u} Kt := True; While i := 1; (kt = true) and (i < length(S)) Begin If S[i+1] < S[i] then kt := False; I := i+1; End; If kt write (‘ N la so dep’); -5Lop11.com (6) victory.no.bad@gmail.com Bµi tËp 3.1 Bµi tËp h×nh häc Bài 1: Cho tam giác có độ dài cạnh là a, b, c Tính chu vi, diện tích, độ dài đường cao Kiểm tra xem tam giác đó là vuông, hay cân? uses crt; var a,b,c, cv:integer; p, dt: real; begin clrscr; write(' nhap dai canh:'); readln(a,b,c); if (a+b<c) or (a+c<b) or (b+c<a) then write(' nhap kich thuoc canh sai') else begin cv := a+b+c; writeln(' chu vi tam giac: ',cv); p:=cv/2; dt:= sqrt(p*(p-a)*(p-b)*(p-c)); writeln('dien tich tam giac: ',dt:6:2); if (a*a+b*b=c*c) or (b*b+c*c=a*a) or (c*c+a*a=b*b) then begin writeln(' day la tam giac vuong'); if (a>b) and (a>c) then begin writeln('do dai duong cao thu nhat: ',b); writeln('do dai duong cao thu hai: ',c); writeln('do dai duong cao thu ba: ',dt/a:6:2); end; if (b>a) and (b>c) then -6Lop11.com (7) NguyÔn ThÞ Huª _ THPT T©n Yªn II – B¾c Giang begin writeln('do dai duong cao thu nhat: ',a); writeln('do dai duong cao thu hai: ',c); writeln('do dai duong cao thu ba: ',dt/b:6:2); end; if (c>b) and (c>a) then begin writeln('do dai duong cao thu nhat: ',a); writeln('do dai duong cao thu hai: ',b); writeln('do dai duong cao thu ba: ',dt/c:6:2); end; end else begin if (a=b) and (b=c) and (a=c) then writeln('day la tam giac deu') else if (a=b) or (b=c) or (a=c) then writeln('day la tam giac can'); writeln('do dai duong cao thu nhat: ',dt/b:6:2); writeln('do dai duong cao thu hai: ',dt/c:6:2); writeln('do dai duong cao thu ba: ',dt/a:6:2); end; end; readln; -7Lop11.com (8) victory.no.bad@gmail.com end Bài 2: Cho điểm A(xa,ya), B(xb,yb), C(xc,yc), D(xd,yd) Cho biết vị trí tương đối D tam giác ABC var ax, bx, cx, dx, ay, by, cy, dy:real; a,b,c:real; p, p1, p2, p3:real; s, s1, s2, s3: real; d1, d2, d3: real; begin writeln('nhap toa cho cac diem:'); write('diem A:'); readln(ax,ay); write('diem B:'); readln(bx,by); write('diem C:'); readln(cx,cy); write('diem D:'); readln(dx,dy); a:=sqrt(sqr(bx-ax)+sqr(by-ay)); {AB} b:=sqrt(sqr(bx-cx)+sqr(by-cy)); {BC} c:=sqrt(sqr(ax-cx)+sqr(ay-cy)); {CA} p:=(a+b+c)/2; s:=sqrt(p*(p-a)*(p-b)*(p-c)); d1:=sqrt(sqr(ax-dx)+sqr(ay-dy)); {AD} d2:= sqrt(sqr(bx-dx)+sqr(by-dy)); {BD} d3:= sqrt(sqr(cx-dx)+sqr(cy-dy)); {CD} p1:=(c+d1+d3)/2; { ACD } p2:=(a+d1+d2)/2; { ABD } p3:=(b+d2+d3)/2; { BCD } s1:= sqrt(p1*(p1-d1)*(p1-d3)*(p1-c)); -8Lop11.com (9) NguyÔn ThÞ Huª _ THPT T©n Yªn II – B¾c Giang s2:= sqrt(p2*(p2-d1)*(p2-d2)*(p2-a)); s3:= sqrt(p3*(p3-d2)*(p3-d3)*(p3-b)); if abs(s-s1-s2-s3)<0.001 then write('D thuoc tgiac ABC') else if abs(s1)<0.001 then write('D nam tren AC') else if abs(s2)<0.001 then write('D nam tren AB') else if abs(s3)<0.001 then write('D nam tren BC') else write('D nam ngoai tgiac ABC'); readln; end Bµi 3: 3.2 Bµi tËp vÒ sè nguyªn Bài 1: Nhập vào số nguyên dương a và b Tính và in màn hình: tổng, hiệu, tích, thương a/b và UCLN(a,b) Uses crt; Var a,b, tong, hieu, tich, ucln: integer; Thuong: real; Begin Clrscr; Write (‘nhap a va b: ‘); readln (a,b); Writeln (‘Tong‘,a,‘+’,b,’=’,a + b); Writeln (‘Hieu‘,a,‘-’,b,’=’,a - b); Writeln (‘Tich‘, a,‘*’,b ,’=’,a * b); Writeln (‘Thuong‘,a,‘/’,b ,’=’, a/b:5:2); While a<>b -9Lop11.com (10) victory.no.bad@gmail.com If a>b then a := a-b Else b:=b-a; Writeln (‘UCLN(‘,a,‘va’,b,’)=’, a ); Readln; End Bài 2: Giải phương trình trùng phương: ax4 + bx2+c = uses crt; var a,b,c:integer; d,t,t1,t2:real; begin clrscr; writeln('he so a,b,c:'); readln(a,b,c); if (a=0) then writeln('nhap lai') else begin {dat t=x*x} d:=b*b-4*a*c; if d<0 then write('PT vo ng') else if d=0 then begin t:=-b/(2*a); if t>0 then begin writeln('PT co 2ng:'); writeln('x1=',-sqrt(t):6:2); writeln('x2=',sqrt(t):6:2); end else if t=0 then writeln('PT co ng nhat x=0') - 10 Lop11.com (11) NguyÔn ThÞ Huª _ THPT T©n Yªn II – B¾c Giang else writeln('Pt vo ng'); end else {d>0} begin t1:=(-b-sqrt(d))/(2*a); t2:=(-b+sqrt(d))/(2*a); if (t1<0) and (t2<0) then write('Pt vo ng'); if (t1=0) and (t2=0) then write('Pt co ng x=0'); if (t1>0) and (t2>0) then begin writeln('PT co ngh:'); write('x1=',-sqrt(t1):6:2,'x2=',sqrt(t1):6:2); write('x3=',-sqrt(t2):6:2,'x2=',sqrt(t2):6:2); end; if (t1>0) and (t2<0) then begin writeln('PT co ng:'); write('x1=',-sqrt(t1):6:2,'x2=',sqrt(t1):6:2); end; if (t1<0) and (t2>0) then begin writeln('PT co ng:'); write('x1=',sqrt(t2):6:2,'x2=',sqrt(t2):6:2); end; end; end; readln; end Bài 3: Giải hệ phương trình: - 11 Lop11.com (12) victory.no.bad@gmail.com a1x+b1 y=c1 a x+b y=c uses crt; var a1, b1, c1, a2, b2, c2:integer; d, dx, dy:real; begin clrscr; writeln('nhap cac he so a1,b1,c1:'); readln(a1,b1,c1); writeln('nhap cac he so a2,b2,c2:'); readln(a2,b2,c2); d:=a1*b2-a2*b1; dx:=c1*b2-c2*b1; dy:=a1*c2-a2*c1; if (d=0) and ((dx<>0) or (dy<>0)) then writeln('HPT vo ng') else if (d=0) and (dx=0) and (dy=0) then writeln('HPT co vo so ng') else begin writeln('HPT co ng:'); writeln('x=',dx/d:3:2,'y=',dy/d:3:2); end; readln; end Bµi 4: NhËp vµo sè nguyªn KiÓm tra: + N chia hÕt cho kh«ng? + N bao nhiªu ch÷ sè? + Tæng c¸c ch÷ sè cña N? - 12 Lop11.com (13) NguyÔn ThÞ Huª _ THPT T©n Yªn II – B¾c Giang + Số đảo ngược N? uses crt; var n,m,t:word; s,s1:string; i:byte; begin clrscr; write(' N=');readln(n); if n mod 3=0 then writeln(n,' chia het cho 3') else writeln(n,' khong chia het cho 3'); m:=n; i:=0; t:=0; while m>0 begin i:=i+1; t:=t+m mod 10; m:=m div 10; end; writeln('so cac chu so cua ',n,':',i); writeln('tong cac chu so cua ',n,':',t); str(n,s); for i:=length(s) downto s1:=s1+s[i]; writeln(' so dao nguoc cua ',n,':',s1); readln; end Bµi 5: tÝnh tæng cña N ngh×n VND tõ lo¹i tiÒn: 1000 VND, 2000 VND, 5000 VND Lập trình tất các phương án uses crt; var i,j,k,n,d: integer; begin clrscr; - 13 Lop11.com (14) victory.no.bad@gmail.com write('so tien (don vi la nghin VND): '); readln(n); d:=0; for i:=1 to n for j:=1 to n div for k:=0 to n div if n=i+j*2+k*5 then begin d:=d+1; writeln('phuong an thu ',d,' :'); write(n,'000 VND = ',i,'*1000 + ',j,'*2000 +',k,'*5000'); writeln; end; readln; end Bµi 6: TÝnh gi¸ trÞ cña ®a thøc f(x) = anxn+ an-1xn-1+… a1x1+a0 var x,n,i:integer; f:real; a:array [0 100] of integer; begin write('x=');readln(x); write('n=');readln(n); writeln('nhap cac he so:'); for i:=0 to n begin write('A[',i,']=');readln(a[i]); end; f:=a[n]; for i:=n downto - 14 Lop11.com (15) NguyÔn ThÞ Huª _ THPT T©n Yªn II – B¾c Giang f:=f*x +a[i-1]; f:=f+a[0]; writeln('KQ: ',f:7:2); readln; end 3.3 Bµi tËp vÒ m¶ng Bµi 1: Thùc hiÖn c¸c phÐp tÝnh céng, trõ, nh©n ma trËn vu«ng (Chó ý: céng vµ trõ chØ thùc hiÖn ®îc víi ma trËn cïng cì n x m Nh©n ma trËn thùc hiÖn víi ma trËn cã dang: Anxm x Bmxl) uses crt; var a,b,c,d: array[1 10,1 10] of integer; m,n,l,i,j,k:byte; begin clrscr; write('n=');readln(n); for i:=1 to n for j:=1 to n begin write('A[',i,',',j,']='); readln(a[i,j]); end; for i:=1 to n for j:=1 to n begin write('B[',i,',',j,']='); readln(b[i,j]); end; for i:=1 to n - 15 Lop11.com (16) victory.no.bad@gmail.com for j:=1 to n begin c[i,j]:=a[i,j]+b[i,j]; d[i,j]:=a[i,j]-b[i,j]; end; writeln('ma tran tong:'); for i:=1 to n begin for j:=1 to n write(c[i,j]:5); writeln;writeln; end; writeln('ma tran hieu:'); for i:=1 to n begin for j:=1 to n write(d[i,j]:5); writeln;writeln; end; for i:=1 to n for k:=1 to n begin c[i,k]:=0; for j:=1 to n c[i,k]:=c[i,k]+a[i,j]*b[j,k]; end; writeln('ma tran tich:'); for i:=1 to n begin for j:=1 to n write(c[i,j]:6); writeln;writeln; end; - 16 Lop11.com (17) NguyÔn ThÞ Huª _ THPT T©n Yªn II – B¾c Giang readln; end Bµi 2: NhËp m¶ng chiÒu cÊp nxn + Kiểm tra xem mảng có đối xứng qua đường chéo chính không + §a phÇn tö lín nhÊt, nhá nhÊt cña m¶ng + Cã sè nµo lµ íc cña mäi sè kh«ng? Cã sè nµo lµ béi cña mäi sè kh«ng? uses crt; var a: array[1 10,1 10] of integer; n,i,j,max,min:byte; kt:boolean; begin clrscr; write('n=');readln(n); for i:=1 to n for j:=1 to n begin write('A[',i,',',j,']='); readln(a[i,j]); end; for i:=1 to n begin for j:= to n write(a[i,j]:5); writeln; end; kt:=true; i:=1; j:=1; while (i<=n) and (j<=n) and (kt=true) begin if a[i,j]<>a[j,i] then kt:=false; i:=i+1; - 17 Lop11.com (18) victory.no.bad@gmail.com j:=j+1; end; if kt=true then writeln('MT doi xung qua duong cheo chinh') else writeln('Mt ko doi xung qua duong cheo chinh'); max:=a[1,1]; min:=a[1,1]; for i:=1 to n for j:=1 to n begin if a[i,j]>max then max:=a[i,j]; if a[i,j]<min then min:=a[i,j]; end; writeln('GTLN cua mang:', max,' GTNN cua mang:',min); kt:=true; for i:=1 to n if a[i] mod <>0 then kt:=false; if kt=true then writeln(a[i],'la uoc cua moi so') else writeln('ko co so nao la uoc cua moi so'); kt:=true; for i:=1 to n if max mod a[i] <> then kt:=false; if kt=true then write(max,'la boi cua moi so') else writeln('ko co so nao la boi cua moi so'); readln; end Bµi 3: NhËp ma trËn vu«ng nxn + TÝnh tæng c¸c phÇn tö ë dßng vµ cét + TÝnh tæng c¸c phÇn tö trªn ®êng chÐo chÝnh vµ ®êng chÐo phô - 18 Lop11.com (19) NguyÔn ThÞ Huª _ THPT T©n Yªn II – B¾c Giang uses crt; var a: array[1 10,1 10] of integer; n,i,j,t1,t2:byte; begin clrscr; write('n=');readln(n); for i:=1 to n for j:=1 to n begin write('A[',i,',',j,']='); readln(a[i,j]); end; for i:=1 to n begin for j:=1 to n write(a[i,j]:5); writeln; writeln; end; t1:=0; for i:=1 to n t1:=t1+a[2,i]+a[i,2]; t1:=t1-a[2,2]; writeln('tong cac phan tu o dong cot 2: ',t1); t2:=0; for i:=1 to n t2:= t2 + a[i,i] + a[i,n-i+1]; if n mod <>0 then t2:=t2-a[(n div 2)+1,(n div 2)+1]; writeln('tong cac phan tu tren duong cheo chinh va duong cheo phu: ',t2); readln; end - 19 Lop11.com (20) victory.no.bad@gmail.com Bµi 4: NhËp vµo d·y sè nguyªn S¾p xÕp l¹i thµnh d·y kh«ng gi¶m uses crt; type mt=array[1 100] of integer; var a:mt; n,i,j,t,cv:byte; procedure hoan_vi(var x,y:integer); var tg:integer; begin tg:=x; x:=y; y:=tg; end; procedure nhap_day(var a:mt;n:integer); begin for i:=1 to n begin write('A[',i,']=');readln(a[i]); end; end; procedure in_day(var a:mt;n:integer); begin writeln; for i:=1 to n write(a[i]:7); end; procedure sx_lua_chon(var a:mt;n:integer); var m:integer; begin for i:=1 to n begin m:=1; - 20 Lop11.com (21)