[C++]Viết chương trình tính số ngày trong tháng nhập từ bàn phím

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. Sau đây hãy cùng TTnguyen luyện tập cấu trúc này qua bài toán viết chương trình tính số ngày trong tháng nhé!

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”.

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 in ra số ngày của tháng đó được mô tả như sau:

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. Code mẫu tìm số ngày trong năm

#include<bits/stdc++.h>
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ả

Kết quả 1

Kết quả 2

Bài viết của mình đến đây là kết thúc. Nếu có bất kì thắc mắc nào thì đừng ngần ngại liên hệ với mình nhé. Cảm ơn bạn đã tham khảo bài viết trên ttnguyen.net!

Nguyễn Tiến Trường

Mình viết về những điều nhỏ nhặt trong cuộc sống, Viết về câu chuyện những ngày không có em