700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 黑色星期五c语言程序 [蓝桥杯][算法训练VIP]黑色星期五 (C语言代码)

黑色星期五c语言程序 [蓝桥杯][算法训练VIP]黑色星期五 (C语言代码)

时间:2022-11-08 04:56:58

相关推荐

黑色星期五c语言程序 [蓝桥杯][算法训练VIP]黑色星期五 (C语言代码)

解题思路:

输入年份是已知的,既然1998年1月1日是星期四,随后的某年某月某日是星期几,可用函数来计算。首先需要知道,从1998年到某年,过了多少年,每过一年要加上366天(闰年)或365天;然后是到某月之前过了多少月,若为1、3、5、7、8、10、12月,每月加上31天,若有闰年的二月,加上29天,若非闰年的二月,加上28天,其余月份,每月加上30天;再加上某月的天数,加3除以7取余,计算当天是星期几。输入年份,看其每个月的13号是否是星期五,并为黑色星期五计数。

注意事项:

从1998年1月1日开始,到某年某月某日过了多少天,用这个天数加3修正、除7取余,求得星期数,用0表示星期天,用1~6表示星期一到星期六。

参考代码:#include

intmain(){

intis_leap_year(int);//是否为闰年

intyear_days(int);//某年的天数

intmonth_days(int,int);//某年某月的天数

intweek(int,int,int);//某年某月某日是星期几

inty,m,c=0;

scanf("%d",&y);

for(m=1;m<=12;m++)//一年内的每个月

if(week(y,m,13)==5)//若13号是星期五

c++;//又出现了一次黑色星期五

printf("%d\n",c);

return0;

}

intis_leap_year(intyear){

return(year%4==0&&year%100!=0||year%400==0)?1:0;

}

intyear_days(intyear){

returnis_leap_year(year)?366:365;

}

intmonth_days(intyear,intmonth){

intdays;

if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)

days=31;

elseif(month==2){

if(is_leap_year(year))days=29;

elsedays=28;

}elsedays=30;

returndays;

}

intweek(intyear,intmonth,intday){

day+=3;

while(--month)day+=month_days(year,month);

while(1998!=year--)day+=year_days(year);

returnday%7;

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。