万年历

#include<stdio.h>
#include<stdlib.h>

char* month_str[]={"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};
int
mon_day[][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};

int IsLeapYear(int year)   /*find out the year is leap year or not*/
{
    if((year%4==0&&year%100!=0)||(year%400==0))
        return 1;
    else
        return 0;
}

int DaySearch(int year,int month,int day)/*search what day this day is*/
{
    int days=0;
    int m,i;
    for(i=1900;i<year;i++)
        if(IsLeapYear(i))days=days+366;
        else days=days+365;
    for(m=1;m<month;m++)
        days=days+mon_day[IsLeapYear(year)][m-1];
    return((int)days%7);
}

int PrintAllYear(int year)/*print the all year*/
{
    int temp;
    int i,j;
    printf("\n\n                                  %d Calander\n",year);
    for(i=1;i<=12;i++){
        printf("\n\n                      %s\n\n",month_str[i-1]);
        printf("星期一 星期二 星期三 星期四 星期五 星期六 星期日\n");
        temp=DaySearch(year,i,1);/*本月的1号是星期几*/
            for(j=1;j<=mon_day[IsLeapYear(year)][i-1]+temp;j++)
            {
                if(j-temp<=0)     printf("       ");
                else if(j-temp<10)printf("%d      ",j-temp);
                      else printf("%d      ",j-temp);
                      if(j%7==0)printf("\n");
            }
    }
    return 0;
}


int main()
{
    int option=1;
    char ch;
    int year,month,day;

    while(1){
        printf("\n请输入你要打印的年份(XXXX)");
        scanf("%d",&year);
        PrintAllYear(year);
        printf("\n还要继续打印吗?(Y/N)\n");
        scanf("\n%c",&ch);
        if(ch=='N'||ch=='n')break;
    }
    return 0;
}

 

posted @ 2013-10-02 09:32  plusfancy  阅读(97)  评论(0编辑  收藏  举报