Chương trình C++ tìm số ngày của tháng trong một năm

Đây là bài 13/15 bài của series môn học TH Nhập môn lập trình

1. Quy tắc số ngày của tháng trong một năm

Một năm có 12 tháng, mỗi tháng sẽ có số ngày khác nhau.

Số ngày trong tháng

Các tháng có 31 ngày là 1, 3, 5, 7, 8, 10, 12. Các tháng có 30 ngày là 4, 6, 9, 11. Tháng 2 có 28 ngày nếu thuộc năm không nhuận, có 29 nếu thuộc năm nhuận.

Vậy năm nhuận là năm như thế nào? Năm nhuận là năm chia hết cho 4 nhưng không chia hết 100 hoặc chia hết 400.

Chương trình tìm số ngày của tháng trong một năm được thực hiện như sau:

– Nhập tháng và năm từ bàn phím.

– Kiểm tra nếu tháng là 1, 3, 5, 7, 8, 10, 12 thì in ra màn hình tháng đó có 31 ngày. Nếu tháng là 4, 6, 9, 11 thì in ra màn hình tháng đó có 30 ngày.

– Kiểm tra nếu tháng là 2 thì kiểm tra năm nhuận. Nếu năm nhuận thì in ra màn hình tháng 2 có 29 ngày, ngược lại tháng 2 có 28 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ệ.

2. Sử dụng câu lệnh switch case trong C++

Sử dụng câu lệnh switch case để kiểm tra các tháng.

#include <iostream>
#include <cmath>
using namespace std;

//Ham kiem tra nam nhuan
bool checkYear(int nam) {
    return (nam % 4 == 0 && nam % 100 != 0) || nam % 400 == 0;
}
    
int main() {
    int month, year;
    cout << "Nhap vao thang: ";
    cin >> month;
    cout << "Nhap vao nam: ";
    cin >> year;

    switch (month) {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            cout<<"Month "<<month<<"th has 31 days.";
            break;
        case 4:
        case 6:
        case 9:
        case 11:
            cout<<"Month "<<month<<"th has 30 days.";
            break;
        case 2:
            if (checkYear(year)) {
                cout<<"Month "<<month<<"th has 29 days.";
            } else {
                cout<<"Month "<<month<<"th has 28 days.";
            }
            break;
        default:
            cout<<"Invalid month.";
    }

    return 0;
}

3. Sử dụng câu lệnh if…else trong C++

Sử dụng câu lệnh if else để kiểm tra các tháng.

#include <iostream>
#include <cmath>
using namespace std;

//Ham kiem tra nam nhuan
bool checkYear(int nam) {
    return (nam % 4 == 0 && nam % 100 != 0) || nam % 400 == 0;
}
    
int main() {
    int month, year;
    cout << "Nhap vao thang: ";
    cin >> month;
    cout << "Nhap vao nam: ";
    cin >> year;

    if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {
        cout<<"Month "<<month<<"th has 31 days.";
    } else if (month == 4 || month == 6 || month == 9 || month == 11) {
        cout<<"Month "<<month<<"th has 30 days.";
    } else if (month == 2) {
        if (checkYear(year)) {
            cout<<"Month "<<month<<"th has 29 days.";
        } else {
            cout<<"Month "<<month<<"th has 28 days.";
        }
    } else {
        cout<<"Invalid month.";
    }

    return 0;
}

4. Một cách ngắn gọn giúp tìm số ngày trong tháng

Những ví dụ trên sử dụng nhiều câu lệnh cout để in các ngày trong tháng. Chúng ta có thể tạo 1 biến lưu các trường hợp tháng có 31 ngày, 30 ngày, 29 ngày, 28 ngày như cách bên dưới. Việc này giúp chương trình chỉ cần sử dụng 1 câu lệnh cout để in số ngày trong tháng.

#include <iostream>
#include <cmath>
using namespace std;

//Ham kiem tra nam nhuan
bool checkYear(int nam) {
    return (nam % 4 == 0 && nam % 100 != 0) || nam % 400 == 0;
}
    
int main() {
    int month, year;
    // cases of month in year
    int monthcase = 0;
    bool validMonth = true;
    cout << "Nhap vao thang: ";
    cin >> month;
    cout << "Nhap vao nam: ";
    cin >> year;

    switch (month) {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            monthcase = 3;
            break;
        case 4:
        case 6:
        case 9:
        case 11:
            monthcase = 2;
            break;
        case 2:
            if (checkYear(year)) {
                monthcase = 1;
            } else {
                monthcase = 0;
            }
            break;
        default:
            cout<<"Invalid month.";
            validMonth = false;
            break;
    }
    if (validMonth) {
        cout<<"Month "<<month<<"th has "<<(28 + monthcase)<<" days.";
    }

    return 0;
}

Nếu tháng có 31 ngày thì monthcase = 3, tháng có 30 ngày thì monthcase = 2. Nếu năm nhuận và tháng 2 thì monthcase = 1, ngược lại monthcase = 0. Để in các ngày trong tháng ta chỉ cần lấy 28 cộng với monthcase.

5/5 - (1 bình chọn)
Bài trước và bài sau trong môn học<< Tìm dãy số Fibonacci trong C++Chương trình C++ tính tổng n số tự nhiên đầu tiên >>
Chia sẻ trên mạng xã hội:

Để lại một bình luận

Lưu ý:

1) Vui lòng bình luận bằng tiếng Việt có dấu.

2) Khuyến khích sử dụng tên thật và địa chỉ email chính xác.

3) Mọi bình luận trái quy định sẽ bị xóa bỏ.