【发布时间】:2017-03-23 20:48:07
【问题描述】:
我正在尝试用 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);
}
【问题讨论】:
-
在调试器中单步执行会发生什么?
-
在日期方面没有简单的程序(去问问 jon skeet)。该功能已经存在,为什么要重新发明它。
-
有一个简单的公式来执行计算。见en.wikipedia.org/wiki/Determination_of_the_day_of_the_week
-
在互联网上搜索“c++ 计算星期几”以找到大量示例。
-
y已经是一个 int。因此,演员(int) y/ 4是多余的,(int)y/4 == y/4始终为真