fork download
  1. #include <stdio.h>//第0講演習 3-5
  2.  
  3. int is_uruu(int year){
  4. if(year%4==0){
  5. if(year%100==0){
  6. if(year%400==0) return 1;
  7. else return 0;
  8. }
  9. else return 1;
  10. }
  11. else return 0;
  12. }
  13. int maxday_of_month(int y, int m){
  14. if(m==1 || m==3 || m==5 || m==7 || m==8 || m==10 || m==12){
  15. return 31;
  16. }
  17. else if(m==4 || m==6 || m==9 || m==11){
  18. return 30;
  19. }
  20. else if(m==2){
  21. int a;
  22. a=is_uruu(y);
  23. if(a==1) return 29;
  24. else if (a==0) return 28;
  25. }
  26. }
  27. int days_from(int y, int m){
  28. int i,s=0;
  29. if(y>=1900){
  30. for(i=1;i<m;i++){
  31. s=s+maxday_of_month(y,i);
  32. }
  33. return s+1;
  34. }
  35. if(y<1900){
  36. for(i=12;i>=m;i--){
  37. s=s+maxday_of_month(y,i);
  38. }
  39. return s;
  40. }
  41. }
  42. int hi_year(int y){
  43. int i,j=0,a;
  44. if(y>=1900){
  45. for(i=1900;i<y;i++){
  46. a=is_uruu(i);
  47. if(a==1) j=j+366;
  48. else if(a==0) j=j+365;
  49. }
  50. return j;
  51. }
  52. else if(y<1900){
  53. for(i=y;i<1900;i++){
  54. a=is_uruu(i);
  55. if(a==1) j=j+366;
  56. else if(a==0) j=j+365;
  57. }
  58. return j;
  59. }
  60. }
  61. int suu_yobi(int y, int m){
  62. int a,b,c;
  63. a=hi_year(y);
  64. b=days_from(y,m);
  65. c=(a+b)%7;
  66. if(y>=1900){
  67. if(c==0) return 0;//日
  68. else if(c==1) return 1;//月
  69. else if(c==2) return 2;//火
  70. else if(c==3) return 3;//水
  71. else if(c==4) return 4;//木
  72. else if(c==5) return 5;//金
  73. else if(c==6) return 6;//土
  74. }
  75. if(y<1900){
  76. if(c==0) return 2;//火
  77. else if(c==1) return 1;//月
  78. else if(c==2) return 0;//日
  79. else if(c==3) return 6;//土
  80. else if(c==4) return 5;//金
  81. else if(c==5) return 4;//木
  82. else if(c==6) return 3;//水
  83. }
  84. }
  85. void tuitati(int yobi, int y,int m){
  86. int day,i;
  87. day=maxday_of_month(y,m);
  88. if(yobi==0){
  89. printf(" 1");
  90. for(i=2;i<=day;i++){
  91. if(i<10)printf(" %d",i);
  92. else printf(" %d",i);
  93. if(i%7==0)printf("\n");
  94. }
  95. return ;
  96. }
  97. else printf(" ");
  98. if(yobi==1){
  99. printf(" 1");
  100. for(i=2;i<=day;i++){
  101. if(i<10)printf(" %d",i);
  102. else printf(" %d",i);
  103. if(i%7==6)printf("\n");
  104. }
  105. return ;
  106. }
  107. else printf(" ");
  108. if(yobi==2){
  109. printf(" 1");
  110. for(i=2;i<=day;i++){
  111. if(i<10)printf(" %d",i);
  112. else printf(" %d",i);
  113. if(i%7==5)printf("\n");
  114. }
  115. return ;
  116. }
  117. else printf(" ");
  118. if(yobi==3){
  119. printf(" 1");
  120. for(i=2;i<=day;i++){
  121. if(i<10)printf(" %d",i);
  122. else printf(" %d",i);
  123. if(i%7==4)printf("\n");
  124. }
  125. return ;
  126. }
  127. else printf(" ");
  128. if(yobi==4){
  129. printf(" 1");
  130. for(i=2;i<=day;i++){
  131. if(i<10)printf(" %d",i);
  132. else printf(" %d",i);
  133. if(i%7==3)printf("\n");
  134. }
  135. return ;
  136. }
  137. else printf(" ");
  138. if(yobi==5){
  139. printf(" 1");
  140. for(i=2;i<=day;i++){
  141. if(i<10)printf(" %d",i);
  142. else printf(" %d",i);
  143. if(i%7==2)printf("\n");
  144. }
  145. return ;
  146. }
  147. else printf(" ");
  148. if(yobi==6){
  149. printf(" 1\n");
  150. for(i=2;i<=day;i++){
  151. if(i<10)printf(" %d",i);
  152. else printf(" %d",i);
  153. if(i%7==1)printf("\n");
  154. }
  155. return ;
  156. }
  157. }
  158. int main() {
  159. int year,month,yobi;
  160. scanf("%d %d",&year,&month);
  161. yobi=suu_yobi(year,month);
  162. printf("%d年%d月のカレンダー\n",year,month);
  163. printf(" Su Mo Tu We Th Fr Sa\n");
  164. tuitati(yobi,year,month);
  165.  
  166. return 0;
  167. }
Success #stdin #stdout 0s 5324KB
stdin
2026 5
stdout
2026年5月のカレンダー
 Su Mo Tu We Th Fr Sa
                 1  2
  3  4  5  6  7  8  9
 10 11 12 13 14 15 16
 17 18 19 20 21 22 23
 24 25 26 27 28 29 30
 31