蓝桥杯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) 编辑 收藏 举报