[C语言][PTA][2019Fall] 7-19 计算天数 (15 point(s))

By | October 20, 2019

声明

这是 拼题A(PTA)《中M2019秋C入门和进阶练习集》的习题。原题在 https://pintia.cn/problem-sets/1163286449659043840/problems/1174288506294865967 (侵删)
本人的答案仅供交流学习,请勿用于当作答案来提交!

题目描述

7-19 计算天数 (15 point(s))
本题要求编写程序计算某年某月某日是该年中的第几天。

输入格式:
输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。

输出格式:
在一行输出日期是该年中的第几天。

输入样例1:
2009/03/02
输出样例1:
61
输入样例2:
2000/03/02
输出样例2:
62
鸣谢湖北汽车工业学院袁科老师补充数据

我的答案

/*================================================================
*   Copyright (C) 2019 Navin Xu. All rights reserved.
*   
*   Filename    :7-19-计算天数.c
*   Author      :Navin Xu
*   E-Mail      :admin@navinxu.com
*   Create Date :2019年10月20日
*   Description :
================================================================*/
#include <stdio.h>

int main() {

    int year, month, day;
    scanf("%d/%d/%d", &year, &month, &day);
    // printf("%d %d %d", year, month, day);
    // return 0;

    if (month >= 1 && month <= 12 && day >= 1 && day <= 31) {
        int leap;
        if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
            leap = 29;
        } else
            leap = 28;

        int month_days[] = {31, leap, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        int days_count = 0;

        -- month;
        while (month > 0) {
            days_count += month_days[(month --) - 1];
        }

        days_count += day;

        printf("%d", days_count);

    }

    return 0;
}

鉴于本人的相关知识储备以及能力有限,本博客的观点和描述如有错漏或是有考虑不周到的地方还请多多包涵,也欢迎指正,一起学习,共同进步。如果本文对您有帮助,而且让您觉得值得为内容付费,那么就请赞助(打赏)一下本人,这不强制。打赏支持微信支付,方法是使劲地戳一下下方的“打赏”按钮,然后得到微信收款的二维码,再用微信支付扫一下,就像买菜那样。祝好!