如何用c++编写年历

当前页以系统当前日期的月份为准显示当前月的每一天(显示出日及对应的星期几)。当系统日期变到下一月时,系统自动翻页到下一月。 没啥思路,求大佬给点思路意见

参考如下:

#include <iostream>
using namespace std;
int main()
{
    int year,mon; 
    int i,j,cnt = 0;
    int t = 1,k=1;
    int arr[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    int curYear,curMon,curDay, wk;
    curYear = 2021;
    curMon = 10;
    curDay = 27;
    wk = 3;
    scanf("%d %d",&year,&mon);
    if(curYear > year)
    {
        for(i=mon;i<=12;i++)
        {
            if(i==2)
            {
                if(year%4==0 && year%100 !=0 || year%400==0)
                    cnt += 29;
                else
                    cnt += 28;
            }else
                cnt += arr[i];
        }
        for(i=year+1;i<curYear;i++)
        {
            if(i%4==0 && i%100 !=0 || i%400==0)
                cnt += 366;
            else
                cnt += 365;
        }
        for(i=1;i<curMon;i++)
        {
            if(i==2)
            {
                if(curYear%4==0 && curYear%100 !=0 || curYear%400==0)
                    cnt += 29;
                else
                    cnt += 28;
            }else
                cnt += arr[i];
        }
        cnt += curDay;
        wk = 7 - (wk+cnt)%7;
    }else if(curYear == year)
    {
        if (mon > curMon)
        {
            for(i=curMon+1;i<mon;i++)
            {
                if (i==2)
                {
                    if(curYear%4==0 && curYear%100 !=0 || curYear%400==0)
                        cnt += 29;
                    else
                        cnt += 28;
                }else
                    cnt += arr[i];
            }
            cnt += arr[curMon] - curDay;
            wk = (wk + cnt%7)%7+1;
        }else if(mon == curMon)
        {
            wk = (wk +7- (curDay-1)%7)%7;
        }else
        {
            for (i=mon;i<curMon;i++)
            {
                if(i==2)
                {
                    if(curYear%4==0 && curYear%100 !=0 || curYear%400==0)
                        cnt += 29;
                    else
                        cnt += 28;
                }else
                    cnt += arr[i];
            }
            cnt += curDay;
            wk = (wk+7-(cnt-1)%7)%7;
        }
    }else
    {
        for(i=curMon+1;i<=12;i++)
        {
            if(i==2)
            {
                if(curYear%4==0 && curYear%100 !=0 || curYear%400==0)
                    cnt += 29;
                else
                    cnt += 28;
            }else
                cnt += arr[i];
        }
        for(i=curYear+1;i<year;i++)
        {
            if(i%4==0 && i%100 !=0 || i%400==0)
                cnt += 366;
            else
                cnt += 365;
        }
        for(i=1;i<mon;i++)
        {
            if(i==2)
            {
                if(year%4==0 && year%100 !=0 || year%400==0)
                    cnt += 29;
                else
                    cnt += 28;
            }else
                cnt += arr[i];
        }
        cnt += curDay;
        wk = (wk+cnt-1)%7;
    }

    printf("一 二 三 四 五 六 日\n");
    //int t = 1,k=1;
    if(year%4==0 && year%100 !=0 || year%400==0) arr[2]= 29;
    while(t <= arr[mon])
    {
        if(k<wk)
        {
            printf("   ");
        }else
        {
            printf("%-3d",t);
            t++;
        }
        if(k%7==0) printf("\n");
        k++;
    }
    return 0;
}