C语言实现的日历

清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>

    #include<stdio.h>  
    #include<stdlib.h>  
    #include<conio.h>  
    #include<string.h>  
    int a[31]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31};  
    int main()  
    {  
        int Leap(int );  
        int Month(int );  
        void print(int k,int t,int day);  
        int i,j=0,k,m,n,t=-6;  
        int day;  
      
        int total=1;  
      
      
        printf("请输入年份:");  
        scanf("%d",&m);  
        printf("请输入月份:");  
        scanf("%d",&n);  
        getchar();  
      
        do  
        {  
            system("cls");  
            printf("%d年%d月:\n",m,n);  
      
            total=365*(m-1);  
            for(i=1;i<m;i++)  
                if(Leap(i)==1)  
                    total+=1;  
              
            for(i=1;i<n;i++)  
                total=total+Month(i);  
            day=Month(n);  
            if(Leap(m)==1 && n==2)  
                day++;  
            if(total>1)  
                total--;  
            if(total==0)  
                k=(total+1)%7;  
            else  
                k=(total+2)%7;  
      
            print(k,t,day);  
            printf("请选择:");  
      
            switch(getch())  
            {  
                case '>':  
                    if(n==12)  
                    {  
                        m++;  
                        n=1;  
                    }  
                    else  
                        n++;  
                    break;  
                case '<':  
                    if(n==1)  
                    {  
                        m--;  
                        n=12;  
                    }  
                    else   
                        n--;  
                    break;  
                case '?':  
                    printf("请输入年份:");  
                    scanf("%d",&m);  
                    printf("请输入月份:");  
                    scanf("%d",&n);  
                    break;  
                case '#':  
                        j=1;  
                    break;  
            }  
      
            if(j==1)  
                break;  
            putchar(10);  
        }while(1);  
      
        return 0;  
        }  
      
    int Month(int n)  
    {  
        int day;  
        switch(n)  
        {  
            case 1:  
            case 3:  
            case 5:  
            case 7:  
            case 8:  
            case 10:  
            case 12:  
                    day=31;  
                break;  
            case 2:  
                    day=28;  
                break;  
            case 4:  
            case 6:  
            case 9:  
            case 11:  
                    day=30;  
                break;  
            default:  
                printf("您输入的月份有错, 请重新输入!\n");  
        }  
        return day;  
    }  
      
    int Leap(int m)  
    {//闰年返回1,否则返回0。  
        int i=0;  
        if(m%4==0 && m%100!=0 || m%400==0)  
            i=1;  
        return i;  
    }  
      
    void print(int k,int t,int day)  
    {  
        FILE *fp;  
        if((fp=fopen("abc.txt","w"))==0)  
        {  
            printf("打开失败\n");  
            exit(1);  
        }  
        int i;  
        printf("\n日      一      二      三      四     五      六\n");  
      
        fprintf(fp,"\n日      一      二      三      四     五      六\n");  
            printf("-------------------------------------------------------------\n");  
            fprintf(fp,"---------------------------------------------------------\n");  
            for(i=1;i<=k;i++)  
            {  
                printf("        ");  
                fprintf(fp,"        ");  
            }  
            for(i=0;i<day;i++)  
            {  
                printf("%-8d",a[i]);  
                fprintf(fp,"%-8d",a[i]);  
                if(k==6)  
                {  
                    printf("\n");  
                        printf("-------------------------------------------------------------\n");  
                    fprintf(fp,"\n");  
                        fprintf(fp,"-----------------------------------------------------------\n");  
                    t=0;  
                }  
                if(t!=0 && t%7==0)  
                {  
                    printf("\n");  
                    fprintf(fp,"\n");  
                    printf("-------------------------------------------------------------\n");  
                    fprintf(fp,"-----------------------------------------------------------\n");  
                }  
                k++;  
                t++;  
            }  
            printf("\n--------------------------\n");  
            printf("     选  项      \n");  
            printf("   >  下一个月    \n");  
            printf("   <  上一个月    \n");  
            printf("   ? 自定义年月  \n");  
            printf("   #  退出        \n");  
            printf("--------------------------\n");  
            fclose(fp);  
    }