qing看一下这个ti怎么写啊求思路及解答

img


qing详细一点,t h xe/static/image/mid/ask/937793267566131.jpg "#left")

找一个标志日期(代码中是用2021年10月27为标记日期,当天是周三,也可以用其它日期作为标记日期),然后计算输入年月的1号跟标志日期之间的天数,就可以得到输入年月1号的星期。然后每7天1行输出就可以了。
运行结果:

img

代码:

#include <iostream>
#include <iomanip>
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;
    cin >> 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
    {
        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");
    cout << "Sun Mon Tus Wed Thu Fri Sat" << endl;
    if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) arr[2] = 29;
    while (t <= arr[mon])
    {
        if (k < wk+1)
        {
            cout << "   ";
        }
        else
        {
            cout << setw(3) << t ;
            t++;
        }
        cout << " ";
        if (k % 7 == 0) cout << endl;
        k++;
    }
    return 0;
}


您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632