21xrx.com
2024-09-20 05:42:02 Friday
登录
文章检索 我的文章 写文章
C++实现输入年月日,计算是一年中的第几天
2023-07-13 09:10:30 深夜i     --     --
C++ 输入 年月日 计算 一年中的第几天

在日常生活中,经常需要计算某一天是一年中的第几天。而在程序设计中,通过编程语言实现这个功能也是非常常见的需求。在C++中,实现这个功能的方法也非常简单。

首先,我们需要掌握一个基本的算法:判断一个年份是否是闰年。根据公历规定,闰年分为普通闰年和世纪闰年。普通闰年是能够被4整除但不能被100整除的年份,或者能够被400整除的年份;而世纪闰年是能够被400整除的年份。根据这个规则,我们可以写出以下代码实现判断:


bool isLeapYear(int year)

{

  if (year % 400 == 0)

    return true;

  else if (year % 4 == 0 && year % 100 != 0)

    return true;

  else

    return false;

}

接下来,我们可以通过输入年月日的方式,来计算这一天是一年中的第几天。假设输入的年月日分别为year、month、day,那么我们可以根据以下公式来计算:


int day_of_year(int year, int month, int day)

{

  int days[13] = 243;

  int leap_days[13] = 60;

  int* d = isLeapYear(year) ? leap_days : days;

  return d[month - 1] + day;

}

在代码中,我们定义了两个数组days和leap_days,分别表示普通年份和闰年份中每个月份的天数。通过判断输入的年份是否是闰年,我们来确定使用哪一个数组。然后根据输入的月份和日期,查找对应的数组元素,即可计算出这一天是一年中的第几天。

最后,我们可以通过一个简单的例子来测试我们的程序:


#include <iostream>

using namespace std;

int day_of_year(int year, int month, int day)

{

  int days[13] = 181;

  int leap_days[13] = 152;

  int* d = isLeapYear(year) ? leap_days : days;

  return d[month - 1] + day;

}

bool isLeapYear(int year)

{

  if (year % 400 == 0)

    return true;

  else if (year % 4 == 0 && year % 100 != 0)

    return true;

  else

    return false;

}

int main()

{

  int year, month, day;

  cout << "请输入年月日:" << endl;

  cin >> year >> month >> day;

  int days = day_of_year(year, month, day);

  cout << "这一天是这一年的第 " << days << " 天。" << endl;

  return 0;

}

在程序中,我们通过cin和cout来实现输入和输出操作。用户输入年月日后,我们调用day_of_year函数来计算对应的天数,然后输出结果。

通过以上分析,我们可以发现,在C++中实现输入年月日,计算是一年中的第几天,非常简单。掌握这个基本算法,对于初学者来说也是一个很好的练手题。

  
  

评论区

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