为什么要计算每年元旦是星期几?

时间:2020-12-30 09:46:32
#include <stdio.h>
#include <math.h>
void printmonth(int m);
void printhead(int m);
int daysofmonth(int m);
int firstday(int y);
int year,weekday;
int main()
{  int i;
 printf("请输入年份:"); 
 scanf("%d",&year); 
 printf("1234567890");
 weekday=firstday(year); 
 printf("\n\n"); 
 printf("                 %d年\n",year);  
 for(i=1;i<=12;i++) 
 { 
 printmonth(i); 
 printf("\n"); 
 } 
 printf("\n\n");
 return 0;
}
void printmonth(int m)  //打印每月日历
{ int i,days; 
printhead(m); 
days=daysofmonth(m); 
for(i=1;i<=days;i++) 

printf("%5d",i); 
weekday=(weekday+1)%7; 
if (weekday==0) printf("\n   "); 
}
}
void printhead(int m) //打印每月的日历头(判定起始位置)

int i; 
printf("\n%d月   日   一   二   三   四   五   六\n",m); 
printf("   "); 
for(i=0;i<weekday;i++) printf("     ");
}
int daysofmonth(int m)  //每月的天数

switch (m) 
{ case 1:
case 3: 
case 5: 
case 7: 
case 8: 
case 10: 
case 12:return 31; 
case 4: 
case 6: 
case 9: 
case 11:return 30; 
case 2:if (((year%4==0 && year%100!=0)||year%400==0))   return 29;   else    return 28; 
default: return 0; 
}
}
int firstday(int y)  //判断某年元旦是星期几

double s ; 
s=floor(year-1+(year-1)/4.0-(year-1)/100.0+(year-1)/400.0+1);
return (int)s%7;
}

3 个解决方案

#1


楼主的意思是????贴代码是为了什么???表示没有理解楼主的意思 为什么要计算每年元旦是星期几?

#2


在 printmonth(int m)  中
weekday=(weekday+1)%7; 

也就是一年的日历,需要从元旦开始计算,所以需要知道这个基准的起始 weekday

#3


版主已解释...


LZ的标题.....颇有外国大牛的问题韵味......哈哈..

#1


楼主的意思是????贴代码是为了什么???表示没有理解楼主的意思 为什么要计算每年元旦是星期几?

#2


在 printmonth(int m)  中
weekday=(weekday+1)%7; 

也就是一年的日历,需要从元旦开始计算,所以需要知道这个基准的起始 weekday

#3


版主已解释...


LZ的标题.....颇有外国大牛的问题韵味......哈哈..