holyya.com
2025-09-04 12:44:26 Thursday
登录
文章检索 我的文章 写文章
使用C++的枚举法求星期几的公式
2023-06-27 21:13:45 深夜i     --     --
C++ 枚举法 星期几 公式

枚举法是一种常用的解题方法,可以用来枚举所有可能的解决方案,找到符合要求的最优解。在计算机编程中,枚举法也是一种常见的算法。

本文将介绍使用C++的枚举法求解星期几的公式。

在计算星期几的公式中,我们需要知道一个日期是星期几。以下是计算星期几的公式:

W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1) mod 7

其中,W为星期数,d为当前日期,m为当前月份,y为当前年份。

为了方便计算,在进行枚举法求解过程中,通常采取统一日期格式,例如1970年1月1日为星期四,即W=4。换句话说,我们可以获取1970年1月1日至当前日期的天数差,然后将其转换为星期数。

以下是具体实现:


#include <iostream>

using namespace std;

enum Week

  Monday;

int main() {

  int day, month, year;

  cout << "Enter date (dd mm yyyy): ";

  cin >> day >> month >> year;

  int daysElapsed = day - 1;

  for (int i = 0; i < month - 1; i++) {

    switch (i) {

      case 0:

      case 2:

      case 4:

      case 6:

      case 7:

      case 9:

      case 11:

        daysElapsed += 31;

        break;

      case 3:

      case 5:

      case 8:

      case 10:

        daysElapsed += 30;

        break;

      case 1:

        if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {

          daysElapsed += 29;

        } else {

          daysElapsed += 28;

        }

        break;

    }

  }

  int yearsElapsed = year - 1970;

  int leapYears = ((yearsElapsed - 1) / 4) - ((yearsElapsed - 1) / 100) + ((yearsElapsed - 1) / 400);

  int daysSince1970 = yearsElapsed * 365 + leapYears + daysElapsed;

  Week week = static_cast<Week>((daysSince1970 + 4) % 7);

  switch (week)

    case Sunday:

      cout << "Sunday";

      break;

    case Monday:

      cout << "Monday";

      break;

    case Tuesday:

      cout << "Tuesday";

      break;

    case Wednesday:

      cout << "Wednesday";

      break;

    case Thursday:

      cout << "Thursday";

      break;

    case Friday:

      cout << "Friday";

      break;

    case Saturday:

      cout << "Saturday";

      break;

  

  return 0;

}

上述代码中使用了一个枚举类型Week,其中包含了星期的七个值,即Sunday、Monday、Tuesday、Wednesday、Thursday、Friday和Saturday。在代码中,根据用户输入的日期计算了从1970年1月1日至当前日期的天数差,然后将其转换为星期数。最后,使用switch语句将星期数封装到Week类型中,并打印出对应的星期。

总之,枚举法是一种简单而实用的工具,在计算机编程中也是不可或缺的一种方法。它可以解决许多问题,包括计算星期几的公式。在学习和使用枚举法时,需要注意枚举对象的数量不要过多,以免程序各种开销增大。

  
  

评论区

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