日计数和星期几(C ++)

时间:2019-03-14 17:49:55

标签: c++ new-project

我正在使用c ++编写一个程序,要求用户输入一个日期,例如(12 31),该程序将输出天数和星期几,因此将返回(12 31) (365周二)。到目前为止,我已经

 #include <iostream>
 using namespace std;
 int main (){ 
 while (true)  
 cout << "Enter date: "; cin >> mon >>day;
 if (!mon && !day) break; //this is so that 
 when the user enters (0 0) the program ends
 }
 cout << "Bye" << endl;
 return 0;
 }

我应该如何使程序与日期和星期几匹配?我只是开始通过在线教程学习c ++,所以我不太流利,但是我确实知道一些东西。我需要创建一个新功能吗?我的主要问题是,我遇到了一个障碍,即如何使程序计算从给定日期算起的天数(我当时认为范围是1-365)。没有寻找答案,但是一些帮助会很好。

1 个答案:

答案 0 :(得分:1)

  

没有寻找答案,但是一些帮助会很好。

在您进行cin >> mon >>day时,首先声明 int 变量 mon day ,但还要检查返回值,因此{{1 }}

如果您看一下函数管理时间,则可以看到通过if (!(cin >> mon day)) ...EOF occurred...声明的函数,包括 mktime ,并且您可以看到它们与<time.h>一起使用,其中包含您想要的内容:

struct tm

mktime 正是您所需要的:

  

mktime()函数将分解的时间结构(以本地时间表示)转换为日历时间表示。

所以您只需要设置字段:

int tm_wday;   /* Day of the week (0-6, Sunday = 0) */
int tm_yday;   /* Day in the year (0-365, 1 Jan = 0) */

int tm_sec; /* Seconds (0-60) */ int tm_min; /* Minutes (0-59) */ int tm_hour; /* Hours (0-23) */ int tm_mday; /* Day of the month (1-31) */ int tm_mon; /* Month (0-11) */ int tm_year; /* Year - 1900 */ 可以为0,tm_sec/tm_min/tm_hourtm_mday是您必须获得的输入(仅将tm_month减1)

唯一缺少的部分是当年,但设置起来很容易,使用tm_month返回当前时间,然后使用time_t time(time_t *tloc);将其转换为struct tm,然后设置如上所述的其他字段,然后调用struct tm *localtime(const time_t *timep);

现在您可以编写程序了