Từ 1 tới 3 trên tổng số 3 kết quả

Đề tài: Lập trình C: cấu trúc phân nhánh

  1. #1
    Ngày gia nhập
    01 2022
    Bài viết
    3

    Mặc định Lập trình C: cấu trúc phân nhánh

    Viết chương trình nhập từ bàn phím 3 giá trị là d, m, y biểu thị là ngày, tháng,năm nào đó; kiểm tra xem các giá trị này có biểu diễn hợp lệ 1 giá trị ngày hay không? Nếu hợp lệ, kết quả là YES, nếu không kết quả là NO.

    Năm hợp lệ: 1, 2, ....
    Tháng hợp lệ: 1, 2, ..., 12
    Ngày hợp lệ: tuỳ theo tháng, năm. Tháng 2 của năm thường có 28 ngày, năm nhuận có 29 ngày.


    Đoạn code này dùng cho bài này được k ạ? Em đưa vào bài nó cứ sai ấy ạ.Mn cho ý kiến về bài này giúp em với ạ, em cảm ơn nhiều ạ.

    #include <stdio.h>

    int main() {

    int ngay, thang, nam;



    scanf("%d%d%d",&ngay,&thang,&nam);

    switch(thang) {

    case 1: case 3: case 5: case 7: case 8: case 10: case 12:

    if( ngay>0 && ngay<=31){

    printf("YES\n",ngay,thang,nam);

    break;

    }

    else

    { printf("NO\n",ngay,thang,nam);

    break;

    }

    case 4: case 6: case 9: case 11:

    if( ngay<=30 && ngay>0){

    printf("YES\n",ngay,thang,nam);

    break;

    }

    else{ printf("NO\n",ngay,thang,nam);

    break;

    }

    case 2:

    if( ngay <=28 && ngay > 0){

    printf("YES\n",ngay,thang,nam);

    break;

    }

    else

    { printf("NO\n",ngay,thang,nam);

    break;

    }


    }
    return 0;
    }

  2. #2
    Ngày gia nhập
    12 2015
    Nơi ở
    Đà Nẵng
    Bài viết
    631

    Trích dẫn Nguyên bản được gửi bởi ahhhh Xem bài viết
    Viết chương trình nhập từ bàn phím 3 giá trị là d, m, y biểu thị là ngày, tháng,năm nào đó; kiểm tra xem các giá trị này có biểu diễn hợp lệ 1 giá trị ngày hay không? Nếu hợp lệ, kết quả là YES, nếu không kết quả là NO.

    Năm hợp lệ: 1, 2, ....
    Tháng hợp lệ: 1, 2, ..., 12
    Ngày hợp lệ: tuỳ theo tháng, năm. Tháng 2 của năm thường có 28 ngày, năm nhuận có 29 ngày.


    Đoạn code này dùng cho bài này được k ạ? Em đưa vào bài nó cứ sai ấy ạ.Mn cho ý kiến về bài này giúp em với ạ, em cảm ơn nhiều ạ.

    #include <stdio.h>

    int main() {

    int ngay, thang, nam;



    scanf("%d%d%d",&ngay,&thang,&nam);

    switch(thang) {

    case 1: case 3: case 5: case 7: case 8: case 10: case 12:

    if( ngay>0 && ngay<=31){

    printf("YES\n",ngay,thang,nam);

    break;

    }

    else

    { printf("NO\n",ngay,thang,nam);

    break;

    }

    case 4: case 6: case 9: case 11:

    if( ngay<=30 && ngay>0){

    printf("YES\n",ngay,thang,nam);

    break;

    }

    else{ printf("NO\n",ngay,thang,nam);

    break;

    }

    case 2:

    if( ngay <=28 && ngay > 0){

    printf("YES\n",ngay,thang,nam);

    break;

    }

    else

    { printf("NO\n",ngay,thang,nam);

    break;

    }


    }
    return 0;
    }
    Thêm code sau vào sau dòng lệnh scanf
    C Code:
    1.     if (nam<= 0) {
    2.         printf("NO\n");
    3.         return 0;
    4.     }
    Sửa code sau trong case 2:
    C Code:
    1.         case 2:
    2.             int soNgay = 28;
    3.             if (nam % 4 == 0 && nam % 100 != 0) {
    4.                 soNgay = 29;
    5.             }
    6.             if (nam % 400 == 0) {
    7.                 soNgay = 29;
    8.             }
    9.             if (ngay < 1 || ngay > soNgay) {
    10.                 printf("NO\n");
    11.             }
    12.             else {
    13.                 printf("YES\n");
    14.             }
    15.                         break;

  3. #3
    Ngày gia nhập
    02 2016
    Bài viết
    334

    Viết một hàm tính số ngày trong tháng. Hàm trả về 0 nếu tháng hoặc năm không hợp lệ.
    So sánh ngày với kết quả hàm này, nếu ngày nhỏ hơn 1 hoặc lớn hơn kết quả hàm thì là không hợp lệ

    int SoNgayTrongThang(int thang, int nam) {
    if (nam < 0) return 0; // năm không hợp lê
    switch (thang) {
    case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31;
    case 4: case 6: case 9: case 11: return 30;
    case 2:
    return (((nam % 4 != 0) || (nam % 100 == 0 && nam % 400 != 0))? 28 : 29);
    }
    return 0; // tháng không hợp lệ
    }

    // trong hàm main

    printf("%s\n", (ngay <= 0 || ngay > SoNgayTrongThang(thang, nam))? "NO" : "YES");
    Đã được chỉnh sửa lần cuối bởi NguNhuheo : 25-01-2022 lúc 07:15 PM.

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn