打印日期

题目截图:

 

思路:

  简单模拟,详解请查看另一篇博客

 

代码如下:

 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 }

 

posted @ 2018-02-09 16:34  Just_for_Myself  阅读(211)  评论(0编辑  收藏  举报