1 条题解

  • 0
    @ 2024-12-24 9:54:30

    C :

    #include <stdio.h>
    int run=0;
    int getmonthnum(int month)
    {
        switch(month)
        {
        case 1:
            return 31;
        case 2:
            if(run) return 29;
            else return 28;
        case 3:
            return 31;
        case 4:
            return 30;
        case 5:
            return 31;
        case 6:
            return 30;
        case 7:
            return 31;
        case 8:
            return 31;
        case 9:
            return 30;
        case 10:
            return 31;
        case 11:
            return 30;
        case 12:
            return 31;
        }
    }
    int isrun(int year)
    {
        if(year%400==0 || (year%4==0 && year%100!=0))
            return 1;
        return 0;
    }
    void print(int year,int month,int begin)
    {
        int day,i = 1,j;
        day = getmonthnum(month);
        printf("---------------------\n");
        printf(" Su Mo Tu We Th Fr Sa\n");
        printf("---------------------\n");
        if(begin == 6) begin = -1;
        for(j = -1; j < begin; j++)
            printf("   ");
        for( ; begin < 6; begin++)
            printf("%3d",i++);
        printf("\n");
        j=0;
        while(i <= day)
        {
            printf("%3d",i++);
            j++;
            if(j == 7)
            {
                j=0;
                printf("\n");
            }
        }
        if(j!=0) printf("\n---------------------");
        else printf("---------------------");
    }
    int main()
    {
        int year,month,i,sum=0;
        while(scanf("%d%d",&year,&month)!= EOF)
        {
            sum = 0;
            run = 0;
            for(i=2007; i<year; i++)
                if(isrun(i)) sum+=366;
                else sum+=365;
            if(isrun(year)) run=1;
    
            for(i=1; i<month; i++)
                sum+=getmonthnum(i);
            print(year,month,sum%7);
            printf("\n");
        }
        return 0;
    }
    
    

    C++ :

    #include<stdio.h>
    int main()
    {
        int s[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
        int year,month,day;
        while(scanf("%d%d",&year,&month) != EOF)
        {
            printf("---------------------\n");
            printf(" Su Mo Tu We Th Fr Sa\n");
            printf("---------------------\n");
            day = 1;
            for(int i=2007; i<year; i++)
            {
                day+=365;
                if((i%4==0&&(i%100)!=0)||i%400==0)
                    day+=1;
            }
            for(int j=1; j<month; j++)
            {
                day+=s[j];
            }
            int a=s[month];
            if(((year%4==0&&(year%100)!=0)||(year%400==0))&&(month==2))
            {
                a=a+1;
            }
            if(((year%4==0&&(year%100)!=0)||(year%400==0))&&(month>2))
            {
                day += 1;
            }
            int t,q,w;
            t = day % 7;
            q = t;
            for(int k=0; k<t; k++)
            {
                printf("   ");
            }
            for( w=1; w<=a; w++)
            {
                printf("%3d",w);
                q++;
                if(q%7==0)
                    printf("\n");
            }
            if((q%7)!=0)
            {
                printf("\n");
            }
            printf("---------------------\n");
        }
        return 0;
    }
    
    
    • 1

    信息

    ID
    1138
    时间
    1000ms
    内存
    512MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者