題目內容
請你判斷西元2011年的某月某日是星期幾。
輸入說明:
輸入的第一列有一個表示測試資料組數的整數。接著每一列分別表示一組測試資料,其格式為M D。M表示月份(1~12),D表示日期(1~31),所有日期皆是合法的。輸出說明:
請你判斷2011年的該日期是星期幾。星期一到星期日分別為 Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday。
Sample Input
8 1 6 2 28 4 5 5 26 8 1 11 1 12 25 12 31
Sample Output
Thursday Monday Tuesday Thursday Monday Tuesday Sunday Saturday
解法
可以藉由原文題目裡面提到的幾個日期來為基準,來以此推算接下來的日期並找其規律。
(以上資料來源:大學程式能力檢定Collegiate Programming Examination(CPE)、中文翻譯:Ruby兔的ACM園地)
程式碼解答
#include <stdio.h> int main() { const int daymonth[]={0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};///每個月有幾天 const char*dayweek[]={"Friday", "Saturday", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday"};///一個星期有禮拜幾 int _case, month, day, i, totalday;///變數先設好舊版C語言要先設好, 新版後可以在中間運算是可以中再設 scanf("%d", &_case);//讀入幾筆資料 while(_case--)///運算過程 { scanf("%d%d", &month, &day); totalday=0;///先歸零以確保 for(i=0; i< month; i++) { totalday+=daymonth[i]; } totalday+=day; printf("%s\n", dayweek[totalday%7]); } }
程式碼打包:解法一