星际的远客 发表于 2023-3-23 19:54:52

计算某年某月某日是该年中的第几天

本题要求编写程序,输入一个日期,计算该日期是该年中的第几天。

输入格式:
在一行中按照格式“yyyy-mm-dd”输入日期,题目保证输入的日期是合法正确的。闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。

输出格式:
按格式要求输出日期是该年中的第几天。

输入样例:
2000-3-2

请问怎么过滤掉输入中的‘-’?{:10_329:}

星际的远客 发表于 2023-3-23 19:55:23

用c语言

isdkz 发表于 2023-3-23 20:08:30

在C语言中,可以使用sscanf()函数来从输入的字符串中读取并分解年、月和日的值。这是一个例子,展示如何将输入的日期字符串中的'-'过滤掉并计算日期是该年中的第几天:

#include <stdio.h>
#include <stdbool.h>

bool is_leap_year(int year) {
    return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}

int main() {
    char input; // 格式为"yyyy-mm-dd",加上末尾的'\0'
    int year, month, day;
    int days_in_month[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    int day_of_year = 0;

    printf("请输入日期(格式:yyyy-mm-dd):");
    fgets(input, sizeof(input), stdin);
    sscanf(input, "%d-%d-%d", &year, &month, &day);

    if (is_leap_year(year)) {
      days_in_month = 29;
    }

    for (int i = 1; i < month; ++i) {
      day_of_year += days_in_month;
    }
    day_of_year += day;

    printf("%d-%d-%d 是该年中的第 %d 天\n", year, month, day, day_of_year);

    return 0;
}
当你运行这个程序并输入示例日期(2000-3-2)时,它会输出:

2000-3-2 是该年中的第 62 天

jihw1990 发表于 2023-3-23 20:09:29

本帖最后由 jihw1990 于 2023-3-23 20:11 编辑

sscanf(str, "%d-%d-%d", &year,&month,&day);

用sscanf 函数

人造人 发表于 2023-3-23 20:16:48

面向gpt编程,ok ?
ok!

页: [1]
查看完整版本: 计算某年某月某日是该年中的第几天