计算某年某月某日是该年中的第几天
本题要求编写程序,输入一个日期,计算该日期是该年中的第几天。输入格式:
在一行中按照格式“yyyy-mm-dd”输入日期,题目保证输入的日期是合法正确的。闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。
输出格式:
按格式要求输出日期是该年中的第几天。
输入样例:
2000-3-2
请问怎么过滤掉输入中的‘-’?{:10_329:} 用c语言 在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:11 编辑
sscanf(str, "%d-%d-%d", &year,&month,&day);
用sscanf 函数 面向gpt编程,ok ?
ok!
页:
[1]