21xrx.com
2024-12-22 23:58:16 Sunday
登录
文章检索 我的文章 写文章
C++万年历程序:输入日期,输出星期几
2023-07-04 11:55:25 深夜i     --     --
C++ 万年历程序 日期输入 星期输出 编程实现

C++是一种高级编程语言,可以用来编写各种应用程序,例如万年历程序。这种程序可以输入一个日期,然后输出这一天是星期几。下面我们来看一下如何用C++实现一个万年历程序。

首先,我们需要定义一个日期类。这个类应该包含年、月、日这三个成员变量,并且还要有一些方法来获取或设置日期,以及计算日期之间的差距。这个类大致如下:


class Date {

public:

  int year, month, day;

  Date(int year, int month, int day);

  Date& operator++();  // 前缀++

  Date& operator--();  // 前缀--

  int operator-(const Date& other) const;

  friend std::ostream& operator<<(std::ostream& out, const Date& date);

};

在这个类中,我们重载了前缀++和前缀--运算符,这样我们就可以方便地增加或减少日期了。同时,我们还重载了-运算符,这样我们就可以计算两个日期之间的天数差了。最后,我们还定义了一个重载<<运算符,这个方法可以让我们方便地输出日期。

接下来,我们需要实现一个函数来计算某个日期是星期几。这里我们可以采用基姆拉尔森计算公式(Zeller’s congruence)。这个公式可以根据年月日计算出一个数值,然后根据这个数值来确定星期几。这个函数大致如下:


int getWeekday(const Date& date) {

  int y = date.year, m = date.month, d = date.day;

  if (m < 3) {

    m += 12;

    y--;

  }

  int c = y / 100;

  y %= 100;

  int w = (c / 4) - (2 * c) + ((y + y/4) + ((13 * (m+1)) / 5) + d - 1);

  return (w % 7 + 7) % 7;

}

这个函数将输入的日期转换成数值,然后根据这个数值来计算星期几。其中,变量c表示世纪数,y表示年份的后两位数,m表示月份(3表示3月,4表示4月,依此类推),d表示天数。最后,我们需要将计算出来的数值模上7,并根据余数来确定星期几。

最后,我们只需要编写一个简单的main函数,就可以把上面的代码整合起来了。这个函数大致如下:


int main() {

  int year, month, day;

  std::cout << "请输入年月日(格式:yyyy mm dd):";

  std::cin >> year >> month >> day;

  Date date(year, month, day);

  std::cout << date << "是星期" << getWeekday(date) << std::endl;;

  return 0;

}

这个函数首先提示用户输入日期,然后根据输入的值创建一个Date对象。最后,它输出这个日期是星期几。

综上所述,我们可以用C++编写一个简单的万年历程序,只需要定义一个日期类,实现一个计算星期几的函数,以及一个包含main函数的程序框架。这个程序可以方便地帮助用户查询任意日期的星期几。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复