Topic 1049: [프로그래밍 입문] 구조의 시간 설계

구조 변수(연도, 월, 일 포함)를 정의합니다. 올해의 날짜를 계산하고 윤년 문제에 주의하세요.

입력 형식

년 월 일

출력 형식

올해의 무슨 날

샘플 입력

2000년 12월 31일

샘플 출력

366

시간을 정의하는 구조 자세한 내용은 구조 작성 방법에 대한 다음 문서를 참조하세요.

윤년 여부를 판별하는 불리언(Boolean) 값이 있는데, 이는 변수 온도가 29(윤년)인지 28(윤년 아님)인지 판별하는 데 사용되며, 이후 누적 계산에는 몇 일이 걸리는지 계산됩니다. .

#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;
}

추천

출처blog.csdn.net/qq_63999224/article/details/132798776