01/10/2018, 01:17
Cho em hỏi về BT C ạ
#include <stdio.h>
int main()
{
int Nam;
printf("nhap gia tri cua nam ", Nam);
scanf("%d", &Nam);
if(((Nam % 4 ==0) && (Nam % 100 != 0) || (Nam % 400 ==0)))
printf("day la nam nhuan
", Nam);
else
printf("khong phai la nam nhuan", Nam);
}
đây là BT về năm nhuận nếu điều kiện if đúng thì sẽ in ra là năm nhuận ạ, cho em hỏi về phần if ngay chỗ || ngay chỗ đó tại sao em thay là && không được vậy nếu thay thì nghĩa nó là vậy nếu nam chia hết cho 4 và chia hết cho 100 và chia hết cho 400 thì sẽ là năm nhuận, vậy sao khi ghi vào nó lại ra kết quả là else ạ :((((. Mong mọi người giúp đỡ em cảm ơn ạ
Bài liên quan
Bị nhầm ngoặc nhé.
if(((Nam % 4 ==0) && (Nam % 100 != 0)) || (Nam % 400 ==0))
sao phải dùng hoặc ở cuối mà k dc dùng và vậy anh
Cái này tức là bạn chưa hiểu vì sao lại có quy tắc ntn phải ko
1 vòng quay quanh MT cỡ 365.2425 ngày, vì vậy cứ 400 năm phải bỏ 3 ngày nhuận (leap day). (3/400 = 0.0075). Vậy là chỉ có năm chẵn 400 là năm nhuận, 3 năm kia không nhuận.
Nếu năm chia hết cho 400 thì ra TRUE => không bàn.
Nếu năm chia hết cho 4 nhưng ko chẵn trăm thì ra TRUE && TRUE = TRUE.
Nếu chẵn trăm thì bên trái ra FALSE và bên phải ra FALSE => FALSE.
Mình thì mình sẽ viết bằng XOR nhưng mà nó không nhanh bằng thôi