文章目录
- 打印日期
- 日期类问题必备函数
- AC代码
打印日期
本题链接:打印日期
本博客给出本题截图:
日期类问题必备函数
const int months[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; int is_leap(int year) // 闰年返回1,平年返回0 { if (year % 4 == 0 && year % 100 || year % 400 == 0) return 1; return 0; } int get_days(int y, int m) // y年m月有多少天 { if (m == 2) return months[m] + is_leap(y); return months[m]; }
AC代码
代码解释:没什么好解释的,注意1月1日也算一天,同时需要背好日期类题目的模板
代码:
#include <iostream> #include <cstring> #include <algorithm> using namespace std; const int months[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; int is_leap(int year) // 闰年返回1,平年返回0 { if (year % 4 == 0 && year % 100 || year % 400 == 0) return 1; return 0; } int get_days(int y, int m) // y年m月有多少天 { if (m == 2) return months[m] + is_leap(y); return months[m]; } int main() { int y, s; while (cin >> y >> s) { int m = 1, d = 1; s -- ; //因为1月1日也算一天 while (s -- ) { if ( ++ d > get_days(y, m)) { d = 1; if ( ++ m > 12) { m = 1; y ++ ; } } } printf("%04d-%02d-%02d\n", y, m, d); } return 0; }