打印日历

要求:输入年份和月份,打印出日历

代码:

#include<stdio.h>
int f(int m,int n)
{
    int i,j,k,s=0,t;
    for(i=1;i<=m-1;i++)
        if(i%400==0||(i%4==0&&i%100!=0))
        s++;
    int sum=366*s+(m-1-s)*365;
    if(m%400==0||m%4==0&&m%100!=0)
    {
        int su=0;
        for(i=1;i<=n-1;i++)
        {
            if(i==2)su=su+29;
            else if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
                su=su+31;
            else su=su+30;
        }
        return (sum+su+1)%7;
    }
    else
    {
        int su=0;
        for(i=1;i<=n-1;i++)
        {
            if(i==2)su=su+28;
            else if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
                su=su+31;
            else su=su+30;
        }
        return (sum+su+1)%7;
    }
}
int main()
{
    int m,n;
    while(printf("请输入年份和月份(中间用空格隔开):\n")&&scanf("%d%d",&m,&n)!=EOF)
    {
        int i,j,k,s,t;
        printf("%12d年日历\n        ----------\n        ----------\n%12d月\n",m,n);
        printf("日  一  二  三  四  五  六\n");
        printf("--------------------------\n");
        if(m%400==0||m%4==0&&m%100!=0)
        {
            t=f(m,n);
            int ts=t;
            if(n==1||n==3||n==7||n==8||n==10||n==12)
            {
                for(i=1;i<=t;i++)
            {
                for(j=1;j<=4;j++)
                    printf(" ");
            }
            for(i=1;i<=31;i++)
            {
                printf("%-4d",i);
                ts++;
                if(ts%7==0)
                    printf("\n");
            }
            if(ts%7==0)
            printf("--------------------------\n");
            else
            printf("\n--------------------------\n");
            }
           else  if(n==2)
            {
               for(i=1;i<=t;i++)
            {
                for(j=1;j<=4;j++)
                    printf(" ");
            }
            for(i=1;i<=29;i++)
            {
                printf("%-4d",i);
                ts++;
                if(ts%7==0)
                    printf("\n");
            }
            if(ts%7==0)
            printf("--------------------------\n");
            else
            printf("\n--------------------------\n");
            }
            else
            {
                for(i=1;i<=t;i++)
                for(j=1;j<=4;j++)
                    printf(" ");
            for(i=1;i<=30;i++)
            {
                printf("%-4d",i);
                ts++;
                if(ts%7==0)
                    printf("\n");
            }
            if(ts%7==0)
            printf("--------------------------\n");
            else
            printf("\n--------------------------\n");
            }
        }
        else
        {
            t=f(m,n);
            int ts=t;
            if(n==1||n==3||n==7||n==8||n==10||n==12)
            {
                for(i=1;i<=t;i++)
            {
                for(j=1;j<=4;j++)
                    printf(" ");
            }
            for(i=1;i<=31;i++)
            {
                printf("%-4d",i);
                ts++;
                if(ts%7==0)
                    printf("\n");
            }
            if(ts%7==0)
            printf("--------------------------\n");
            else
            printf("\n--------------------------\n");
            }
           else  if(n==2)
            {
               for(i=1;i<=t;i++)
            {
                for(j=1;j<=4;j++)
                    printf(" ");
            }
            for(i=1;i<=28;i++)
            {
                printf("%-4d",i);
                ts++;
                if(ts%7==0)
                    printf("\n");
            }
            if(ts%7==0)
            printf("--------------------------\n");
            else
            printf("\n--------------------------\n");
            }
            else
            {
                for(i=1;i<=t;i++)
                for(j=1;j<=4;j++)
                    printf(" ");
            for(i=1;i<=30;i++)
            {
                printf("%-4d",i);
                ts++;
                if(ts%7==0)
                    printf("\n");
            }
            if(ts%7==0)
            printf("--------------------------\n");
            else
            printf("\n--------------------------\n");
            }
        }
    }
}
View Code

 

posted @ 2013-08-14 09:43  狂盗一枝梅  阅读(212)  评论(0编辑  收藏  举报