Bài viết này sẽ giúp bạn hiểu về cách viết chương trình trong ngôn ngữ C++ để nhập vào tháng và năm, từ đó tính toán và hiển thị số ngày trong tháng đó. Chúng ta sẽ sử dụng cấu trúc điều khiển switch...case, một cách thay thế tốt cho cấu trúc if...else, giúp mã nguồn rõ ràng và dễ hiểu hơn.
1. Bài toán nhập tháng năm in ra số ngày trong tháng
Chúng ta sẽ viết một chương trình nhập vào từ bàn phím số nguyên n thuộc đoạn [1..12] và số nguyên m. Chương trình sẽ hiển thị tháng và số ngày của tháng trong năm m ứng với tháng n được nhập vào. Cụ thể, số 1 tương ứng với "Tháng giêng có 31 ngày", số 2 tương ứng với tháng 2,... và số 12 tương ứng tháng 12. Nếu giá trị nhập vào không thuộc đoạn [1..12] thì sẽ thông báo "Không có tháng trong năm tương ứng với số bạn đã nhập".
Tóm tắt lại bài toán: Viết chương trình nhập vào tháng, năm cho biết tháng đó có bao nhiêu ngày.
2. Mô tả thuật toán tìm số ngày của một tháng
Thuật toán viết chương trình nhập vào tháng và năm, sau đó tính toán và hiển thị số ngày của tháng đó như sau:
Kiểm tra ngày tháng năm nhập vào có hợp lệ hay không?
Ta sử dụng vòng lặp do...while để cho phép nhập n trong đoạn từ 1 đến 12 cho đến khi giá trị hợp lệ được nhập vào.
do {
cout << "Nhập tháng n: ";
cin >> n;
if (n < 1 || n > 12)
cout << "Nhập sai. Mời nhập lại" << endl;
} while (n < 1 || n > 12);
Tính số ngày trong tháng
- Nếu n thuộc những tháng 1,3,5,7,8,10,12 thì hiển thị "Tháng đó có 31 ngày".
- Ngược lại, nếu n thuộc tháng 4,6,9,11 thì hiển thị "Tháng đó có 30 ngày".
- Đối với tháng 2, cần kiểm tra năm m có phải là năm nhuận hay không. Nếu là năm nhuận thì hiển thị "Tháng 2 có 29 ngày", ngược lại hiển thị "Tháng 2 có 28 ngày".
if (m % 4 == 0 || m % 400 == 0)
cout << "Tháng 2 có 29 ngày"; // Kiểm tra năm nhuận
else
cout << "Tháng 2 có 28 ngày";
Kiểm tra năm nhuận
Một năm được gọi là nhuận nếu số đó chia hết cho 4 mà không chia hết cho 100, hoặc chia hết cho 400.
if (m % 4 == 0 || m % 400 == 0)
cout << "Tháng 2 có 29 ngày"; // Kiểm tra năm nhuận
else
cout << "Tháng 2 có 28 ngày";
3. Code mẫu tìm số ngày trong tháng
#include
using namespace std;
int main() {
int n, m;
// Cho phép nhập n trong đoạn [1..12]
do {
cout << "Nhập tháng n: ";
cin >> n;
if (n < 1 || n > 12)
cout << "Nhập sai. Mời nhập lại" << endl;
} while (n < 1 || n > 12);
cout << "Nhập năm m: ";
cin >> m;
switch (n) {
case 1:
cout << "Tháng 1 có 31 ngày";
break;
case 2:
if (m % 4 == 0 || m % 400 == 0)
cout << "Tháng 2 có 29 ngày"; // Kiểm tra năm nhuận
else
cout << "Tháng 2 có 28 ngày";
break;
case 3:
cout << "Tháng 3 có 31 ngày";
break;
case 4:
cout << "Tháng 4 có 30 ngày";
break;
case 5:
cout << "Tháng 5 có 31 ngày";
break;
case 6:
cout << "Tháng 6 có 30 ngày";
break;
case 7:
cout << "Tháng 7 có 31 ngày";
break;
case 8:
cout << "Tháng 8 có 31 ngày";
break;
case 9:
cout << "Tháng 9 có 30 ngày";
break;
case 10:
cout << "Tháng 10 có 31 ngày";
break;
case 11:
cout << "Tháng 11 có 30 ngày";
break;
default:
cout << "Tháng 12 có 31 ngày";
}
}
4. Kết quả
Đây là kết thúc của bài viết. Nếu bạn có bất kỳ thắc mắc nào, hãy liên hệ với mình nhé. Cảm ơn bạn đã ghé thăm ttnguyen.net! Tải full bài tập thực hành C/C++ có lời giải tại đây.
Bài tiếp theo: Bài 13: Một số hoàn thiện là một số có tổng các ước của nó (không kể nó) bằng chính nó. Hãy nhập vào một số nguyên dương n và kiểm tra số hoàn thiện. Ví dụ: số 6 là số hoàn thiện vì tổng các ước số là 1+2+3=6.