7-5 2908 算日期
分数 100
今天是2024年5月18日,给定今年的某一个日期,输出该日期与今天相隔多少天?
输入格式:
输入有多组,每组为一个日期,格式是mm/dd,如10/01。
输出格式:
每行一个数,表示5月18日与这一天相隔的天数。
输入样例:
10/01
06/01
输出样例:
136
14
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
回答不易,求求您点赞关注哦
这是一个 C 语言的解决方案,它将格式为“mm/dd”的日期作为输入,并输出该日期与 2024 年 5 月 18 日之间的天数:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// Returns the number of days in a month
int days_in_month(int month) {
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {
return 31;
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
return 30;
} else if (month == 2) {
return 28;
} else {
printf("Invalid month\n");
exit(1);
}
}
int main(void) {
char date[5]; // input date in the format "mm/dd"
int month, day;
while (scanf("%s", date) == 1) {
// Extract month and day from the input string
month = atoi(strtok(date, "/"));
day = atoi(strtok(NULL, "/"));
// Check if the input date is valid
if (month < 1 || month > 12 || day < 1 || day > days_in_month(month)) {
printf("Invalid date\n");
continue;
}
// Calculate the number of days between the input date and May 18, 2024
int days = 0;
for (int i = 5; i < month; i++) {
days += days_in_month(i);
}
days += day - 18;
printf("%d\n", days);
}
return 0;
}
您可以使用 C 编译器(例如 GCC)编译和运行该程序。例如:
gcc -o days days.c
./days
然后,您可以输入要检查的日期,每行一个,程序将输出每个日期与 2024 年 5 月 18 日之间的天数。
例如:
$ ./days
10/01
06/01
136
14
代码实现如下,望采纳
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define GetMonthDays(year, month) ((month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12)? 31:((month==2)? ((((year)%4==0) && ((year)%100!=0)) || ((year)%400==0))? 29:28:30))
struct Date {
int year;
int month;
int day;
}
;
void InputDate(struct Date* date) {
char str[12];
scanf("%s", str);
date->month = atoi(str);
date->day = atoi(str+3);
}
int CalcPassedDays(struct Date* date) {
int i;
int days = 0;
for (i=2024; i>date->year; i--) {
days += (i%4==0 && i%100!=0 || i%400==0)? 366:365;
}
for (i=5; i>date->month; i--) {
days -= GetMonthDays(date->year, i);
}
days -= date->day;
return days;
}
int main(void) {
struct Date date;
date.year = 2024;
while(1) {
InputDate(&date);
printf("%d\n", CalcPassedDays(&date));
}
return 0;
}
仅供参考!希望对你有帮助
#include <stdio.h>
#define N 5
int main(void)
{
int mons[13] = {
0, 31, 60, 91, 121,
152, 182, 213, 244,
274, 305, 335, 31};
struct
{
int m;
int d;
int days;
} day[N];
day[0].m = 5;
day[0].d = 18;
day[0].days = 139;
int i = 1;
while (i < N && (scanf("%d/%d", &day[i].m, &day[i].d) == 2 ))
{
day[i].days = mons[day[i].m - 1] + day[i].d - 139;
i++;
}
puts("");
for (int j = 1; j < i; j++)
printf("%d\n", day[j].days);
return 0;
}