C++:定义一个结构体变量(包括年、月、日),编写程序,要求输入年月日,程序能计算出该日在本年中第几天。注意闰年的问题。

输出样例如图所示:
C++:定义一个结构体变量(包括年、月、日),编写程序,要求输入年月日,程序能计算出该日在本年中第几天。注意闰年的问题。_第1张图片

代码如下:

#include
using namespace std;

struct date
{
    int year, month, day;
};

int main()
{
    int year, month, day;
    int sum = 0;
    cout << "请分别输入年月日:";
    cin >> year >> month >> day;
    cout << endl;
    struct date d;
    d.year = year;
    d.month = month;
    d.day = day;
    if (d.month == 1)
        cout << d.day;
    else
    {
        for (int i = 1; i < d.month; i++)
        {
            switch (i)
            {
            case 1:case 3:case 5:case 7:case 8:case 10:case 12:
                sum += 31;
                break;

            case 4:case 6:case 9:case 11:
                sum += 30;
                break;

            case 2:sum += 28;
            }
        }
        sum += d.day;
        if ((d.year % 4 == 0 && d.year % 100 != 0) || (d.year % 400 == 0))
        {
            if (d.month > 2) {
                sum += 1;
            }
        }
        cout << "这一天是本年的第  " << sum << "  天" << endl;
    }
    return 0;
}

 解释如下:

  • 定义了一个名为date的结构体,其中包含三个整型成员变量year(年)、month(月)和day(日),用于存储日期信息。
  • 在主函数中定义了三个整型变量yearmonthday,用于接收用户输入的年、月、日信息。整型变量sum并初始化为 0,用于累加该日期是该年的第几天。
  • 如果输入的月份是 1 月,直接输出该月的天数(即d.day)。
  • 若输入的月份不是 1 月,使用for循环遍历从 1 到d.month - 1的所有月份。
  • switch语句中,根据不同的月份,将对应月份的天数累加到sum中:

                1、3、5、7、8、10、12 月有 31 天。

                4、6、9、11 月有 30 天。

                2 月默认按 28 天计算。

其中对于闰年:

        判断输入的年份是否为闰年,闰年的判断条件是:能被 4 整除但不能被 100 整除,或者能被         400 整除。

        若为闰年且输入的月份大于 2 月,说明 2 月有 29 天,将sum加 1。

  • 循环结束后,将输入的日期d.day累加到sum中。

觉得有帮助就给博主点个关注叭~~

有问题的可以私信或者在评论区一起交流

友友们一起加油叭QAQ

你可能感兴趣的:(c++,算法,开发语言)