CCF CSP認證考試歷年真題 日期計算 C語言實現
阿新 • • 發佈:2018-12-27
試題編號:201509-2
試題名稱:日期計算 時間限制:1.0s 記憶體限制:256.0MB
問題描述:
給定一個年份y和一個整數d,問這一年的第d天是幾月幾日?注意閏年的2月有29天。滿足下面條件之一的是閏年:1)年份是4的整數倍,而且不是100的整數倍;2)年份是
400的整數倍。
輸入格式
輸入的第一行包含一個整數y,表示年份,年份在1900到2015之間(包含1900和2015)。
輸入的第二行包含一個整數d,d在1至365之間。
樣例輸出
3
21
樣例輸入
2000
40
樣例輸出
2
9
試題名稱:日期計算 時間限制:1.0s 記憶體限制:256.0MB
問題描述:
給定一個年份y和一個整數d,問這一年的第d天是幾月幾日?注意閏年的2月有29天。滿足下面條件之一的是閏年:1)年份是4的整數倍,而且不是100的整數倍;2)年份是
400的整數倍。
輸入格式
輸入的第一行包含一個整數y,表示年份,年份在1900到2015之間(包含1900和2015)。
輸入的第二行包含一個整數d,d在1至365之間。
輸出格式
輸出兩行,每行一個整數,分別表示答案的月份和日期。樣例輸入
2015
80樣例輸出
3
21
樣例輸入
2000
40
樣例輸出
2
9
分析:
很簡單的一道題,算是再記一下每月份的天數吧。
程式碼在此:
#include<stdio.h> #define MONTHS_NUM 12 // 十二個月 int judge_year(int year) { if( (year%4 == 0 && year%100 != 0 ) || year%400 == 0) { return true; } else { return false; } } int main() { int y, d; scanf("%d %d", &y, &d); int months[] = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; if(judge_year(y) == false) { months[2] = 28; } int i; for(i = 1; i <= MONTHS_NUM; i ++) { if(d > months[i]) d -= months[i]; else break; } printf("%d\n%d", i, d); return 0; }