TopStudy

Đáp án và lời giải

Giải SBT Tin 10 KNTT Bài 21. Câu lệnh lặp While có đáp án

Về trang đề

Câu 1

Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý

a) Lần lượt in ra trên cùng một dòng các giá trị bằng (gần đúng) của 1/3, 1/4, 1/5, 1/6. Chương trình dừng khi giá trị = 5.

Hình minh hoạ

Câu 2

Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý

b) Chương trình không in gì mà kết thúc luôn, do điều kiện thực hiện vòng lặp (i < 5) không được thoả mãn.

Câu 3

Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý

Đoạn chương trình đã cho thực hiện việc nhập dữ liệu thu nhập của hộ gia đình từ bàn phím. Khi giá trị được nhập vào nhỏ hơn hoặc bằng 0 thì quá trình nhập dữ liệu kết thúc.

Câu 4

Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý

Cả hai đoạn chương trình đều tính và in ra tổng các số tự nhiên từ 1 đến 10.

a)

Hình minh hoạ

Câu 5

Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý

b)

Hình minh hoạ

Câu 6

Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý

Đoạn chương trình thực hiện việc tính tổng bình phương các số tự nhiên từ 5 đến 10. Em có thể dùng câu lệnh while để thay thế câu lệnh for như sau:

s = 0

i = 5

while i < 11:

s = s + i*i

i = i + 1

print(s)

Hình minh hoạ

Câu 7

Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý

Em có thể thay câu lệnh for đã cho bằng nhóm các câu lệnh có sử dụng while tương ứng như sau:

<<biến> = gia_tri1

while <<biến> < gia_tri2:

<<khối lệnh>

<<biến> = <<biến> + 1

Câu 8

Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý

Đoạn chương trình thực hiện việc in ra số tự nhiên i nhỏ nhất sao cho tổng: s=1+12+13+...+1i≥2s=1+\frac{1}{2}+\frac{1}{3}+...+\frac{1}{i}\ge 2

Hình minh hoạ

Câu 9

Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý

Chương trình có thể viết như sau:

dem = 0

i = 1

while i < 101:

if (i%5 == 0) or (i%3 == 1):

dem = dem + 1

i = i + 1

print("Số các số cần tìm = ", dem)

Hình minh hoạ

Ghi chú: Có thể dùng câu lệnh for để giải bài toán trên như sau:

dem = 0

for i in range(1, 101):

if (i%5 == 0) or (i%3 == 1):

dem = dem + 1

print("Số các số cần tìm = ", dem)

Câu 10

Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý

Chương trình có thể viết như sau:

print("GIẢI BÀI TOÁN GÀ VÀ CHÓ")

print("Vừa gà vừa chó");

print("Bó lại cho tròn");

print("Ba mươi sáu (36) con");

print("Một trăm(100) chân chẵn");

print("Hỏi có mấy gà, mấy chó?");

k = 1

while k < 37:

if((k * 2 + (36 - k) * 4) == 100):

print("Số gà là: ", k)

print("Số chó là: ", 36-k)

k = k + 1

Hình minh hoạ

Lưu ý: Hoàn toàn tương tự, có thể thay thế các câu lệnh for trong các bài Gà và Chó tổng quát cũng như "Trăm trâu, trăm cỏ" ở Bài 20.

Câu 11

Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý

Chương trình có thể viết như sau:

# Tổng các chữ số của số n

n = int(input("Nhập số nguyên dương n = "))

tong = 0

luu = n

while n > 0:

tong = tong + n % 10

n = n // 10

print("Tổng các chữ số của ", luu , " là ", tong)

Câu 12

Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý

Chương trình có thể viết như sau:

# Bảng số 100

i = 0

while i <10:

j = 1

while j < 11:

print(i*10+j, end = " ")

j = j + 1

print("")

i = i + 1

Hình minh hoạ

Câu 13

Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý

Chương trình có thể viết như sau:

so_ho_gd = 0

So_ho_ngheo = 0

so_ho_khagia = 0

tongthunhap_ngheo = 0

tongthunhap = 0

thunhap = 1 #Có thể gán 1 số bất kì > 0 để thực hiện vòng lặp

while thunhap > 0 :

thunhap = float(input("Thu nhập của hệ tiếp theo (đơn vị tính triệu đồng): "))

if thunhap > 0: #Xem lưu ý ở dưới.

tongthunhap = tongthunhap + thunhap

so_ho_gd = so_ho_gd + 1

if thunhap < 20:

tongthunhap_ngheo = tongthunhap_ngheo + thunhap

so_ho_ngheo = so_ho_ngheo + 1

print("Số các hộ gia đình được khảo sát = ", so_ho_gd, "Thu nhập bình quân 1 hộ = ", tongthunhap/so_ho_gd)

if so_ho_ngheo > 0:

print("Số các hộ gia đình nghèo được khảo sát = ", so_ho_ngheo, "Thu nhập bình quân 1 hộ = ", tongthunhap_ngheo/so_ho_ngheo)

else:

print("Không có các hộ gia đình nghèo")

Lưu ý: Cần có câu lệnh kiểm tra để tránh trường hợp giá trị nhập vào cho biến thunhap ≤ 0 (dấu hiệu kết thúc nhập dữ liệu) nhưng vẫn tính thêm một hộ gia đình được khảo sát.

Câu 14

Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý

Hình minh hoạ

Hình minh hoạ

Câu 15

Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý

Chương trình có thể viết như sau:

# Xác định palindrom

so_bandau = int(input("Nhập số tự nhiên bất kì: "))

so_nghichdao = 0

k = so_bandau

while k > 0:

so_nghichdao = so_nghichdao*10 + k % 10 # Từng bước tạo số nghịch đảo

k = k // 10

if so_nghichdao == so_bandau:

print("Số đã cho ", so_bandau, "là palindrom")

else:

print("Số đã cho ", so_bandau, "không phải là palindrom")

Câu 16

Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý

Chương trình có thể viết như sau:

# Số hoàn hảo > n cho trước

n = int(input("Nhập giá trị của n: "))

so_hoanhao = n + 1

tim_ra = False

while tim_ra == False:

tong_uocso = 0

for i in range(1, so_hoanhao):

if so_hoanhao%i==0: # i là ước số

tong_uocso = tong_uocso+i

if tong_uocso == so_hoanhao :

tim_ra = True

print("Số hoàn hảo đầu tiên lớn hơn ", n, " là ", so_hoanhao)

else:

so_hoanhao = so_hoanhao + 1