鱼C论坛

 找回密码
 立即注册
查看: 1597|回复: 4

[已解决]计算某年某月某日是该年中的第几天

[复制链接]
发表于 2023-3-23 19:54:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

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

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

输入样例:
2000-3-2

请问怎么过滤掉输入中的‘-’?
最佳答案
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[11]; // 格式为"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[2] = 29;
    }

    for (int i = 1; i < month; ++i) {
        day_of_year += days_in_month[i];
    }
    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 天
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-3-23 19:55:23 | 显示全部楼层
用c语言
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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[11]; // 格式为"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[2] = 29;
    }

    for (int i = 1; i < month; ++i) {
        day_of_year += days_in_month[i];
    }
    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 天
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-23 20:09:29 | 显示全部楼层
本帖最后由 jihw1990 于 2023-3-23 20:11 编辑

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

用sscanf 函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-23 20:16:48 | 显示全部楼层
面向gpt编程,ok ?
ok!

Peek 2023-03-23 20-13.gif
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-7 17:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表