蓝桥杯2013年省赛c/c++A组题1(高斯日记)

题目标题: 高斯日记

    大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210

    后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?   

    高斯出生于:1777年4月30日。在高斯发现的一个重要定理的日记上标注着:5343,因此可算出那天是:1791年12月15日。

    高斯获得博士学位的那天日记上标着:8113  , 请你算出高斯获得博士学位的年月日。

    提交答案的格式是:yyyy-mm-dd, 例如:1980-03-21

    请严格按照格式,通过浏览器提交答案。

    注意:只提交这个日期,不要写其它附加内容,比如:说明性的文字。

    参考答案:1799-07-16

 

 注意:根据题目给的5343是1791年12月15日,得出生的那天过去了也算是一天的。

 解题C语言代码如下:

  1 /***********************************************************************************************
  2  ***                  蓝桥杯2013年省赛c/c++A组题1(高斯日记)                                     ***
  3  ***********************************************************************************************
  4  *                                                                                             *
  5  *                 Project Name : -----------------                                            *
  6  *                                                                                             *
  7  *                    File Name : T1高斯日记.c                                                  *
  8  *                                                                                             *
  9  *                   Start Date : 2020-08-05                                                   *
 10  *                                                                                             *
 11  *                  Last Update : 2020-08-05 [JYH]                                             *
 12  *                                                                                             *
 13  *---------------------------------------------------------------------------------------------*
 14  * Functions:                                                                                  * 
 15  *   main -- 主函数,日期计算模拟器                                                                *
 16  *   is_leap_year -- 判断某年是否为闰年                                                           *
 17  *   each_month_date_count -- 计算某年某月的天数                                                  *
 18  * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
 19 #include <stdio.h>
 20 #define NUM 8113  // 日记中的数字 
 21 
 22 int is_leap_year(int year);
 23 int each_month_date_count(int year, int month);
 24 
 25 
 26 /***********************************************************************************************
 27  * main -- 主函数,日期计算模拟器                                                                *
 28  *                                                                                             *
 29  *    计算高斯日记中某个数字对应的日期                                                             *
 30  *                                                                                             *
 31  * INPUT:   none                                                                               *
 32  *                                                                                             *
 33  * OUTPUT:  none                                                                               *
 34  *                                                                                             *
 35  * WARNINGS:   none                                                                            *
 36  *                                                                                             *
 37  * HISTORY:                                                                                    *
 38  *   2020-08-05 JYH : Created.                                                                 *
 39  *=============================================================================================*/
 40 int main()
 41 {
 42     int year=1777, month=4, date=30;
 43     int num = 1;
 44     while(num<NUM){
 45         if(month==12&&date==31){
 46             year++;
 47             month = 1;
 48             date = 1;
 49         }
 50         else if(date==each_month_date_count(year,month)){
 51             month++;
 52             date = 1;
 53         }
 54         else{
 55             date++;
 56         }
 57         num++;
 58     }
 59     printf("%d-%d-%d",year,month,date);
 60 }
 61 
 62 
 63 /***********************************************************************************************
 64  * is_leap_year -- 判断某年是否为闰年                                                             *
 65  *                                                                                             *
 66  *    none                                                                                     *
 67  *                                                                                             *
 68  * INPUT:   year     -- 年份                                                                    *
 69  *                                                                                             *
 70  * OUTPUT:  1        -- 是闰年                                                                  *
 71  *          0        -- 不是闰年                                                                * 
 72  *                                                                                             *
 73  * WARNINGS:   none                                                                            *
 74  *                                                                                             *
 75  * HISTORY:                                                                                    *
 76  *   2020-08-05 JYH : Created.                                                                 *
 77  *=============================================================================================*/
 78 int is_leap_year(int year)
 79 {
 80     int s;
 81     if(year%4!=0){
 82         s = 0;
 83     }
 84     else{
 85         if(year%100==0){
 86             if(year%400==0){
 87                 s = 1;
 88             }
 89             else{
 90                 s = 0;
 91             }
 92         }
 93         else{
 94             s = 1;
 95         }
 96     }
 97     return s;
 98 }
 99 
100  
101  /***********************************************************************************************
102   * each_month_date_count -- 计算某年某月的天数                                                    *
103   *                                                                                             *
104   *    none                                                                                     *
105   *                                                                                             *
106   * INPUT:   year     -- 年份                                                                    *
107   *                                                                                             *
108   *          month    -- 月份                                                                    *
109   *                                                                                             *
110   * OUTPUT:  对应某一年某一月的天数                                                                 *
111   *                                                                                             *
112   * WARNINGS:   none                                                                            *
113   *                                                                                             *
114   * HISTORY:                                                                                    *
115   *   2020-08-05 JYH : Created.                                                                 *
116   *=============================================================================================*/
117 int each_month_date_count(int year, int month)
118 {
119     int days;
120     switch(month){
121         case 2:{
122             if(is_leap_year(year)){
123                 days = 29;
124             }
125             else{
126                 days =28;
127             }
128             break;
129         }
130         case 4:
131         case 6:
132         case 9:
133         case 11:{
134             days = 30;
135             break;
136         }
137         default: days = 31;
138     }
139     return days;
140 }

 

posted on 2020-08-06 16:52  last_point  阅读(234)  评论(0编辑  收藏  举报

导航