日期类问题

  • 常见日期类问题解法

大多数有关日期的编程题都是知二求一。如下图的知道日期A、天数,然后让求日期B。

日期类问题

例:

题目描述:

  给出年份m和一年中的第n添,算出第n天是几月几号。

输入:

  输入包括俩个整数y和n。

输出:

  可能有多组测试数据,对于每组数据,按格式yyyy-mm-dd将输入的日期打印出来。

样例输入:

  2000  3

  2000 31

  2000 40

样例输出:

  2000-01-03

  2000-01-31

  2000-02-09

代码如下:

 1 # include <iostream>
 2 # include <cstdio>
 3 
 4 using namespace std;
 5  bool Isyear ( int year){
 6     return (year % 4 == 0 && year % 100 != 0)|| (year % 400 == 0) ;
 7     //return true;
 8     //else return false;
 9 }//判断是否为闰年
10 int daytab[2][13] = {
11 {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
12 {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
13 }; //闰年平年
14 int main(){
15     int year , month , day , number ;
16     while ( scanf ( " %d %d", &year , &number) != EOF){
17         int row = Isyear( year ) ;
18         month = 0 ;
19         while ( number > daytab[row][month]){
20             number -= daytab[row][month];
21             month ++;
22         }
23         day = number ;
24         printf ( "%04d-%02d-%02d\n", year ,month ,day);
25     }
26 }

其余类似的问题都可参照此题解答。

 

上一篇:题解 [CSP-S 2021] 括号序列


下一篇:CSP-S 2021 廊桥分配