问答题

【说明】 已知1900年1月1日是星期一,下面的函数count_5_13(int year)用于计算给定的年份year中有几个“黑色星期五”。“黑色星期五”指既是13日又是星期五的日期。 函数count_5_13(int year)首先算出年份year的1月13日是星期几,然后依次计算每个月的13日是星期几,若是星期五,则计数。 程序中使用了函数isLeapYear(int year),其功能是判断给定年份是否为闰年,返回值为1(或0)表示year是(或不是)闰年。 【C语言函数】 int count_5_13(int year) { int date; /*date为0表示星期日,为1~6分别表示星期一至星期六*/ long days=0; /*days记录天数*/ int m,y,c=0; /*c用于表示黑色星期五的个数*/ if (year<1900) return-1; /*计算从1900年1月1日起至给定年份year的1月13日间隔的天数*/ days=12; for (y= 1900; y < year; y++) { days +=365; if (isLeapYear(y)) (1) ; } date=((days%7) +1) %7; /*算出给定年份year的1月13日是星期几*/ c=( (2) ) 1:0; for(m=1; (3) ;m++) { switch (m) { case 1:case 3: case 5: case 7:case 8:case 10:case 12: days=31; break; case 4: case 6: case 9: case 11: days=30; break; case 2:days=28; if( (4) ) days=29; break; }/*end of switch*/ date=((days%7)+ (5) )%7; if (date==5) c++; } /*end of for*/ return c; }

【参考答案】

(1)days++,days+=1,days=days+1,或其等价表示 (2)date==5,或其等价表示 (3)m<......

(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)