Câu lệnh lặpFOR... TO ... DO ...Bài 5.1(1) Cú pháp của câu lệnh FOR dạng tiến là:A. FOR := V1 TO V2 DO B. FOR DO C. FOR := V1 TO V2 DO D. FOR := V1 DOWNTO V2 DO (2): Khi thực hiện, câu lệnh FOR dừng lại khi nào?A. Khi đã thực hiện n lầnB. Khi đã thực hiện V2 – V1 + 1 lầnC. Khi biến đếm cho giá trị Đúng (TRUE)D. Khi biến đếm có giá trị N+1(3) Phát biểu Đúng về việc thực hiện câu lệnh FOR dạng tiến:A. Thực hiện lặp đi lặp lại N lần B. Thực hiện khi Biến đếm = 1 C. Số lần lặp được xác định trước D. Số lần lặp không xác định trước cho đến khi thực hiện xong lệnh lặp(4) Chọn câu lệnh FOR dạng tiến ĐÚNG (Khai báo I,N: Integer, X: REAL)A. FOR I:= 1 TO 100 DO X+1;B. FOR I:= 1 TO 100 DO X := X+1;C. FOR I = 1 TO N DO K := K+1;D. FOR I:= 10 DOWNTO 1 DO X := X+1;(5) Câu lệnh nào sau đây là đúng với cấu trúc lặp FOR có nhiều lệnh con ?A. FOR I:=1 TO N DO A := A – 1 ; B := B – A ; ENDFOR;B. FOR I:=1 TO N DO BEGIN A := A – 1 ; B := B – A ; END;C. FOR I:=1 TO N DO A := A – 1 ; B := B – A ; D. FOR I >= 1 TO I 5 THEN BELL:= BELL + 2 ; END;(1) Giá trị của SUKA ngay sau khi lệnh lặp FOR kết thúc là bao nhiêu?A. 100B. 258C. 358D. 150(2) Giá trị của KALA ngay sau khi lệnh lặp FOR kết thúc là bao nhiêu?A. 1B. 10C. 11D. 5(3) Giá trị của BELL ngay sau khi lệnh lặp FOR kết thúc là bao nhiêu?A. 2B. 4C. 0D. 10(4) Lệnh lặp FOR thực hiện được bao nhiêu lần lặp?A. 2B. 10C. 6D. 4Bài 5.5 VAR: Count, First, Second: Integer; Hãy điền vào bảng mô tả các lần lặp với từng trường hợp giá trị của X,Y.First:= X; Second:=Y;FOR Count := 1 TO 5 DO BEGIN Second:= Second+ Count; First:=Count; END;Input 1: X = 8 ; Y= 10Input 2: X = 5 ; Y= 30Count12345Count12345FirstFirstSecondSecondInput 3: X = 0 ; Y= 100Input 4: X = 3 ; Y= 10 Count12345Count12345FirstFirstSecondSecondBài 5.6Tính số lần lặp và cho biết giá trị của biến Sao và Ken khi thực đoạn chương trình sau. Hãy điền vào bảng với từng giá trị của X, Y : Ken := X; Sao := Y;FOR J:= 10 DOWNTO 1 DO BeginIF J MOD 3 = 0 THEN Sao:= Sao 10; Ken := Ken + 2 ;End;Input 1: X = 0 ; Y= 10Input 2: X = 10 ; Y= 5JJ mod 3=0SaoKenLần lặpJJ mod 3=0Sao
Trang 1Câu lệnh lặp FOR TO DO
Bài 5.1
(1) Cú pháp của câu lệnh FOR dạng tiến là:
A FOR <Biến đếm>:= V1 TO V2 DO <Các câu lệnh>
B FOR <Điều kiện> DO <Câu lệnh>
C FOR <Biến đếm>:= V1 TO V2 DO <Câu lệnh>
D FOR <Biến đếm>:= V1 DOWNTO V2 DO <Câu lệnh>
(2): Khi thực hiện, câu lệnh FOR dừng lại khi nào?
A Khi đã thực hiện <Câu lệnh> n lần
B Khi đã thực hiện <Câu lệnh> V2 – V1 + 1 lần
C Khi biến đếm cho giá trị Đúng (TRUE)
D Khi biến đếm có giá trị N+1
(3) Phát biểu Đúng về việc thực hiện câu lệnh FOR dạng tiến:
A Thực hiện <Câu lệnh> lặp đi lặp lại N lần
B Thực hiện <Câu lệnh> khi Biến đếm = 1
C Số lần lặp được xác định trước
D Số lần lặp không xác định trước cho đến khi thực hiện xong lệnh lặp
(4) Chọn câu lệnh FOR dạng tiến ĐÚNG (Khai báo I,N: Integer, X: REAL)
A FOR I:= 1 TO 100 DO X+1;
B FOR I:= 1 TO 100 DO X := X+1;
C FOR I = 1 TO N DO K := K+1;
D FOR I:= 10 DOWNTO 1 DO X := X+1;
(5) Câu lệnh nào sau đây là đúng với cấu trúc lặp FOR có nhiều lệnh con ?
A FOR I:=1 TO N DO A := A – 1 ; B := B – A ; ENDFOR;
B FOR I:=1 TO N DO BEGIN A := A – 1 ; B := B – A ; END;
C FOR I:=1 TO N DO A := A – 1 ; B := B – A ;
D FOR I >= 1 TO I <= N DO BEGIN A := A – 1 ; B := B – A ; END;
Bài 5.2
Khai báo VAR K, S, P: Integer; Cho đoạn chương trình sau:
S :=10; P := 1;
FOR K:= 1 TO 10 DO S := S + P ;
(1) Số lần thực hiện của lệnh lặp FOR này là mấy lần:
(2) Giá trị của biến S ngay sau khi lệnh lặp FOR kết thúc là bao nhiêu?
(3) Giá trị của biến P ngay sau khi lệnh lặp FOR kết thúc là bao nhiêu?
(4) Giá trị của biến K ngay sau khi lệnh lặp FOR kết thúc là bao nhiêu?
5
Trang 2Bài 5.3
Khai báo VAR Sum, Stop, M : Integer; Cho biết đoạn chương trình như sau:
Sum := 0; Stop := 0; N:= 5;
FOR M:= 1 TO N DO BEGIN
Sum := Sum + Stop ; Stop := Stop + N;
END;
(1) Số lần thực hiện của lệnh lặp FOR này là mấy lần:
(2) Giá trị của biến Sum ngay sau khi lệnh lặp FOR kết thúc là bao nhiêu?
(3) Giá trị của biến Stop ngay sau khi lệnh lặp FOR kết thúc là bao nhiêu?
(3) Giá trị của biến M ngay sau khi lệnh lặp FOR kết thúc là bao nhiêu?
Bài 5.4
Khai báo VAR SUKA, KALA, BELL, DEM: Integer; Cho đoạn chương trình sau:
SUKA := 0; KALA := 1; BELL := 0;
FOR DEM:= 1 TO 10 DO BEGIN
SUKA:= SUKA + KALA*KALA; KALA:= KALA + 1;
IF DEM > 5 THEN BELL:= BELL + 2 ; END;
(1) Giá trị của SUKA ngay sau khi lệnh lặp FOR kết thúc là bao nhiêu?
(2) Giá trị của KALA ngay sau khi lệnh lặp FOR kết thúc là bao nhiêu?
(3) Giá trị của BELL ngay sau khi lệnh lặp FOR kết thúc là bao nhiêu?
(4) Lệnh lặp FOR thực hiện được bao nhiêu lần lặp?
Bài 5.5
VAR: Count, First, Second: Integer; Hãy điền vào bảng mô tả các lần lặp với từng trường hợp giá trị của X,Y.
First:= X; Second:=Y;
FOR Count := 1 TO 5 DO
BEGIN Second:= Second+ Count;
First:=Count;
END;
Input 1: X = 8 ; Y= 10 Input 2: X = 5 ; Y= 30
Trang 3Input 3: X = 0 ; Y= 100 Input 4: X = 3 ; Y= 10
Bài 5.6
Tính số lần lặp và cho biết giá trị của biến Sao và Ken khi thực đoạn
chương trình sau Hãy điền vào bảng với từng giá trị của X, Y :
Ken := X; Sao := Y;
FOR J:= 10 DOWNTO 1 DO Begin
IF J MOD 3 = 0 THEN Sao:= Sao - 10;
Ken := Ken + 2 ; End;
Input 1: X = 0 ; Y= 10 Input 2: X = 10 ; Y= 5
J J mod 3=0 Sao Ken Lần lặp J J mod 3=0 Sao Ken Lần lặp
Input 3: X = 5 ; Y= 5 Input 4: X = 0 ; Y= 0
J J mod 3=0 Sao Ken Lần lặp J J mod 3=0 Sao Ken Lần lặp
Bài 5.7
Khai báo VAR: A, B, J, K : Integer; Tính số lần lặp và giá trị của biến A và B
khi thực hiện đoạn chương trình sau Hãy điền vào bảng mô tả các lần lặp với từng trường hợp giá trị của X,Y.
Trang 4A := X ; B := Y ; K:= Z;
FOR J := 1 TO K DO
BEGIN
IF A MOD 2 = 0 THEN B := B + 2 ELSE B:= B + A ;
A := A + 1;
END;
Input 1: X = 0 ; Y= 1 ; Z = 10 Input 2: X = 5 ; Y= 10 ; Z = 7
J A mod 2 = 0 A B Lần lặp J A mod 2 = 0 A B Lần lặp
Input 3: X = 5 ; Y= 5 ; Z = 5 Viết kết quả sau khi thực hiện lệnh FOR
Bài 5.8
Khai báo VAR: K, S, J : Integer; Tính số lần lặp và giá trị của biến K , S và
J khi thực hiện đoạn chương trình sau Hãy điền vào bảng mô tả các lần lặp với
từng trường hợp giá trị của X,Y.
K:= X; S:=Y;
FOR J:= 1 TO 10 DO BEGIN
S := S + 2*J;
J := J + 1;
K := J + K;
END;
Input 1: X = 0 ; Y= 1 ; Input 2: X = 5 ; Y= 10 ;
Trang 5Bài 5.9
Khai báo VAR: Mika, Rak, , N, J : Integer; Tính số lần lặp và cho biết giá
trị của biến Mika và Rak khi thực đoạn chương trình sau Hãy điền vào bảng với
từng giá trị của X, Y, Z :
Mika := X; Rak := Y; N := Z;
FOR J := 1 TO N DO Begin
IF J MOD 3 = 0 THEN Rak := Rak - J ; Mika := Mika + 5;
J : = J + 2;
End;
Input 1: X = 0 ; Y= 1 ; Z = 20 Input 2: X = 5 ; Y= 10 ; Z = 10
Jtrước J MOD 3 = 0 Rak Mika Jsau Lần lặp Jtrước J MOD 3 = 0 Rak Mika Jsau Lần lặp
Input 1: X = 5 ; Y= 5 ; Z = 15
Jtrước J MOD 3 = 0 Rak Mika Jsau Lần lặp Input Output
Bài 5.10
Cho khai báo VAR L, C : CHAR;
I, J, K, H,A,B: INTEGER; S1,S2,S: LONGINT;
Viết câu lệnh lặp for trong những trường hợp sau:
(1) In ra 20 số tự nhiên đầu tiên, mỗi số cách nhau 1 dấu trống
Gợi ý: Cho I lần lượt từ 1 đến 20, thực hiện in số I và dấu trống ’ ’
FOR I:= ……… TO……… DO
WRITE(………);
Trang 6(2) In ra số tự nhiên chẵn nhỏ hơn 100 theo thứ tự từ nhỏ đến lớn, mỗi số cách
nhau 1 dấu trống
Gợi ý: Cho I chạy từ 1 đến 98, Nếu I chia hết cho 2 thì thực hiện in số I và dấu trống ’ ’
FOR I:= ……… TO………… DO
IF ……… THEN WRITE(………);
(3) In ra bảng chữ cái Latin in hoa, mỗi chữ cái cách nhau 1 dấu trống Gợi ý: Cho biến C lần lượt từ 'A' đến 'Z', thực hiện in C và dấu trống ’ ’ FOR C := ……… TO……… DO WRITE(………);
(4) In ra số tự nhiên lẻ nhỏ hơn 100 theo thứ tự từ lớn đến nhỏ, mỗi số cách nhau 1 dấu trống Gợi ý: Cho I lần lượt từ 100 về 1, Nếu I không chia hết cho 2 thì thực hiện in số I và dấu trống ’ ’
(5) Tính tổng các số tự nhiên từ 1 đến 50 Gợi ý: Khởi động S:= 0; Cho I lần lượt từ 1 đến 50, thực hiện cộng dồn S:=S+I
(6) Cho chữ cái 'A','B','C','D','E' ghép lần lượt với 5 chữ cái 'a','b','c','d','e' Gợi ý: Cho biến C lần lượt từ 'A' đến 'E' thực hiện việc cho biến L lần lượt từ 'a' đến 'e' thực hiện in ra C,L FOR ……… TO……… DO FOR ……… TO……… DO
(7) Hãy thực hiện việc cộng dồn J vào K và cộng dồn 2 lần I vào H lặp lại trong 10 lần Gợi ý: Cho I lần lượt từ 1 đến 10, thực hiện cộng dồn K:=K+J và H := H + 2*I
Trang 7
(8) Hãy tìm các số có 2 chữ số có tích các chữ số bằng 2 lần tổng của chúng Gợi ý: Nếu gọi số đó là (ab) Cho A lần lượt từ 1 đến 9, thực hiện việc cho biến B chạy từ
0 đến 9 thực hiện kiểm tra nếu A*B=2(A+B) thì in ra 2 chữ số đó.
(9) Hãy tìm các số có 3 chữ số có tích các chữ số bằng 3 lần tổng của chúng Gợi ý: Nếu gọi số đó là (abc) Cho A lần lượt từ 1 đến 9, thực hiện việc: Cho biến B chạy từ 0 đến 9 thực hiện việc: Cho biến C chạy từ 0 đến 9 thực hiện việc: kiểm tra nếu A*B*C=2(A+B+C) thì in ra 2 chữ số đó.
(10) Hãy tính của các số chẵn và số lẻ của 100 các số tự nhiên đầu tiên Gợi ý: Khởi động biến S1:=0; S2:=0; Cho I lần lượt từ 1 đến 100, thực hiện việc: Nếu I là chẵn thì cộng dồn vào S1 ngược lại thì cộng dồn I cho S2
Bài 5.11 Viết chương trình tính tổng N phần tử đầu tiên của dãy A có Ai = 1/I Số nguyên N nhập từ bàn phím n S 1 3 1 2 1 1 + + + + = 1 Xác định bài toán: • Input:
Trang 8• Output:
2 Tổ chức dữ liệu:
• Hằng:
• Biến:
3 Thuật toán:
B1: Nhập số N B2: Gán S:=0;
B3: Cho I = 1 đến N thực hiện cộng dồn S := S + 1/I B4: Xuất: S
4 Chương trình:
Chương trình bạn Aro viết Chương trình viết lại
BEGIN
END.
WRITELN('TONG : ' , S:10:2);
S := S + 1/I;
PROGRAM BAITAP01;
S:=0;
WRITE('Nhap so N: ');
READLN;
FOR I:= 1 TO N DO
VAR
READLN(N);
S: REAL; I,N : INTEGER;
USES CRT;
CLRSCR;
Bài 5.12
Viết chương trình tính tổng N phần tử đầu tiên của dãy A gồm có
Ai = (i+1)/(i*i) N được nhập từ bàn phím
2
1 9
4 4
3 2
n
n
S = + + + + +
1 Xác định bài toán:
• Input:
• Output:
Trang 92 Tổ chức dữ liệu:
• Hằng:
• Biến:
3 Thuật toán: B1: Nhập số N B2: Gán S:=0; B3: Cho I = 1 đến N thực hiện cộng dồn S := S + (I+1)/(I*I) B4: Xuất: S 4 Chương trình:
Bài 5.13
Cho N số tự nhiên đầu tiên Viết chương trình tính tổng các phần tử chia hết cho 3 hoặc chia hết cho 5 N được nhập từ bàn phím.
Ví dụ:
Cho 10 số tự nhiên đầu tiên là 1,2,3,4,5,6,7,8,9,10
S = 3 + 5 + 6 + 9 + 10
1 Xác định bài toán:
Trang 10• Input:
• Output:
2 Tổ chức dữ liệu: • Hằng:
• Biến:
3 Thuật toán: B1: Nhập số N B2: Gán S:=0; B3: Cho I = 1 đến N thực hiện Nếu (I MOD 3 = 0) hoặc (I MOD 5 = 0) thì S := S + I B4: Xuất: S 4 Chương trình:
Bài 5.14
Viết chương trình để tìm số gà và thỏ cho bài toán dân gian sau:
Trong giỏ vừa thỏ vừa gà, Một trăm cái cẳng bốn ba cái đầu.
Gợi ý:
Gọi số thỏ là T và số gà là G Bài toán sẽ viết lại là:
T + G = 43 và 4 * T + 2 * G = 100 Xét xem giới hạn số lượng của thỏ
Trang 11nằm trong khoảng giá trị nào (T sẽ từ 1 đến X) X là bao nhiêu thì phải dựa vào giả thiết bài toán
Dùng vòng lặp FOR để xét từng giá trị T: Ứng với mỗi giá trị của T thì G
= 43 - T và Kiểm tra nếu thỏa mãn 4 * T + 2 * G = 100 thì in ra T và G.
1 Xác định bài toán:
• Input:
• Output:
2 Tổ chức dữ liệu: • Biến:
3 Thuật toán:
4 Chương trình:
Bài 5.15
Trong máy ATM chỉ có 2 loại tiền mệnh giá 2 $ và 5 $ Viết chương trình
để đưa ra số tờ giấy bạc cả 2 mệnh giá khi muốn rút số tiền là N$.
Gợi ý:
Gọi số tờ tiền 2$ là X và số tờ tiền 5$ Y, ta luôn có 2*X + 5*Y=N.
Xét xem giới hạn số lượng tờ tiền 2$ có thể rút ra là trong khoảng giá trị
Trang 12nào (X sẽ từ 0 đến K), số lượng tờ tiền 5$ có thể rút ra là trong khoảng giá trị nào (Y sẽ từ 0 đến M) K, M là bao nhiêu thì phải dựa vào giả thiết bài toán (Chú ý đến số tờ tiền là số nguyên vì vậy dùng phép DIV) Dùng 2 vòng lặp FOR lồng để xét từng cặp giá trị (X,Y): Lần lượt cho giá trị X từ 0 đến K, cứ mỗi giá trị X ta thực hiện:
Cho giá trị Y từ 0 đến M và Kiểm tra nếu thỏa mãn 2 * X + 5 * Y = N thì
in ra X và Y.
1 Xác định bài toán:
• Input:
• Output:
2 Tổ chức dữ liệu: • Biến:
3 Thuật toán:
4 Chương trình:
Bài 5.16
Viết chương trình để tìm có mấy trâu đứng, trâu nằm và trâu già trong bài toán dân gian như sau:
Trăm trâu trăm cỏ Trâu đứng ăn năm Trâu nằm ăn ba
Lụ khụ trâu già
Ba con một bó
Trang 13Gợi ý:
Gọi số trâu đứng là D, số trâu nằm là N và số trâu già là G Bài toán sẽ viết lại là: D + N + G
= 100 và D*5 + N*3 + G/3 = 100
Xét xem giới hạn số lượng của trâu đứng D , số lượng trâu nằm N trong khoảng giá trị nào (T sẽ từ 1 đến Y) X,Y là bao nhiêu thì phải dựa vào giả thiết bài toán
Dùng 2 vòng lặp FOR lồng nhau để xét từng cặp giá trị D và N: Ứng với mỗi cặp giá trị của
D và N thì G = 100 - D - N và Kiểm tra nếu thỏa mãn 15*T + 9*N + G= 300 thì in ra D,N,G.
1 Xác định bài toán:
• Input:
• Output:
2 Tổ chức dữ liệu: • Biến:
3 Thuật toán:
4 Chương trình:
Bài 5.17
Viết chương trình tìm các số có 3 chữ số abc sao cho:
abc = a3 + b3 + c3.
Gợi ý:
Trang 14Ta biết rằng: a có thể có giá trị từ 1 đến 9 (vì a là số hàng trăm), b,c có thể có giá trị từ 0 đến 9 Ta sẽ dùng 3 vòng lặp FOR lồng nhau để duyệt qua tuần tự từng bộ giá trị (a,b,c)
Ứng với mỗi bộ (a,b,c), ta sẽ kiểm tra:
Nếu 100.a + 10.b + c = a3 + b3 + c3 thì in ra bộ 3 số a,b,c đó là abc
1 Xác định bài toán:
• Input:
• Output:
2 Tổ chức dữ liệu: • Biến:
3 Thuật toán: Cho A từ 1 đến 9 làm Cho B từ 0 đến 9 làm Cho C từ đến 9 làm Nếu 100.a + 10.b + c = a3 + b3 + c3 thì in ra (a,b,c) 4 Chương trình:
Bài 5.18
Lãi suất hàng tháng là K (%) Tiền vốn gửi là A Hàng tháng tính lãi nhập vào vốn làm vốn của đầu tháng sau Hỏi sau khi gửi trong T tháng sẽ thu được số tiền là bao nhiêu?
Ví dụ: K= 1.0% ; A= 100$; Số tháng gửi T = 5
Trang 15Cuối tháng thứ 1, lãi = 1$, vốn A cuối tháng = 100$ + 1$ = 101$
Cuối tháng thứ 2, lãi = 1.01$, vốn A cuối tháng = 101$+1.01$ = 102.01$
Gợi ý: Cho I chạy từ 1 đến T ta tính lãi là A*K cộng với A gán lại cho A 1 Xác định bài toán: • Input:
• Output:
2 Tổ chức dữ liệu: • Biến:
3 Thuật toán:
4 Chương trình: