BÀI TẬP ĐƯỢC LẤY TỪ QUYỂN SÁCH KỸ THUẬT LẬP TRÌNH C
CỦA THẦY DƯƠNG THIÊN TỨ
Đề bài: Viết chương trình nhập ngày, tháng, năm. Kiểm tra xem ngày và tháng, năm nhập có hợp lệ hay không. Nếu hợp lệ cho biết đó là ngày thứ mấy trong tuần. Sử dụng công thức lịch Gregorian (dương lịch) để xác định ngày, tháng, năm hợp lệ và công thức Zeller để tính thứ trong tuần.
Video: mình đã hướng dẫn và giải thích cụ thể về 2 công thức trên trong video này
Mã lệnh:
#include <stdio.h>Mã nguồn: dành cho các bạn không thích gõ mã lệnh, Click here
int main(){
int day,month,year;
printf("Moi nhap ngay thang nam: ");
scanf("%d%d%d",&day,&month,&year);
if (year < 1582){
printf("Nam khong hop le! Nam bat dau tu 1582");
return 1;
}
if (month< 1 || month>12){
printf("Thang khong hop le");
return 2;
}
int top = 31;
switch (month){
case 4: case 6: case 9: case 11:
top = 30;
break;
case 2:
top = ( (year%4==0 && year%100 != 0) || (year % 400 ==0)) ? 29: 28;
break;
}
if (day<1 || day > top){
printf("Ngay khong hop le");
return 3;
}
printf("Ngay Hop le\n");
int d = day;
int a = (14-month)/12;
int y = year - a;
int m = month+12*a-2;
int dow = (d+y+y/4-y/100+y/400+(31*m)/12)%7;
if (dow == 0)
printf("Chu nhat");
else
printf("Thu %d",dow+1);
return 0;
}
0 nhận xét:
Đăng nhận xét