Hớng dẫn trả lời câu hỏi và bài tập Bài 1 Đáp án:

Một phần của tài liệu Sách giáo viên tin học lớp 8 đây! (Trang 52 - 56)

Bài 1. Đáp án:

a) INPUT: Danh sách họ của các học sinh trong lớp. OUTPUT: Số học sinh có họ Trần.

b) INPUT: Dãy n số.

OUTPUT: Tổng của các phần tử lớn hơn 0. c) INPUT: Dãy n số.

OUTPUT: Số các số có giá trị nhỏ nhất (có thể một hay nhiều số).

Bài 2. Sau ba bớc, x có giá trị ban đầu của y và y có giá trị ban đầu của x, tức giá trị của hai biến x và y đợc hoán đổi cho nhau.

Bài 3. Mô tả thuật toán:

INPUT: Ba số dơng a > 0, b > 0 và c > 0.

OUTPUT: Thông báo "a, b và c có thể là ba cạnh của một tam giác" hoặc thông báo "a, b và c không thể là ba cạnh của một tam giác".

Bớc 1. Tính a + b. Nếu a + b ≤ c, chuyển tới bớc 5. Bớc 2. Tính b + c. Nếu b + c ≤ c, chuyển tới bớc 5. Bớc 3. Tính a + c. Nếu a + c ≤ b, chuyển tới bớc 5.

Bớc 4. Thông báo "a, b và c có thể là ba cạnh của một tam giác" và kết thúc

thuật toán.

Bớc 5. Thông báo "a, b và c không thể là ba cạnh của một tam giác" và kết

thúc thuật toán.

Bài 4. Có thể giải bài toán này bằng cách sử dụng một biến phụ hoặc không dùng biến phụ.

Thuật toán 1. Sử dụng biến phụ z.

INPUT: Hai biến x và y.

OUTPUT: Hai biến x và y có giá trị tăng dần.

Bớc 1. Nếu x ≤ y, chuyển tới bớc 5. Bớc 2. z ← x.

Bớc 3. x ← y. Bớc 4. y ← z.

Bớc 5. Kết thúc thuật toán.

Thuật toán 2. Không sử dụng biến phụ (xem bài tập 2 ở trên).

INPUT: Hai biến x và y.

OUTPUT: Hai biến x và y có giá trị tăng dần.

Bớc 1. Nếu x ≤ y, chuyển tới bớc 5. Bớc 2. x ← x + y.

Bớc 3. y ← x − y. Bớc 4. x ← x − y.

Bài 5. Trớc hết, nếu cần, ta hoán đổi giá trị hai biến x và y để chúng có giá trị tăng dần. Sau đó lần lợt so sánh z với x và z với y, sau đó thực hiện các bớc hoán đổi giá trị cần thiết (xem lại ví dụ 5 trong bài 5, SGK).

INPUT: Ba biến x, y và z.

OUTPUT: Ba biến x, y và z có giá trị tăng dần.

Bớc 1. Nếu x ≤ y, chuyển tới bớc 3.

Bớc 2. t ← x, x ← y, y ← t. (t là biến trung gian. Sau bớc này x và y có giá trị (adsbygoogle = window.adsbygoogle || []).push({});

tăng dần.)

Bớc 3. Nếu y ≤ z, chuyển tới bớc 6.

Bớc 4. Nếu z < x, t ← x, x ← z và z ← t, (với t là biến trung gian) và chuyển

đến bớc 6.

Bớc 5. t ← y, y ← z và z ← t. Bớc 6. Kết thúc thuật toán.

Bài 6. a) Tính tổng các phần tử của dãy số A = {a1, a2,..., an} chotrớc. INPUT: n và dãy n số a1, a2,..., an.

OUTPUT: Tổng S = a1 + a2 +... + an.

Bớc 1. S ← 0; i ← 0. Bớc 2. i ← i + 1.

Bớc 3. Nếu i ≤ n, S ← S + ai và quay lại bớc 2.

Bớc 4. Thông báo S và kết thúc thuật toán.

b) Tìm số nhỏ nhất trong dãy n số a1, a2, ..., an chotrớc. Thuật toán này tơng tự nh thuật toán tìm giá trị lớn nhất trong dãy n số đã cho (xem ví dụ 6, bài 5). Điều khác biệt là thêm các bớc nhập số n và dãy n số a1, a2, ..., an.

INPUT: n và dãy n số a1, a2,..., an. OUTPUT: Min = Min{ a1, a2, ..., an}

Bớc 1. Nhập n và dãy n số a1, a2,..., an.

Bớc 2. Gán Min ← a1; i ← 1.

Bớc 3. i ← i + 1.

Bớc 4. Nếu i > n, chuyển đến bớc 6.

Bớc 5. Nếu ai≥ Min, quay lại bớc 3. Trong trờng hợp ngợc lại, gán Min ← ai

Bớc 6. Ghi giá trị Min ra màn hình và kết thúc thuật toán.

Bài 7. a) Đếm số các số dơng trong dãy số A = {a1, a2,.., an} cho trớc. INPUT: n và dãy n số a1, a2,..., an.

OUTPUT: Soduong = Số các số ai > 0.

Bớc 1. Gán Soduong ← 0, i ← 0. Bớc 2. i ← i + 1.

Bớc 3. Nếu i > n, chuyển đến bớc 5.

Bớc 4. Nếu ai > 0, gán Soduong ← Soduong +1 rồi quay lại bớc 2. Trong tr- ờng hợp ngợc lại, cũng quay lại bớc 2.

Bớc 5. Thông báo giá trị Soduong và kết thúc thuật toán.

b) Tìm vị trí của số dơng đầu tiên trong dãy số A = {a1, a2,..., an} cho trớc, tính từ phải sang trái.

INPUT: n và dãy n số a1, a2,..., an.

OUTPUT: Vitri = Vị trí của số dơng đầu tiên trong dãy số a1, a2,..., an, tính

từ phải sang trái. Bớc 1. Gán i ← n.

Bớc 2. Nếu ai > 0, chuyển tới bớc 5. Bớc 3. Gán i ← i − 1.

Bớc 4. Nếu i < 1, chuyển tới bớc 5; ngợc lại, quay lại bớc 2. Bớc 5. Thông báo giá trị Vitri = i và kết thúc thuật toán. (adsbygoogle = window.adsbygoogle || []).push({});

Bài 8. Tính tổng các số dơng trong dãy số A = {a1, a2,..., an} chotrớc. INPUT: n và dãy n số a1, a2,..., an.

OUTPUT: S = Tổng các số ai > 0 trong dãy a1, a2,..., an.

Bớc 1. S ← 0; i ← 0. Bớc 2. i ← i + 1.

Bớc 3. Nếu ai > 0, S ← S + ai; ngợc lại, giữ nguyên S.

Bớc 4. Nếu i ≤ n, và quay lại bớc 2. Bớc 5. Thông báo S và kết thúc thuật toán.

Một phần của tài liệu Sách giáo viên tin học lớp 8 đây! (Trang 52 - 56)