题目内容:
给出任意一个年月日(年>1900),现在我们不能只是直接计算,要先判断给出的日期是否合法,对于非法的日期要给出错误提示信息,合法的日期要再计算是星期几。
输入格式:
年 月 日
输出格式:
0~6。
星期日用 0 表示,星期一用 1 表示,星期二用 2 表示......星期六用 6 表示。
假设年份大于1900。先想一想:我们现在只会使用 if 语句,该如何建立数学模型?
输入样例:
2013 3 11
输出样例:
1
输入样例:
2013 13 15
输出样例:
month is error.
输入样例:
2013 3 32
输出样例:
day is error.
蔡勒(Zeller)公式,即w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
#include<stdio.h> int main() { int year,month,day; scanf("%d %d %d",&year,&month,&day); if(12<month||month<1) { printf("month is error.\n"); exit(0); } if(31<day || day<1) { printf("day is error.\n"); exit(0); } int y,c,d; y=year%100; c=year/100; d=y+y/4+c/4-2*c+26*(month+1)/10+day-1; int w=d%7; switch(w) { case 0:printf("0");break; case 1:printf("1");break; case 2:printf("2");break; case 3:printf("3");break; case 4:printf("4");break; case 5:printf("5");break; case 6:printf("6");break; } return 0; }