C5-08 · Số ngày trong tháng
Xem dạng PDF
Gửi bài giải
Điểm:
1,00
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
Input:
stdin
Output:
stdout
Tác giả:
Nguồn bài:
Dạng bài
Ngôn ngữ cho phép
Python
Đề
Viết hàm so_ngay_trong_thang(thang, nam) trả về số ngày của tháng thang năm nam, trong đó tháng 2 dùng lại hàm la_nam_nhuan(nam) của bài C5-03 (luật ở mục 3.3: năm chia hết cho 400, hoặc chia hết cho 4 nhưng không chia hết cho 100).
| Tháng | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Số ngày | 31 | 28 hoặc 29 | 31 | 30 | 31 | 30 | 31 | 31 | 30 | 31 | 30 | 31 |
Chương trình chính đọc T bộ test, mỗi bộ gọi hàm một lần và in kết quả.
Dữ liệu vào
- Dòng đầu: số nguyên ~T~.
- ~T~ dòng tiếp theo, mỗi dòng hai số nguyên: tháng và năm, cách nhau một dấu cách.
Kết quả
~T~ dòng, mỗi dòng là số ngày của tháng tương ứng.
Ràng buộc
- ~1 \le T \le 1000~.
- ~1 \le \text{thang} \le 12~; ~1 \le \text{nam} \le 10^9~.
Ví dụ
Dữ liệu vào:
3
2 2024
2 2025
4 2025
Kết quả:
29
28
30
Giải thích ví dụ
- Tháng 2/2024: 2024 chia hết cho 4, không chia hết cho 100 → năm nhuận → 29 ngày.
- Tháng 2/2025: 2025 không chia hết cho 4 → năm thường → 28 ngày.
- Tháng 4/2025: tháng 4 luôn có 30 ngày, không phụ thuộc năm.
Bài có ba mức (***) vì phải ghép đúng hai hàm: so_ngay_trong_thang gọi la_nam_nhuan, mỗi hàm làm một việc.
Ghi chú
- Điều kiện "tháng 4, 6, 9 hoặc 11" phải viết đủ từng vế:
thang == 4 or thang == 6 or ...; viếtthang == 4 or 6 or 9 or 11thì luôn đúng (bảng 3.5). - "Tháng chẵn 30 ngày" chỉ đúng đến tháng 6: tháng 8, 10, 12 có 31 ngày.
- Gọi hàm phải có ngoặc và đối số:
if la_nam_nhuan(nam):, không phảiif la_nam_nhuan:. - Truyền đối số đúng thứ tự
so_ngay_trong_thang(thang, nam); đảo thứ tự thì không có thông báo lỗi nào nhưng kết quả sai (mục 5.2.2). - Hệ thống chỉ so kết quả in ra; yêu cầu "dùng lại
la_nam_nhuan, có ít nhất baassert" là phần giảng viên kiểm khi chấm tay.
Nguồn trong sách: Bài C5-08, mục 5.10, giáo trình "Lập trình cơ sở với Python" — TS. Nguyễn Quốc Long · Mức: (***)
Đang tải...