题目 1049: [编程入门]结构体之时间设计

定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。

输入格式

年月日

输出格式

当年第几天

样例输入

复制代码
2000 12 31

样例输出

复制代码
366

定义时间的结构体,详情见下一篇文章关于结构体的写法;

判断是否为闰年有一个布尔值,用于变量temp是29(闰年)还是28(不是闰年),之后累加计算是多少天

cpp 复制代码
#include <iostream>

// 计算输入日期是一年中的第几天
int CalcuCount(int year, int month, int day) {
    int Count = 0;
    // 判断闰年
    bool isleap;
    if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
        // 如果是闰年,则有366天
        isleap = true;
    } else {
        // 如果不是闰年,则有365天
        isleap = false;
    }

    if (month == 2) {
        // 对于2月份,加上当前的天数即可
        Count = 31 + day;
    } else {
        // 如果是其他月份
        int temp = 0;
        if (isleap){
            // 如果是闰年,则2月有29天
            temp = 29;
        } else { 
            // 如果不是闰年,则2月有28天
            temp = 28;
        }
        
        // 利用temp来计算累积天数
        switch (month) {
            // 对于1、3、5、7、8、10、12月,则累积天数为当前月的天数加上之前的月份天数
            case 1: Count = day; break;
            case 3: Count = 31 + temp + day; break;
            case 4: Count = 62 + temp + day; break;
            case 5: Count = 92 + temp + day; break;
            case 6: Count = 123 + temp + day; break;
            case 7: Count = 153 + temp + day; break;
            case 8: Count = 184 + temp + day; break;
            case 9: Count = 215 + temp + day; break;
            case 10: Count = 245 + temp + day; break;
            case 11: Count = 276 + temp + day; break;
            case 12: Count = 306 + temp + day; break;
        }
    }
    return Count;
}

struct Date {
    int year;
    int month;
    int day;
};

int main() {
    struct Date date;
    std::cin >> date.year >> date.month >> date.day;
    std::cout << CalcuCount(date.year, date.month, date.day) << std::endl;
    return 0;
}
相关推荐
hetao17338372 小时前
2026-04-09~12 hetao1733837 的刷题记录
c++·算法
6Hzlia2 小时前
【Hot 100 刷题计划】 LeetCode 136. 只出现一次的数字 | C++ 哈希表&异或基础解法
c++·算法·leetcode
小碗羊肉2 小时前
【从零开始学Java | 第三十一篇下】Stream流
java·开发语言
MWWZ3 小时前
最近的一些软件更新
opencv·算法·计算机视觉
CoovallyAIHub3 小时前
视频理解新范式:Agent不再被动看视频,LensWalk让它自己决定看哪里
算法·架构·github
汉克老师3 小时前
GESP2024年6月认证C++三级( 第二部分判断题(1-10))
c++·数组·位运算·补码·gesp三级·gesp3级
CoovallyAIHub3 小时前
斯坦福丨AirVLA:将地面机械臂模型迁移至无人机实现空中抓取,成功率从23%提升至50%
算法·架构·github
aq55356003 小时前
Laravel10.x重磅升级,新特性一览
android·java·开发语言
报错小能手3 小时前
ios开发方向——swift错误处理:do/try/catch、Result、throws
开发语言·学习·ios·swift
无限进步_4 小时前
【C++】只出现一次的数字 II:位运算的三种解法深度解析
数据结构·c++·ide·windows·git·算法·leetcode