HomeHọc sinh giỏi môn tin

Seri 100 bài tập Pascal nâng cao – CHƯƠNG III : CÂU LỆNH CÓ CẤU TRÚC LẶP XÁC ĐỊNH

Like Tweet Pin it Share Share Email
Like và share giúp mình phát triển website nhé.
  •  
  •  

CHƯƠNG III : CÂU LỆNH CÓ CẤU TRÚC LẶP XÁC ĐỊNH

  1. LÝ THUYẾT:
  2. CÂU LỆNH LẶP

2.1. Vòng lặp xác định

Có hai dạng sau:

Œ        Dạng tiến      

FOR <biến đếm>:=<giá trị Min> TO <giá trị Max> DO       S;

        Dạng lùi

FOR <biến đếm>:=<giá trị Max> DOWNTO <giá trị Min> DO     S;

Sơ đồ thực hiện vòng lặp FOR:

Chú ý: Khi sử dụng câu lệnh lặp FOR cần chú ý các điểm sau:

  • Không nên tuỳ tiện thay đổi giá trị của biến đếm bên trong vòng lặp FOR vì làm như vậy có thể sẽ không kiểm soát được biến đếm.
  • Giá trị Max và Min trong câu lệnh FOR sẽ được xác định ngay khi vào đầu vòng lặp. Do đó cho dù trong vòng lặp ta có thay đổi giá trị của nó thì số lần lặp cũng không thay đổi.

 

  1. BÀI TẬP

Bài tập 3.1:

Viết chương trình in ra các số lẻ nhỏ hơn hoặc bằng n (Với n được nhập).

  1. Hướng dẫn:

– Cho biến i chạy từ 1 đến n.

–  Nếu i chẵn ( i chia 2 dư 0) thì in ra số n.

  1. Mã chương trình:
Program In_So_Le;

Uses crt;

var i,n: integer;

Begin

Clrscr;

Write(‘Nhap so n =’); readln(n);

For i:=1 to n do if i mod 2 =1 then Write(i:3,’,’);

readln

end.

Bài tập 3.2:

Viết chương trình in ra các số lẻ nhỏ hơn hoặc bằng n ( Với n được nhập). Sao cho 15 số lẻ được in trên một dòng.

  1. Hướng dẫn:

– Cho j =0.

– Cho biến i chạy từ 1 đến n.

–  Nếu i chẵn ( i chia 2 dư 0) thì in ra số n và tăng dem lên 1

– Nếu dem chia hết cho 15 thì thực hiện xuống dòng (Dùng Writeln).

  1. Mã chương trình:
Program In_So_Le;

Uses crt;

var Dem,i,n: integer;

Begin

Clrscr;

Write(‘Nhap so n =’); readln(n);

Dem:= 0;

For i:=1 to n do if i mod 2 =1 then

Begin

Write(i:3,’,’);

Dem:= Dem + 1;

if Dem mod 15 = 0 then Writeln;

end;

readln

end.

  1. Nhận xét: Lệnh writeln không có tham số cho phép xuống hàng.

Nếu có nhận xét trong 30 số thì có 15 số lẻ, ta có thể không cần thêm biến đếm mà chỉ cần kiểm tra biến i để xuống hàng.

 

Bài tập 3.3:

Viết chương trình in ra tổng các số lẻ nhỏ hơn hoặc bằng n ( Với n được nhập).

  1. Hướng dẫn:

– Cho S = 0.

– Cho biến i chạy từ 1 đến n.

–  Nếu i chẵn ( i chia 2 dư 0) thì cộng thêm i vào S.

– In ra S.

  1. Mã chương trình:
Program In_So_Le;

Uses crt;

var S,i,n: integer;

Begin

Clrscr;

Write(‘Nhap so n =’); readln(n);

S:= 0;

For i:=1 to n do if i mod 2 =1 then S:= S+i;

Writeln(‘Tong cac so le nho hon ‘,n,’ la: ‘,S);

readln

end.

  1. Nhận xét: Ta dùng biến S để cộng dồn nên nó được khởi tạo giá trị đầu bằng 0.

 

Bài tập 3.4:

Viết chương trình in ra tất cả các ước của một số n (Với n được nhập từ bàn phím)

  1. Hướng dẫn:

– Cho biến i chạy từ 1 đến n. Nếu n chia hết cho i thì in ra i.

  1. Mã chương trình:
Program Tim_uoc;

uses crt;

Var n, i: integer;

Begin

clrscr;

Write(‘Nhap so n =’); readln(n);

For i:=1 to n do if n mod i = 0 then write(i:3,’,’);

readln

end.

  1. Nhận xét: Chương trình trên có hai điểm yếu:

– In dư một dấu phẩy ở cuối dãy các ước.

– Khi n = 0 thì không in một số nào trong khi mọi số đều là ước của 0.

Hãy tìm cách khắc phục yếu điểm này.

Bài tập 3.5:

Một số có tổng các ước nhỏ hơn nó bằng chính nó được gọi là số hoàn chỉnh.

Ví dụ: 6 có các ước nhỏ hơn nó là 1, 2, 3. Tổng là 1 + 2 + 3 = 6.

Viết chương trình xét xem một số n được nhập từ bàn phím có phải là số hoàn chỉnh không.

  1. Hướng dẫn:

– Dùng biến n lưu số cần xét.

– Biến S có giá trị ban đầu bằng 0.

– Cho i chạy từ 1 đến n-1. nếu i là ước của n thì cộng thêm i vào S.

– Nếu S = n thì S là số hoàn chỉnh.

  1. Mã chương trình:
Program So_Hoan_Chinh;

uses crt;

var n, i, s: integer;

begin

write(‘nhap so n: ‘);readln(n);

s:=0;

for i:= 1 to n -1 do if n mod i = 0 then s:=s+i;

if s = n then write(n, ‘ la so hoan chinh’)

else writeln(n, ‘ khong phai la so hoan chinh’);

readln

end.

Bài tập 3.6:

Viết chương trình tìm các số hoàn chỉnh nhỏ hơn n (Với n được nhập từ bàn phím).

  1. Hướng dẫn:

Cho biến i chạy từ 1 đến n. Xét i. Nếu nó là số hoàn chỉnh thì in ra.

  1. Mã chương trình:
Program Tim_uoc_2;

uses crt;

Var S, n, i,j: longint;

Begin

clrscr;

Write(‘Nhap so n =’); readln(n);

For i:=1 to n do

Begin

S:=0;

For j:=1 to i do if i mod j = 0 then S:=S+j;

if S = 2*i then write(i:6,’,’);

end;

readln

end.

  1. Nhận xét: Ở đây ta sử dụng hai vòng lặp lồng nhau.

 

Bài tập 3.7

In bảng cửu chương n (Với n nhập từ bàn phím)

a.Hướng dẫn :

  1. Mã chương trình:
Program Cuu_Chuong_1;

uses crt;

var  n, i : integer;

begin

clrscr;

write(‘Nhap n: ‘); readln(n);

for i:= 1 to 9 do writeln(n,’ x ‘, i, ‘ = ‘, n*i);

readln

end.

Bài tập 3.8

Lần lượt in các bảng cửu chương.

a.Hướng dẫn :

– Cho biến i chạy từ 2 đến 9

– In bảng cửu chương i.

  1. Mã chương trình:
Program Cuu_Chuong_1;

uses crt;

var  i,j : integer;

begin

clrscr;

for i:= 2 to 9 do

Begin

Writeln(‘Bang cuu chuong ‘,i);

For j := 1 to 9 do writeln(i,’ x ‘, j, ‘ = ‘, j*i);

readln

end;

readln

end.

  1. Nhận xét: Chương trình này in bảng cửu chương dọc (Hết bảng này đến bảng khác tính từ trên xuống). Hãy sửa chương trình để in theo kiểu ngang thường thấy.

Bài tập 3.9

Viết chương trình xét xem một số n có phải là số nguyên tố không?

a.Hướng dẫn:

– Nếu n không chia hết mọi số i có giá trị từ 2 đến n – 1  thì n là số nguyên tố.

– Sử dụng biến ok có kiểu boolean và có giá trị ban đầu là true.

– Cho biến i chạy từ 2 đến n – 1. Xét n mod i. Nếu bằng 0 thì gán ok = false. Ngược lại vẫn để nguyên ok.

b.Mã chương trình:

Program Nguyen_to_1;

uses crt;

var n, i: integer;

ok: boolean;

begin

ok:=true;

write(‘Nhap n: ‘);readln(n);

for i:= 2 to n – 1 do if n mod i = 0 then

ok :=false;

if ok then write(n,’ la so nguyen to’)

else write(n, ‘ khong la so nguyen to’);

readln

end.

  1. Nhận xét: Ở đây ta sử dụng biến có kiểu logic (Đúng, sai). Chỉ cần một lần n mod i = 0 thì sau khi thực hiện xong vòng lặp ok có giá trị là false.

Bài tập 3.10

Viết chương trình in ra tất cả các số nguyên tố bé hơn hoặc bằng n?

  1. Hướng dẫn:

            – Cho i chạy từ 2 đến n.

– Xét  i. Nếu nó là số nguyên tố thì in nó ra.

  1. Mã chương trình:
Program Nguyen_to_1;

uses crt;

var n, i, j: integer;

ok: boolean;

begin

clrscr;

write(‘Nhap n: ‘); readln(n);

for i := 2 to n do

begin

ok:=true;

for j:= 2 to i – 1 do if i mod j = 0 then

ok :=false;

if ok then write(i,’;’)

end;

readln

end.

 

 

 

 

 

 

 

 

 

Comments (0)

Trả lời

Your email address will not be published. Required fields are marked *