问题描述
有些西方人比较迷信,如果某个月的13号正好是星期五,他们就会觉得不太吉利,用古人的说法,就是“诸事不宜”。请你编写一个程序,统计出在在这一年中,既是13号又是星期五的日期。
说明:(1)一年有365天,闰年有366天,所谓闰年,即能被4整除且不能被100整除的年份,或是既能被100整除也能被400整除的年份;(2)已知1998年1月1日是星期四,用户输入的年份肯定大于或等于1998年。
样例输入
1998
样例输出
1998-2-13
1998-3-13
1998-11-13
1 #include<stdio.h> 2 int main() 3 { 4 int y; 5 int day; 6 int fun(int y); 7 scanf("%d",&y); 8 printf("%d",fun(y)); 9 return 0; 10 } 11 12 int fun(int y) 13 { 14 int week(int y); 15 int day; 16 int sum=12; 17 int i=0; 18 int count=0; 19 int w; 20 if(y==1998) 21 w=4; 22 else 23 w=week(y); 24 if((y%4==0 && y%100!=0) || (y%100==0 && y%400==0)) 25 day=29; 26 else 27 day=28; 28 int t; 29 t=sum%7+w; 30 if(t%7==5)//比较繁琐这里可以用循环实现 31 { 32 count++; 33 } 34 sum+=31; 35 t=sum%7+w; 36 if(t%7==5) 37 { 38 count++; 39 } 40 sum+=day; 41 t=sum%7+w; 42 if(t%7==5) 43 { 44 count++; 45 } 46 sum+=31; 47 t=sum%7+w; 48 if(t%7==5) 49 { 50 count++; 51 } 52 sum+=30; 53 t=sum%7+w; 54 if(t%7==5) 55 { 56 count++; 57 } 58 sum+=31; 59 t=sum%7+w; 60 if(t%7==5) 61 { 62 count++; 63 } 64 sum+=30; 65 t=sum%7+w; 66 if(t%7==5) 67 { 68 count++; 69 } 70 sum+=31; 71 t=sum%7+w; 72 if(t%7==5) 73 { 74 count++; 75 } 76 sum+=31; 77 t=sum%7+w; 78 if(t%7==5) 79 { 80 count++; 81 } 82 sum+=30; 83 t=sum%7+w; 84 if(t%7==5) 85 { 86 count++; 87 } 88 sum+=31; 89 t=sum%7+w; 90 if(t%7==5) 91 { 92 count++; 93 }sum+=30; 94 t=sum%7+w; 95 if(t%7==5) 96 { 97 count++; 98 } 99 return count; 100 } 101 102 int day(int y) 103 { 104 if(y<1998) 105 return 0; 106 if((y%4==0 && y%100!=0) || (y%100==0 && y%400==0)) 107 return day(y-1)+366; 108 else 109 return day(y-1)+365; 110 111 } 112 113 int week(int y) 114 { 115 int d=day(y-1); 116 int w=(d%7)+4; 117 w=w%7; 118 if(w==0) 119 return 7; 120 return w; 121 }