gpt4 book ai didi

C++给定日期的星期几

转载 作者:可可西里 更新时间:2023-11-01 17:36:45 25 4
gpt4 key购买 nike

我正在尝试用 C++ 编写一个简单的程序,返回给定日期的星期几。

输入格式为日、月、年。我无法让它与闰年一起工作。当输入年份是闰年时,我尝试从 a 变量中减去一个,但程序最终崩溃而没有错误消息。

如果有任何建议,我将不胜感激,但请尽量保持简单,我还是个初学者。为这个愚蠢的问题道歉,请原谅我的错误,这是我第一次在这个网站上发帖。

#include <iostream>
#include <string>
#include <vector>
#include <cmath>
using namespace std;


int d;
int m;
int y;


string weekday(int d, int m, int y){
int LeapYears = (int) y/ 4;
long a = (y - LeapYears)*365 + LeapYears * 366;
if(m >= 2) a += 31;
if(m >= 3 && (int)y/4 == y/4) a += 29;
else if(m >= 3) a += 28;
if(m >= 4) a += 31;
if(m >= 5) a += 30;
if(m >= 6) a += 31;
if(m >= 7) a += 30;
if(m >= 8) a += 31;
if(m >= 9) a += 31;
if(m >= 10) a += 30;
if(m >= 11) a += 31;
if(m == 12) a += 30;
a += d;
int b = (a - 2) % 7;
switch (b){
case 1:
return "Monday";
case 2:
return "Tuesday";
case 3:
return "Wednesday";
case 4:
return "Thursday";
case 5:
return "Friday";
case 6:
return "Saturday";
case 7:
return "Sunday";
}
}

int main(){
cin >> d >> m >> y;
cout << weekday(d, m, y);
}

最佳答案

第一:如果已经有可以处理相同问题的标准化函数,请不要编写自己的函数。重点是您可能很容易犯错误(我已经在weekday() 函数的第一行,就像现在一样),而标准化函数的实现已经过全面测试,您可以确信它们提供了您期望得到的结果。

话虽这么说,这里有一个可能的方法使用 std::localtimestd::mktime :

#include <ctime>
#include <iostream>

int main()
{
std::tm time_in = { 0, 0, 0, // second, minute, hour
9, 10, 2016 - 1900 }; // 1-based day, 0-based month, year since 1900

std::time_t time_temp = std::mktime(&time_in);

//Note: Return value of localtime is not threadsafe, because it might be
// (and will be) reused in subsequent calls to std::localtime!
const std::tm * time_out = std::localtime(&time_temp);

//Sunday == 0, Monday == 1, and so on ...
std::cout << "Today is this day of the week: " << time_out->tm_wday << "\n";
std::cout << "(Sunday is 0, Monday is 1, and so on...)\n";

return 0;
}

关于C++给定日期的星期几,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40517192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com