Skip to content

14155: 【原4155】计算日期

题目

题目描述

author: 程序设计思想与方法助教组Duke 原OJ链接:https://acm.sjtu.edu.cn/OnlineJudge-old/problem/4155

问题描述

  • 编写一个程序,输入一个公元纪年日期,计算这个日期是这一年的第几天,并输出。

输入输出描述

输入

  • 输入代表公元纪年日期年、月、日的3个整数(在问题描述中记作y、m、d,程序中请自定变量名),y、m、d依次用空格分隔。

输出

  • 输出一个整数,表示日期是这一年的第几天。
  • 如果输入错误,输出提示信息error

数据范围说明

  • 本题中,年份限定范围是公元0年到公元9999年,其他年份均输出error

程序运行示例

示例1

Sample Input 1

2000 12 31

Sample Output 1

366

示例2

Sample Input 2

9999 3 29

Sample Output 2

88

示例3

Sample Input 3

2018 13 12

Sample Output 3

error

注意

  • 不要显示多余的提示信息,避免输出判定错误
  • 注意判断输入信息是否符合要求。

ligongzzz's solution

#include "iostream"
using namespace std;

int main() {
    int y = 0, m = 0, d = 0;
    cin >> y >> m >> d;

    int days[] = { 0,31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

    //判断闰年
    if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) {
        days[2] += 1;
    }

    //排除错误
    if (y < 0 || y>9999 || m <= 0 || m > 12 || d <= 0 || d > days[m]) {
        cout << "error";
    }
    else {
        //计算前月天数
        int result = 0;
        for (int i = 1; i < m; i++) {
            result += days[i];
        }
        result += d;
        cout << result;
    }

    return 0;
}