打印日期
题目截图:
思路:
简单模拟,详解请查看另一篇博客。
代码如下:
1 /* 2 打印日期 3 */ 4 5 #include <stdio.h> 6 #include <string.h> 7 #include <math.h> 8 #include <stdlib.h> 9 #include <time.h> 10 #include <stdbool.h> 11 12 // 存储每月天数,其中列数为 1 表示闰年 13 int day[13][2] = { {0, 0}, {31, 31}, {28, 29}, {31, 31}, {30, 30}, 14 {31, 31}, {30, 30}, {31, 31}, {31, 31}, {30, 30}, 15 {31, 31}, {30, 30}, {31, 31} }; 16 17 // 判断是否为闰年 18 int isLeapYear(int y) { 19 return ((y%4==0 && y%100!=0) || y%400==0); 20 } 21 22 int main() { 23 int y, n; 24 while(scanf("%d %d", &y, &n) != EOF) { 25 // mm 记录月份,dd记录日,flag记录是否是闰年 26 int mm=1, dd=0, flag=isLeapYear(y); 27 int i; 28 for(i=0; i<n; ++i) { // 简单模拟 29 dd++; 30 if(dd > day[mm][flag]) { // 一个月走完 31 mm++; // 进入下个月第一天 32 dd = 1; 33 } 34 } 35 // 按格式输出 36 printf("%04d-%02d-%02d\n", y, mm, dd); 37 } 38 39 return 0; 40 }