/*2019年1月29日*//*作者:石輔寸*//*根據年月日計算星期幾*//* S = {x - 1 [(x-1)/4] - [(x-1)/100] + [(x-1)/400] + C}%7 *//* S為星期序數,x為年份,C為當年元旦至當日(包含當日)的天數 */#include<stdio.h>main(){int a,b,c,d,s;printf("清輸入年月日:");scanf("%d%d%d",&a,&b,&c);/*檢驗輸入是否正確*/if(b <=0|| b >12){printf("月份輸入錯誤,請重新輸入!");}if(c <=0){printf("日期輸入錯誤,請重新輸入!");}if(c >=31){switch(b){case1:printf("日期輸入錯誤,請重新輸入!");break;case3:printf("日期輸入錯誤,請重新輸入!");break;case5:printf("日期輸入錯誤,請重新輸入!");break;case7:printf("日期輸入錯誤,請重新輸入!");break;case8:printf("日期輸入錯誤,請重新輸入!");break;case10:printf("日期輸入錯誤,請重新輸入!");break;case12:printf("日期輸入錯誤,請重新輸入!");break;}}if(c >=30){switch(b){case4:printf("日期輸入錯誤,請重新輸入!");break;case6:printf("日期輸入錯誤,請重新輸入!");break;case9:printf("日期輸入錯誤,請重新輸入!");break;case11:printf("日期輸入錯誤,請重新輸入!");break;}}if((a%4==0&& a%100!=0)||(a%400==0)){if(b ==2){if(c >=29){printf("日期輸入錯誤,請重新輸入!");}}}else{if(b ==2){if(c >=28){printf("日期輸入錯誤,請重新輸入!");}}}/*閏年的情況*/if((a%4==0&& a%100!=0)||(a%400==0)){switch(b){case1: d = c;break;case2: d = c +31;break;case3: d = c +60;break;case4: d = c +91;break;case5: d = c +121;break;case6: d = c +152;break;case7: d = c +182;break;case8: d = c +213;break;case9: d = c +244;break;case10:d = c +274;break;case11:d = c +305;break;case12:d = c +335;break;}}/*平年的情況*/else{switch(b){case1: d = c;break;case2: d = c +31-1;break;case3: d = c +60-1;break;case4: d = c +91-1;break;case5: d = c +121-1;break;case6: d = c +152-1;break;case7: d = c +182-1;break;case8: d = c +213-1;break;case9: d = c +244-1;break;case10:d = c +274-1;break;case11:d = c +305-1;break;case12:d = c +335-1;break;}}
s =(a-1+(a-1)/4-(a-1)/100+(a-1)/400+ d)%7;switch(s){case0:printf("這一天是週日。\n");break;case1:printf("這一天為週一。\n");break;case2:printf("這一天是週二。\n");break;case3:printf("這一天是週三。\n");break;case4:printf("這一天是週四。\n");break;case5:printf("這一天是週五。\n");break;case6:printf("這一天是週六。\n");break;}}