C5-02 · Đổi độ F sang độ C
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 do_c(do_f) trả về nhiệt độ độ C ứng với nhiệt độ độ F, đã làm tròn 1 chữ số thập phân:
$$C = \frac{(F - 32) \times 5}{9}$$
Chương trình chính đọc T bộ test; với mỗi bộ gọi hàm và in kết quả. Bài này là C2-02 viết lại bằng hàm, theo dạng "dòng đầu là T, T bộ test" (mục 4.3, mục 5.5.2).
Dữ liệu vào
- Dòng đầu: số nguyên ~T~ là số bộ test.
- ~T~ dòng tiếp theo, mỗi dòng một nhiệt độ ~F~ (số thực, có thể viết dạng
32,32.0hay98.6).
Kết quả
~T~ dòng; dòng thứ ~i~ là nhiệt độ độ C của bộ thứ ~i~, in đúng 1 chữ số thập phân (kể cả khi là số nguyên: 100.0, 0.0).
Ràng buộc
- ~1 \le T \le 1000~.
- ~32 \le F \le 10\,000~; ~F~ có tối đa 2 chữ số thập phân.
- Không có test nào mà giá trị đúng của C nằm đúng giữa hai số làm tròn (như …,x5 chính xác), nên mọi cách tính hợp lý đều cho cùng kết quả.
Ví dụ
Dữ liệu vào:
2
98.6
32
Kết quả:
37.0
0.0
Giải thích ví dụ
- ~T = 2~: có hai bộ test, phải in đúng hai dòng.
- ~F = 98{,}6~: ~(98{,}6 - 32) \times 5 / 9 = 66{,}6 \times 5 / 9 = 37~. Nếu tính theo cách viết khác, ~(F - 32) / 1{,}8~, máy cho
36.99999999999999do sai số số thực (mục 2.2.1); làm tròn 1 chữ số thì vẫn là37.0. Vì vậy phải làm tròn, không được cắt bỏ phần lẻ. - ~F = 32~ (điểm đông đặc của nước): ~C = 0~, in
0.0chứ không in0.
Ghi chú
- Hàm phải trả về giá trị (
return), khôngprint; chương trình chính in bằngf"{...:.1f}"(mục 2.5.2). Hàm in ra rồi trả vềNonethìf"{None:.1f}"dừng vớiTypeError— đúng lỗi của bài C5-13. - Nhiệt độ là số thực: đọc bằng
float(input()), không phảiint(input()). - Làm tròn khác cắt bỏ: 100 °F là 37,777… °C, in
37.8chứ không phải37.7. - Hệ thống chỉ so kết quả in ra; yêu cầu "viết hàm
do_c, 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-02, 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...