Thực hành với dữ liệu kiểu danh sách SBT Tin Học lớp 10 – Cánh Diều, mời các em tham khảo cùng Bumbii.
Chủ đề F. Giải quyết vấn đề với sự trợ giúp của máy tính. Bài 15. Thực hành với dữ liệu kiểu danh sách.
Câu F75
Số lớn hơn. Lập trình nhập dãy số nguyên từ thiết bị vào chuẩn, các số trên một dòng, cách nhau một dấu cách và đưa ra thiết bị ra chuẩn trên một dòng các số lớn hơn số đứng trước nó, các số ghi cách nhau một dấu cách.
Ví dụ:
Input | Output |
6 -5 3 -9 -8 1 -2 0 | 3 -8 1 0 |
Đáp án: Tham khảo chương trình sau:
import sys
fi = open("input.txt", encoding="utf-8")
fo = open("output.txt", "w", encoding="utf-8")
sys.stdin = fi
sys.stdout = fo
a = [int(i) for i in input().split()]
for i in range(1, len(a)):
if a[i] > a[i - 1]: print(a[i], end= (' '))
fo.close()
Câu F76
Số lớn nhất. Cho một dãy số nguyên. Hãy lập trình đưa ra số có giá trị lớn nhất của dãy và vị trí của số đó trong dãy. Vị trí các số được đánh số bắt đầu từ 1. Nếu trong dãy có nhiều số cùng là lớn nhất, hãy đưa ra thứ tự vị trí nhỏ nhất của số lớn nhất.
Dữ liệu: Gồm một dòng chứa các số của dãy được nhập vào từ bàn phím, các số cách nhau một dấu cách.
Kết quả: Đưa ra thiết bị ra chuẩn giá trị số lớn nhất và vị trí của nó, hai kết quả này cách nhau một dấu cách.
Ví dụ:
Input | Output |
4 2 6 3 5 6 2 0 -1 3 | 6 3 |
Đáp án:
Tham khảo chương trình sau:
import sys
fi = open("input.txt", encoding="utf-8")
fo = open("output.txt", "w", encoding="utf-8")
sys.stdin = fi
sys.stdout = fo
a = [int(i) for i in input().split()]
v = max(a)
p = a.index(v) + 1
print(v, p)
fo.close()
Câu F77
Phân lớp. Cho dãy các số nguyên a1, a2, …, an. Hãy lập trình đưa các số khác 0 lên đầu dãy, giữ nguyên thứ tự xuất hiện, các số 0 đưa về vị trí cuối dãy. Trong chương trình không dùng thêm dãy phụ làm trung gian.
Dữ liệu: Nhập vào từ bàn phím một dòng chứa các số của dãy, mỗi số cách nhau một dấu cách.
Kết quả: Đưa ra màn hình, các số trên một dòng, cách nhau một dấu cách.
Ví dụ:
Input | Output |
5 0 8 1 0 0 6 0 3 | 5 8 1 6 3 0 0 0 0 |
Đáp án:
Tham khảo chương trình sau:
import sys
fi = open("input.txt", encoding="utf-8")
fo = open("output.txt", "w", encoding="utf-8")
sys.stdin = fi
sys.stdout = fo
a = [int(i) for i in input().split()]
k = 0
for i in range(len(a)):
if a[i] != 0:
a[k] = a[i]
k += 1
for i in range(k, len(a)): a[i] = 0
for i in a: print(i, end = (' '))
fo.close()
Câu F78
Kiểm tra sắp xếp. Mảng a1, a2, …, an, đã được sắp xếp không giảm nếu ai ≤ ai+1, i = 1, 2,…, n-1. Lập trình nhập mảng số nguyên, kiểm tra và đưa ra thông báo “Yes” nếu mảng đó đã được sắp xếp không giảm hoặc “No” trong trường hợp ngược lại.
Dữ liệu: Nhập vào từ thiết bị vào chuẩn, gồm một dòng chứa các phần tử của mảng, các số cách nhau một dấu cách.
Kết quả: Đưa ra thiết bị ra chuẩn thông báo xác định được.
Ví dụ:
Input | Output |
2 4 6 6 22 8 | Yes |
Đáp án:
Tham khảo chương trình sau:
import sys
fi = open("input.txt", encoding="utf-8")
fo = open("output.txt", "w", encoding="utf-8")
sys.stdin = fi
sys.stdout = fo
a = [int(i) for i in input().split()]
ans = 'Yes'
for i in range (1, len(a)):
if a[i-1] > a[i]:
ans = 'No'
break
print(ans)
fo.close()
Câu F79
Hoàn thiện chương trình. Chương trình ở hình sau thực hiện nhập từ thiết bị vào chuẩn một danh sách số nguyên A = (a1, a2, …, an); Các số ghi trên cùng một dòng, mỗi số cách nhau một dấu cách. Tính và đưa ra thiết bị ra chuẩn các giá trị b1, b2, …, bn, trong đó bi, (với i từ 1 đến n) là ước số chung lớn nhất của các số a1, a2, …, ai. Các số đưa ra trên một dòng, cách nhau một dấu cách. Tuy nhiên chương trình vẫn có lỗi, em hãy tìm lỗi và nêu các phương pháp khắc phục các lỗi đó.
Đáp án:
Câu lệnh sai: b[i] = gcd(b[i-1], a[i]).
Chưa nêu rõ gcd ở thư viện nào. Trường hợp này có hai cách sửa:
Cách 1. Sửa câu lệnh sai thành: b[i] = math.gcd(b[i-1],a[i]).
Cách 2. Chỉ rõ nạp gcd từ thư viện math bằng cách viết lại câu lệnh đầu tiên như sau: from math import gcd.
Câu F80
Tìm và sửa lỗi. Chương trình ở hình sau thực hiện nhập từ thiết bị vào chuẩn một danh sách số nguyên A = (a1, a2, …, an), các số ghi trên cùng một dòng, mỗi số cách nhau một dấu cách. Tính và đưa ra thiết bị ra chuẩn các giá trị là b1, b2, …, bn, trong đó bi (với i từ 1 đến n) là tổng của các số a1, a2, …, an. Các số đưa ra trên một dòng, mỗi số cách nhau một dấu cách. Tuy nhiên, chương trình vẫn có lỗi, em hãy tìm lỗi và nêu các phương pháp khắc phục các lỗi đó.
a = [int(i) for i in input().split()]
b = [a(0)]
print(b[0])
for i in range(1, len(a)):
b.append(b[i - 1] + a[i])
print(b[i], end= (' '))
Đáp án:
Các câu lệnh đưa ra không đáp ứng yêu cầu các số phải được đưa ra trên cùng một dòng. Tham khảo chương trình sau:
a = [int(i) for i in input().split()]
b = [a(0)]
print(b[0], end = (' '))
for i in range(1, len(a)):
b.append(b[i - 1] + a[i])
print(b[i], end= (' '))
Xem thêm các bài khác tại Giải Sách bài tập Tin học Lớp 10 – Cánh Diều
Thông tin liên hệ & mạng xã hội:
Website: https://bumbii.com/
Facebook: https://www.facebook.com/bumbiiapp
Pinterest: https://www.pinterest.com/bumbiitech
Không bao giờ từ bỏ hy vọng. Cố gắng mỗi ngày.