3-29日期类问题练习
题目描述
输入年、月、日,计算该天是本年的第几天。
输入
包括三个整数年(1<=Y<=3000)、月(1<=M<=12)、日(1<=D<=31)。
输出
输入可能有多组测试数据,对于每一组测试数据,输出一个整数,代表Input中的年、月、日对应本年的第几天。
样例输入
2012 12 21
2013 1 5
样例输出
356
5
来源
1 #include<stdio.h> 2 #define ISYEAR(x) x%4 == 0 &&x%100 != 0 || x%400 == 0? 1 : 0 3 int dayOfmonth[13][2] = 4 { 5 0,0, 6 31,31, 7 28,29, 8 31,31, 9 30,30, 10 31,31, 11 30,30, 12 31,31, 13 31,31, 14 30,30, 15 31,31, 16 30,30, 17 31,31 18 }; 19 struct date{ 20 int year; 21 int month; 22 int day; 23 }; 24 25 int count_day(date a,date b) 26 { 27 int count = 1; 28 while(a.day != b.day ||a.month != b.month) 29 { 30 count ++; 31 a.day ++; 32 if(a.day > dayOfmonth[a.month][ISYEAR(a.year)]) 33 { 34 a.day = 1; 35 a.month ++; 36 } 37 } 38 return count ; 39 } 40 int main() 41 { 42 date x,y; 43 while(scanf("%d%d%d",&x.year,&x.month,&x.day) != EOF) 44 { 45 y.year = x.year; 46 y.month = 1; 47 y.day = 1; 48 int dis = count_day(y,x); 49 printf("%d\n",dis); 50 } 51 return 0; 52 }
练习二:
题目描述
给出年分m和一年中的第n天,算出第n天是几月几号。
输入
输入包括两个整数y(1<=y<=3000),n(1<=n<=366)。
输出
可能有多组测试数据,对于每组数据,按 yyyy-mm-dd的格式将输入中对应的日期打印出来。
样例输入
2013 60
2012 300
2011 350
2000 211
样例输出
2013-03-01
2012-10-26
2011-12-16
2000-07-29
提示 [+]
*** 提示已隐藏,点击上方 [+] 可显示 ***
来源
1 #include<stdio.h> 2 #define ISYEAR(x) x%4 == 0 &&x%100 != 0 || x%400 == 0? 1 : 0 3 int dayOfmonth[13][2] = 4 { 5 0,0, 6 31,31, 7 28,29, 8 31,31, 9 30,30, 10 31,31, 11 30,30, 12 31,31, 13 31,31, 14 30,30, 15 31,31, 16 30,30, 17 31,31 18 }; 19 struct date{ 20 int year; 21 int month; 22 int day; 23 }; 24 25 date count_day(date a,int day) 26 { 27 int count = 1; 28 while(count != day) 29 { 30 count ++; 31 a.day ++; 32 if(a.day > dayOfmonth[a.month][ISYEAR(a.year)]) 33 { 34 a.day = 1; 35 a.month ++; 36 } 37 } 38 return a ; 39 } 40 int main() 41 { 42 date x; 43 int year,day; 44 while(scanf("%d%d",&year,&day) != EOF) 45 { 46 x.year = year; 47 x.month = 1; 48 x.day = 1; 49 x = count_day(x,day); 50 printf("%04d-%02d-%02d\n",x.year,x.month,x.day); 51 } 52 return 0; 53 }
浙公网安备 33010602011771号