|
发表于 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)时,它会输出:
|
|