如何将输出从 1 更改为星期一?

How to change the ouput from 1 to Monday?

我正在使用此处的代码:https://www.geeksforgeeks.org/find-day-of-the-week-for-a-given-date/。它查找日期所在的星期几。输出是一个对应于星期几的数字,但我希望它说 'Monday' 而不是“1”。我该如何更改它?

#include <iostream>

using namespace std;

int dayofweek(int d, int m, int y)
{
    static int t[] = { 0, 3, 2, 5, 0, 3,
                       5, 1, 4, 6, 2, 4 };
    y -= m < 3;
    return ( y + y / 4 - y / 100 +
             y / 400 + t[m - 1] + d) % 7;
}

int main()
{
    int day = dayofweek(03, 02, 2020);
    cout << day << endl;

    return 0;
}

编写一个接受整数输入和 returns 字符串的方法。

const char* day(int n) 
{
    static const char* days[] = {
        "Monday", "Tuesday", …, "Sunday"
    }
    if (n >= 1 && n <= 7)
        return days[n-1];
    else
        return "Failday";
}

我这里假设周日是 7 点;如果为 0,请相应调整。

您可能更喜欢 std::string 而不是 char*;我会把这个细节留给你。

实现目标的方法有很多种。一种(天真的)方法是编写一个看起来像

的附加函数
std::string to_date_string(int day) {
    switch(day) {
    case 1:
        return "Monday";
    case 2:
        return "Tuesday";
    // TODO: Continue this pattern.
    }
}

这需要包括 string header。然后你可以简单地写

std::cout << to_date_string(day) << std::endl;

额外提示:尝试在没有 using namespace std; 的情况下编程。这条线可能是一个邪恶的陷阱 - 特别是对于初学者。