fork download
  1. #include<stdio.h>
  2.  
  3. static char daytab[2][13]={
  4. {0,31,28,31,30,31,30,31,31,30,31,30,31},
  5. {0,31,29,31,30,31,30,31,31,30,31,30,31}
  6. };
  7.  
  8. int day_of_year(int year,int month,int day);
  9. void month_day(int year,int yearday,int *pmonth,int *pday);
  10.  
  11. int main(void)
  12. {
  13. int day,mon,dat;
  14.  
  15. day=day_of_year(1981,10,2);
  16.  
  17. printf("%d\n",day);
  18.  
  19. month_day(1981,81,&mon,&dat);
  20.  
  21. printf("%d,%d",mon,dat);
  22.  
  23. return 0;
  24. }
  25.  
  26. /* day_of_year: set day of year from month and day */
  27.  
  28. int day_of_year(int year,int month,int day)
  29. {
  30. int i,leap;
  31.  
  32. leap=year%4==0 && year%100 !=0 || year %400 == 0;
  33.  
  34. if(month < 1 || month > 12)
  35. return -1;
  36. if(day < 1 || day > daytab[leap][month])
  37. return -1;
  38.  
  39. for(i=1;i<month;i++)
  40. day += daytab[leap][i];
  41.  
  42. return day;
  43. }
  44.  
  45. /* month_day: set month,day from day of the year */
  46.  
  47. void month_day(int year,int yearday,int *pmonth,int *pday)
  48. {
  49. int i,leap;
  50.  
  51. if(year < 1)
  52. {
  53. *pmonth = -1;
  54. *pday = -1;
  55. return;
  56. }
  57.  
  58. leap = year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
  59.  
  60. for(i=1;i<=12 && yearday > daytab[leap][i];i++)
  61. yearday -= daytab[leap][i];
  62.  
  63. if(i > 12 && yearday > daytab[leap][12])
  64. {
  65. *pmonth=-1;
  66. *pday=-1;
  67. }
  68. else
  69. {
  70. *pmonth=i;
  71. *pday=yearday;
  72. }
  73. }
  74.  
  75.  
Success #stdin #stdout 0s 2156KB
stdin
Standard input is empty
stdout
275
3,22