公元1年1月1日是星期一,要求输入年月日,程序会显示你输入的时期是星期几,那一年的第几天。
闰年:公历年份是4的倍数的,且不是100的倍数,为闰年。(如2004年就是闰年)。
输入格式:
2021
12
17
输出格式:
星期五,这是2021年的第351天。
要求:至少要求写出4个子函数
供参考:
#include<stdio.h>
int isLeap(int y) //闰年判断
{
if((y%4==0 && y%100!=0)||(y%400==0))
return 1;
else
return 0;
}
int GetDaysOfMonth(int y, int m)
{
int daysOfMonth[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
if(isLeap(y) && m == 2) return daysOfMonth[m-1]+1;
return daysOfMonth[m-1];
}
int GetWeek(int year,int m,int d)
{
int w,y,c;
y = year % 100;
c = year / 100;
if (m == 1 || m == 2) {
m += 12; y--;
}
w = (y + y / 4 + c / 4 - 2 * c + 26 * (m + 1) / 10 + d - 1) % 7;
return w >= 0 ? w : (7 + w);
}
int GetSumDays(int y,int m,int d)
{
int i,sum=0;
for(i=1;i<m;i++)
sum += GetDaysOfMonth(y,i);
sum += d;
return sum;
}
int main()
{
int year,month,day;
char Week[][10] = {"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
scanf("%d%d%d",&year,&month,&day);
printf("%s,这是%d年的第%d天",Week[GetWeek(year,month,day)],year,GetSumDays(year,month,day));
return 0;
}