ZCMU 2119: 任意年月日历

Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 94 Solved: 25

Description

已知2007年1月1日为星期一。
设计一函数按照下述格式打印2007年以后(含)某年某月的日历,2007年以前的拒绝打印。
为完成此函数,设计必要的辅助函数可能也是必要的。其中输入为年分和月份。

Input


image.png

Output

Sample Input

Sample Output

image.png

题解:

主要找到当月的第一天是星期几,然后注意一下格式就不会有太大问题~需要注意空格和换行。

代码:

#include
using namespace std;

int year[2][13]=
{
    {0,31,28,31,30,31,30,31,31,30,31,30,31},
    {0,31,29,31,30,31,30,31,31,30,31,30,31}
};

int dayofweek(int y,int m,int d)
{
    static int t[]= {0,3,2,5,0,3,5,1,4,6,2,4};
    y-=m<3;
    return (y+y/4-y/100+y/400+t[m-1]+d)%7;
}

int main()
{
    int y,m;
    scanf("%d%d",&y,&m);

    printf("Calendar %d-%02d\n",y,m);
    printf("---------------------\n");
    printf(" Su Mo Tu We Th Fr Sa\n");
    printf("---------------------\n");

    int k=(y%400==0||(y%4==0&&y%100!=0));

    int w=dayofweek(y,m,1);      //确定输入的那个月一号是星期几

    for(int i=0;i
image.png

你可能感兴趣的:(ZCMU 2119: 任意年月日历)