3-29日期类问题练习

题目描述

输入年、月、日,计算该天是本年的第几天。

 

 

 

输入

包括三个整数年(1<=Y<=3000)、月(1<=M<=12)、日(1<=D<=31)。

 

 

 

输出
输入可能有多组测试数据,对于每一组测试数据,输出一个整数,代表Input中的年、月、日对应本年的第几天。

 

 

 

样例输入
2012 12 21
2013 1 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 }

 

 

 

posted on 2013-03-29 10:36  lgy111  阅读(156)  评论(0)    收藏  举报

导航