Viết chương trình nhập vào tháng và năm kiểm tra in ra tháng đó năm đó có bao nhiêu ngày

Lệnh cấu trúc điều khiển & rẽ nhánh switch…case hoàn toàn có thể thay thế cấu trúc if…else. Việc thay thế này giúp code chúng ta dễ hiểu và thuận tiện hơn.

Viết chương trình nhập vào tháng và năm kiểm tra in ra tháng đó năm đó có bao nhiêu ngày

1. Bài toán tính số ngày của tháng

Viết chương trình nhập vào từ bàn phím số nguyên n thuộc vào đoạn [1..12] và số nguyên m. In ra màn hình tháng và số ngày của tháng trong năm m ứng với m được nhập vào. Trong đó: 1 tương ứng với “Tháng giêng có 31 ngày”, 2 tương ứng với tháng 2,…, 12 tương ứng tháng 12. Nếu giá trị nhập vào không thuộc vào đoạn [1..12] thì thông báo “Không có tháng trong năm tương ứng với số bạn đã nhập”.

Một năm chúng ta có 12 tháng, mỗi tháng sẽ có số ngày khác nhau, được liệt kê trong bảng dưới đây:

Tháng Số ngày
Tháng 1, 3,  5, 7, 8, 10, 12 31 ngày
Tháng 2 28 hoặc 29 ngày
Tháng 4, 6, 9, 11 30 ngày

Cách giải bài toán trên như sau:

  • Nhập tháng từ bàn phím, ta gọi biến này là thang
  • Sử dụng cấu trúc switch case với giá trị truyền vào để kiểm tra là thang, cụ thể switch(thang)
  • Kiểm tra từng trường hợp nếu tháng 1, 3, 7, 8, 10, 12 thì in ra màn hình 31 ngày
  • Nếu tháng 2 in ra màn hình 28 hoặc 29 ngày
  • Nếu tháng 4. 6, 9, 11 in ra màn hình 30 ngày
  • Nếu giá trị tháng không nằm trong khoảng từ 1 đến 12 thì in ra màn hình tháng không hợp lệ

Viết chương trình nhập vào tháng và năm kiểm tra in ra tháng đó năm đó 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 in ra số ngày của tháng đó được mô tả như sau:

Viết chương trình nhập vào tháng và năm kiểm tra in ra tháng đó năm đó có bao nhiêu ngày

Hàm cho phép nhập n trong đoạn từ 1 đến 12 đến khi hợp lệ thì cho phép nhập tiếp

do {
    cout << "nhap thang n: ";
    cin >> n;
    if (n < 1 || n > 12) cout << "nhap sai. Moi nhap lai" << endl;
} while (n < 0 || n > 12);

Cấu trúc switch…case kiểm tra ngày trong năm

Nếu n tháng thuộc những tháng 1,3,5,7,8,10,12 thì in ra màn hình tháng đó có 31 ngày. Ngược lại, nếu n tháng thuộc tháng 4,6,9,11 thì in ra màn hình tháng đó có 30 ngày.

switch (condition) {
    case 1:
        CodeBlock1;
        break;
    case 2:
        CodeBlock2;
        break;
    case 3:
        CodeBlock3;
        break;
    case n:
        CodeBlockN;
        break;
    default:
        CodeBlockDefault;
}

Đặc biệt, đối với tháng 2 thì kiểm tra m năm xem năm đó có phải năm nhuận hay không. Nếu là năm nhuận thì in ra màn hình tháng 2 có 29 ngày, ngược lại in ra màn hình 28 ngày.

Hàm kiểm tra năm nhuận:

Một năm được gọi là nhuận nếu số năm đó chia hết cho 4 mà không chia hết cho 100. Hoặc năm đó chia hết cho 400.

if (m%4==0 || m%400==0) cout<<"Thang 2 co 29 ngay";//kiem tra nam nhuan else cout<<"Thang 2 co 28 ngay";

3. Viết chương trình nhập vào tháng và năm kiểm tra in ra tháng đó năm đó có bao nhiêu ngày

#include


using namespace std;
int main() {
    int n, m;
    //chi cho phep nhap n trong doan[1..12]
    do {
        cout << "nhap thang n: ";
        cin >> n;
        if (n < 1 || n > 12)
            cout << "nhap sai. Moi nhap lai" << endl;
    } while (n < 0 || n > 12);
    cout << "nhap nam m: ";
    cin >> m;
    switch (n) {
        case 1:
            if (n == 1) cout << "Thang 1 co 31 ngay";
            break;
        case 2:
            if (n == 2) {
                if (m % 4 == 0 || m % 400 == 0) cout << "Thang 2 co 29 ngay"; //kiem tra nam nhuan
                else cout << "Thang 2 co 28 ngay";
            }
        case 3:
            if (n == 3) cout << "Thang 3 co 31 ngay";
            break;
        case 4:
            if (n == 4) cout << "Thang 4 co 30 ngay";
            break;
        case 5:
            if (n == 5) cout << "Thang 5 co 31 ngay";
            break;
        case 6:
            if (n == 6) cout << "Thang 6 co 30 ngay";
            break;
        case 7:
            if (n == 7) cout << "Thang 7 co 31 ngay";
            break;
        case 8:
            if (n == 8) cout << "Thang 8 co 31 ngay";
            break;
        case 9:
            if (n == 9) cout << "Thang 9 co 30 ngay";
            break;
        case 10:
            if (n == 10) cout << "Thang 10 co 31 ngay";
            break;
        case 11:
            if (n == 11) cout << "Thang 11 co 30 ngay";
            break;
        default:
            cout << "Thang 12 co 31 ngay";
    };
}

4. Kết quả

Viết chương trình nhập vào tháng và năm kiểm tra in ra tháng đó năm đó có bao nhiêu ngày

Viết chương trình nhập vào tháng và năm kiểm tra in ra tháng đó năm đó có bao nhiêu ngày