Bài Tập Pascal Lớp 8 Nâng Cao - Toàn Thua

Bài tập pascal nâng cao có lời giải bồi dưỡng học sinh giỏi Tin học THCS, Các chuyên de bồi dưỡng học sinh giỏi Tin học THPT, Tài liệu bồi dưỡng học sinh giỏi Pascal THPT, đề thi học sinh giỏi tin học lớp 9 cấp huyện 2019-2020, Chuyên de bồi dưỡng học sinh giỏi môn Tin học THPT, Giáo an bồi dưỡng học sinh giỏi tin học THCS, De thi học sinh giỏi Tin học lớp 9 cấp huyện có đáp an, Tài liệu ôn thi học sinh giỏi môn tin học THCS, Bài tập Pascal lớp 11, 100 bài tập Turbo Pascal, 100 bài tập Pascal lớp 8, 500 bài tập Pascal từ cơ bản đến nâng cao, 100 bài tập Pascal bồi dưỡng học sinh giỏi, 100 bài Turbo Pascal, Bài tập Pascal lớp 8, Học Pascal từ cơ bản đến nâng cao, 100 bài tập Turbo Pascal lớp 8 violet, 100 bài tập free Pascal lớp 8, Bài tập về câu lệnh lặp trong Pascal lớp 8, 100 bài tập Pascal bồi dưỡng học sinh giỏi, Bài tập Pascal lớp 8 . Hãy tham khảo với onthihsg ngay nhé.

– Để lưu trữ một đa thức ta chỉ cần lưu các hệ số (bằng một mảng)và bậc của đa thức.

– Các phép toán đối với một đa thức gồm cộng, trừ, nhân, chia hai đa thức.

– Việc tính giá trị đa thức tại một giá trị của biến được thực hiện thông qua lược đồ hooc nơ hoặc tính trực tiếp.

Viết chương trình cho phép cộng hai đa thức. Kết quả in ra dạng:

a­nx^n + … + a1x + a0

Giải thuật:

– Dùng hai mảng A, B để lưu hệ số của hai đa thức. Có thể dùng mảng thứ ba C hoặc dùng lại một trong hai mảng A, B  để lưu hệ số của đa thức tổng.

– Khi in kết quả cần kiểm tra hệ số để in dấu cho đúng.

Cài đặt viết chương trình tính giá trị của đa thức

Program Cong_da_thuc;

uses crt;

Type KM = array[0..10] of integer;

Var A,B: KM;

n: byte;

Procedure NhapDT(Var A: KM; n:byte);

Var i: byte;

Begin

For i:=n downto 0 do

Begin Write(‘M[‘,i,’]=’); Read(A[i]);  End;

End;

Procedure CONG(Var A:KM;B:KM;n:byte);

Var i: byte;

Begin

For i:= 0 to n do A[i]:=A[i]+B[i];

End;

Procedure INDT(A:KM;n:byte);

Var i: byte;

Begin

if A[n] 0 then Write(A[n],’x^’,n);

For i:=n-1 downto 0 do

if A[i] 0 then

if A[i] < 0 then write(A[i],’x^’,i) else Write(‘+’,A[i],’x^’,i);

End;

Begin

clrscr;

Write(‘Nhap bac n: ‘);Readln(n);

Writeln(‘Nhap da thuc A: ‘); NhapDT(A,n);

Writeln(‘Nhap da thuc B: ‘); NhapDT(B,n);

clrscr;

Indt(A,n); Writeln;

Indt(B,n); Writeln;

Cong(A,B,n);

Writeln(‘Da thuc tong: ‘);

Indt(A,n);

Readln;

Readln

End.

Viết chương trình cho phép tính giá trị của đa thức A(x) tại giá trị x = x0.

Giải thuật:

– Dùng chương trình con để tính xn.

Cài đặt viết chương trình tính giá trị biểu thức trong pascal

Program Gia_tri_cua_da_thuc;

Var n,i: integer;

x,a,s:real;

Function XMU(x:real; n:integer):real;

Var i: integer;

Mu: real;

Begin

Mu:=1;

For i:=1 to n do Mu:=Mu*x;

XMU:=Mu;

End;

Begin

Write(‘Nhap bac cua da thuc n = ‘); Readln(n);

Write(‘Tinh f(x) tai x = ‘);Readln(x);

S:=0;

For i:=n downto 0 do

Begin

Write(‘a’,i,’= ‘); Readln(a);

S:=S+a*XMU(x,i);

End;

Writeln(‘F(‘,x:5:2,’)= ‘,S:5:2);

Readln;

End.

Viết chương trình tính giá trị của đa thức A(x) với điều kiện không dùng biến mảng.

Viết chương trình tính giá trị của đa thức f(x) = anxn + … +a1x + a0 tại x = x0.

Thuật toán: f(x) = anxn + … +a1x + a0

                                                                                                = a0 + x(a1 + x(a2 + … x(an-1 + x(an))…))

Lặp lại việc: Đọc và cộng hệ số rồi nhân với x từ hệ số an  đến hệ số a0.

Chương trình:

Program Gia_tri_da_thuc;

Var S,a,x: real;

n,i: byte;

Begin

Write(‘Nhap bac cua da thuc. n = ‘); Readln(n);

Write(‘Tinh f(x) tai x = ‘);Readln(x);

S:=0;

For i:= n downto 0 do

Begin

Write(‘a’,i,’=’);Readln(a);

S:=(S+a)*x;

End;

Write(‘f(‘,x:3:1,’)=’,S:5:1);

Readln

End.

Viết chương trình cho phép nhân hai đa thức đã sắp xếp.

Thuật toán: Tích đa thức A bậc m với đa thức B bậc n là đa thức C bậc m + n. Trong đó : C[m] = Tổng của các tích A[i] * A[j] sao cho i+j = m.

Program Nhan_da_thuc;

Var m,n,i,j:byte;

A, B, C: array[0..10] of real;

Begin

Write(‘ Nhap bac cua da thuc A: ‘); Readln(m);

For i:= m downto 0 do

Begin

Write(‘A[‘,i,’]= ‘); Readln(A[i]);

End;

Write(‘ Nhap bac cua da thuc B: ‘); Readln(n);

For i:= n downto 0 do

Begin

Write(‘B[‘,i,’]= ‘); Readln(B[i]);

End;

For i:=0 to m+n do C[i]:=0;

For i:=0 to m do

For j:=0 to n do C[i+j]:=C[i+j]+A[i]*B[j];

For i:= m+n downto 0 do if C[i]0 then Write(C[i]:3:1,’x^’,i,’ + ‘);

Readln

End.

Viết chương trình cho phép chia hai đa thức để tìm đa thức thương và đa thức dư.

Cài đặt:

Program Chia_da_thuc;

uses crt;

Type KM = array[0..10] of real;

Var A,B,C,AB,D: KM;

i,n,cs,bc: byte;

Procedure NhapDT(Var A: KM; n:byte);

Var i: byte;

Begin

For i:=n downto 0 do

Begin Write(‘M[‘,i,’]=’); Read(A[i]);  End;

End;

Function BAC(A:KM;n:integer):Byte;

Var i:Byte;

Begin

i:=n;

While (A[i]=0) and (i> 0) do i:=i-1;

BAC:=i;

End;

Procedure TRU(Var A:KM;B:KM;n:byte);

Var i: byte;

Begin

For i:= 0 to n do A[i]:=A[i]-B[i];

End;

Procedure NHAN(Var C:KM;A,B:KM; Var n:byte);

Var i,j:byte;

TAM:KM;

Begin

n:=Bac(A,n)+Bac(B,n);

For i:= 0 to 2*n do TAM[i]:=0;

For i:= 0 to n do

For j:=0 to n do TAM[i+j]:=TAM[i+j]+A[i]*B[j];

For i:=0 to 2*n do C[i]:=TAM[i];

End;

Procedure INDT(A:KM;n:byte);

Var i: byte;

Begin

if A[n] 0 then Write(A[n]:3:1,’x^’,n);

For i:=n-1 downto 0 do

if A[i] 0 then

if A[i] < 0 then write(A[i]:3:1,’x^’,i) else Write(‘+’,A[i]:3:1,’x^’,i);

End;

Procedure DT_BAC(Var A:KM;Bac:byte;gt:real);

Var i:byte;

Begin

For i:=1 to n do A[i]:=0;

A[Bac]:=gt;

End;

Begin

clrscr;

Write(‘Nhap bac cua da thuc bi chia: ‘);Readln(n);

Writeln(‘Nhap da thuc A: ‘); NhapDT(A,n);

Writeln(‘Nhap da thuc B: ‘); NhapDT(B,n);

clrscr;

Write(‘Da thuc bi chia: ‘);Indt(A,n); Writeln;

Write(‘Da thuc chia: ‘);Indt(B,n); Writeln;

bc:=Bac(A,n)-Bac(B,n); {Luu bac cua da thuc C}

For i:=1 to bc do C[i]:=0;

While BAC(A,n) >= BAC(B,n) do

Begin

cs:=BAC(A,n)-BAC(B,n);

C[cs]:=A[Bac(A,n)]/B[Bac(B,n)];

Writeln(‘C[‘,cs,’]=’,C[cs]:3:1);

DT_BAC(D,cs,C[cs]);Writeln;

Write(‘Da thuc D:’);

Indt(D,n);

NHAN(AB,B,D,n);Writeln;

Write(‘Da thuc AB:’);

Indt(AB,n);Writeln;

TRU(A,AB,n);

Write(‘Da thuc A moi:’);

Indt(A,n);

End;

Writeln(‘Da thuc thuong: ‘);

Indt(C,bc);

Readln;

Readln

End.

Bài 1: Viết chương trình tính tổng tích các biểu thức S = 1*1+1*2+…1*10 + 2*1+2*2+…+…+ M*N. Bài 2: Viết chương trình đưa ra màn hình 2 câu: “Chào bạn. Bạn có khỏe không!”. In 5 lần lên màn hình. Bài 3: Viết chương trình vẽ hình chữ nhật và điền dấu * như hình sau: * * * * * * * * * * * * * * * Bài 4: Viết chương trình tìm ước chung lớn nhất của hai số nguyên. In kết quả ra màn hình. Bài 5: Viết chương trình tính trung bình cộng của các số nhập vào từ bàn phím. Khi muốn kết thúc nhập để tính trung bình thì nhấn phím 0. In kết quả ra màn hình. Bài 6: Viết chương trình tính tổng bình phương của n số nguyên đầu tiên. In kết quả ra màn hình. Bài 7: Viết chương trình tính tổng bậc 3 của n số nguyên đầu tiên. In kết quả ra màn hình. Bài 8: Viết chương trình nhập vào một số nguyên rồi in ra màn hình tất cả các ước số của số đó. Bài 9: Viết chương trình vẽ 1 tam giác cân bằng dấu . In ra màn hình tam giác đó. Bài 10: Viết chương trình tính tổng nghịch đảo của n số nguyên đầu tiên . Bài 11: Viết chương trình tính tổng bình phương các số chẵn từ 1 đến n; với n được nhập từ bàn phím. Bài 12: Viết chương trình nhập vào n số nguyên , tìm số lớn nhất trong các số đó. In kết quả ra màn hình. Bài 13: Viết chương trình tính giai thừa của n, với n được nhập từ bàn phím. Bài 14: Viết chương trình chứng minh rằng phép chia giữa hai số nguyên, chẳng qua chỉ là phép trừ. In kết quả ra màn hình là số thương và số dư. Bài 15: Viết chương trình nhập vào một số và kiểm tra xem số đó có phải là số nguyên tố hay không? Bài 16: Viết chương trình tính xn, với x, n được nhập từ bàn phím. Bài 17: Viết chương trình nhập vào một số nguyên, in ra màn hình số nguyên đó có mấy ký tự số. Bài 18: Viết chương trình tính tổng S = 1+2+3+…+ n sao cho S > 1000. Hỏi khi đó cụ thể S bằng bao nhiêu? Bài 19: Viết chương trình tính tổng S = 12 +22 +…+n2 . In kết quả ra màn hình.

Bài 20: Viết chương trình tính tổng của n số nguyên đầu tiên. Số n và các số hạng của tổng được nhập từ bàn phím. In kết quả ra màn hình.

Hướng dẫn giải

Câu 1

var i,j,n,s: integer; begin s:= 0; write(‘Nhap so lan lap: ‘); readln(n); for i:= 1 to n do for j:= 1 to 10 do s:= s+(i*j); write(‘S = ‘,s);

end.

Câu 2

var i: integer; begin for i:= 1 to 5 do writeln (‘Chao ban. Ban co khoe khong?’);

end.

————————————————– Câu 3

var i,j: integer; begin for i:= 1 to 3 do begin for j:= 1 to 5 do write(‘*’); writeln; end; end. ————————————————–

Câu 4

var x,y,u: longint; begin write(‘Nhap x: ‘); readln(x); write(‘Nhap y: ‘); readln(y); while xy do if x>y then x:=x-y else y:=y-x; u:=x; write(‘Uoc chung lon nhat cua x va y la: ‘,u);

end.

—————————————————- Câu 5

var t,i: integer; k: real; begin t:=0; i:=0; writeln(‘Nhap so muon tinh trung binh cong, nhan phim 0 de ket thuc’); repeat begin i:=i+1; write(‘Nhap so thu ‘,i,’: ‘); readln(t); k:=k+t; end; until t=0; k:=k/(i-1); write(‘Trung binh cong cua day so vua nhap: ‘,k); end.

————————————————————–

Câu 6

var i,n,m: integer; begin m:=0; write(‘Nhap n: ‘); readln(n); for i:=1 to n do m:= m+i*i; write(‘Tong binh phuong: ‘,m); readln; end. ————————————————————–

Câu 7

var i,n,m: integer; begin m:=0; write(‘Nhap n: ‘); readln(n); for i:=1 to n do m:= m+i*i*i; write(‘Tong binh phuong: ‘,m); readln; end. —————————————————————-

Câu 8

var i,n: integer; begin write(‘Nhap n: ‘); readln(n); write(‘Cac uoc so cua ‘,n,’:’); for i:=1 to n do if n mod i = 0 then write(i:4); readln; end. —————————————————————-

Câu 9

var i,j,n: integer; begin write(‘Nhap n: ‘); readln(n); for i:=1 to n do begin for j:=0 to n-i do write(‘ ‘); for j:=0 to i-1 do write(‘* ‘); writeln; end; readln; end. ————————————————————-

Câu 10

var i,n: integer; t: real; begin t:=0; write(‘Nhap n: ‘); readln(n); for i:=1 to n do t:= t+(1/i); write(‘Tong nghich dao: ‘,t:2); readln; end. ————————————————————

Câu 11

var i,n,t: integer; begin t:=0; i:=2; write(‘Nhap n: ‘); readln(n); while imax then max:=min; end; write(‘So lon nhat: ‘,max); readln; end.

Câu này có nhược điểm là không so sánh được số âm, các bạn tự cải tiến thuật toán nhe.

Var s,s1:string; Begin write(‘nhap chuoi s= ‘);readln(s); S1:=‘’; For i:= length(s) downto 1 do s1:=s1+s[i] ; writeln(‘chuoi dao nguoc la :’, s1); readln; End.

——————————————————————–

Hướng giải : Lời giải mẫu : Var s:string; Begin write(‘nhap chuoi s= ‘);readln(s); For i:=1 to length(s) do s[i] := upcase(s[i]) ; writeln(‘kq =‘ , s ); readln; End.

——————————————————————–

Var s:string; Begin write(‘nhap chuoi s= ‘);readln(s); while (s[1] =‘ ‘) and (length(s)>0) do delete (s,1,1); while (s[length(s)] =‘ ‘) and (length(s)>0) do delete (s,length(s),1); Writeln( ‘ kq = ‘ , s ); Readln; End.

——————————————————————–

Vd : câu cho là : toi di hoc o truong trung hoc , di duong rat met nhoc

kết quả là 3à        Xâu cần tìm là : hoc Lời giải mẫu : Var s,a :string; vt,d,dem:byte; Begin write(‘nhap xau s= ‘);readln(s); write(‘nhap xau can tim a= ‘);readln(a); d:=length(a); Dem:=0; While pos(a,s)>0 do begin vt:=pos(a,s) ; dem:=dem+1; s:=copy(s,vt+d,255); end; writeln(‘so lan =‘ , dem ); readln; end.

——————————————————————–

Hướng giải :  Lời giải mẫu : Var s,a :string; vt,d,dem:byte; Begin write(‘nhap chuoi s= ‘);readln(s); write(‘nhap tu can tim a= ‘);readln(a); d:=length(a); Dem:=0; While pos(a,s)>0 do begin vt:=pos(a,s) ; if (vt-1=0) and (vt+d-1=length(s))  then dem:=dem+1 ; if (vt-1=0) and (vt+d-10) and (s[vt-1]=‘ ‘) and (vt+d-1=length(s))  then dem:=dem+1 ; if (vt-1>0) and (s[vt-1]=‘ ‘) and (vt+d-10 do begin vt:=pos(a,s) ; if  ( (vt-1=0) and (vt+d-1=length(s)) ) or ( (vt-1=0) and (vt+d- 10) and (s[vt-1]=‘ ‘) and  (vt+d-1=length(s))  ) or ( (vt-1>0) and (s[vt-1]=‘ ‘) and (vt+d-10 do begin a:=s[1]; while pos(a,s)>0 do begin vt:=pos(a,s); delete(s,vt,1); end; if pos(a,s2)>0 then kq:=kq+a; end; writeln(‘s1=‘,s1); writeln(‘s2=‘,s2); writeln(‘cac ky tu co trong 2 chuoi la :‘ , kq , ‘gom so ky tu la= ‘,length(kq)); readln; end.

——————————————————————–

Const    nmax=30; Var  a:array [1..nmax] of string[8] ; x :string; I,dem:byte; Begin write(‘nhap so hs n= ‘);readln(n);dem:=0; for i:=1 to n do begin  write(‘nhap ten hs ‘ , I , ‘la= ‘);readln(a[i]); end; write(‘nhap xau x can tim la= ‘);readln(x); writeln(‘Ket qua :’); for i:=1 to n do if pos(x,a[i]) >0 then  begin writeln(a[i]); dem:=dem+1; end; writeln(‘So truong hop tim thay la =’ , dem); readln; end. ——————————————————————–

9/ Viết CT nhập ho , tên , diemtb của n học sinh (nten[j+1] then begin  a:=ten[j]; ten[j]:=ten[j+1]; ten[j+1]:=a; b:=ho[j];  ho[j]:=ho[j+1]; ho[j+1]:=b; c:=tb[j];tb[j]:=tb[j+1];tb[j+1]:=c; end; for  i:=1 to n do writeln(ho[i]:40,ten[i]:10,tb[i]:10:2); readln; end.

——————————————————————–

Const    nmax=30; mmax=15; Var  hoten: array [1..nmax] of string[45] ; tb  : array [1..nmax] of real ; n,m,i,j,dem : byte; tg,d : real; xl : string[8] ; Begin   write(‘nhap so hs n= ‘);readln(n); write(‘nhap so mon m= ‘);readln(m); for i:=1 to n do begin   write(‘nhap hoten   hs ‘ , I , ‘la= ‘);readln(hoten[i]);  tg:=0; for j:=1 to m do begin   write(‘nhap diem mon ‘ , j , ‘la= ‘);readln(d); tg:=tg + d; end; tb[i]:=tg/m; end; dem:=0; for i:= 1 to n do begin write(hoten[i]:50,tb[i]:10:2); if tb[i] 0) OR (X0) AND (X>10) …

  1. If A, B, C >0 then ….
  2. If A>0, B>0, C>0 then ….
  3. If (A>0) OR (B>0) OR (C>0) then ….
  4. If (A>0) AND (B>0) AND (C>0) then ….
  1. If A != B then ….
  2. If A ¹B then ….
  3. If A B then ….
  4. If A >< B then ….

Var A, B : integer;

Begin

A:= 10; B:= 11; A:= 2*A + 2; B:= 2*B-2

If (AB then write(1);

End.

Kết quả của chương trình trên là:

Var X, Y : integer;

Begin

X:= 11; Y:= 10;

If (X

Từ khóa » Các Bài Toán Pascal Lớp 8 Nâng Cao