用c++写一个能够输入年月日的代码,先判断是否为闰年闰月,并且年大于等于1949年小于等于2049年,月大于0月小于等于12月,日大于0小于等于31,闰月大于0小于等于28,平月大于0小于等于29,并且随意输入两个日期并计算两个年份相差的天数
时间: 2023-03-29 15:00:46 浏览: 309
以下是用 C 语言编写的代码,可以输入年月日并判断是否为闰年闰月,同时限制年份在 1949 年至 2049 年之间,月份在 1 至 12 之间,日期在 1 至 31 之间。此外,还可以计算两个日期之间相差的天数。
```c
#include <stdio.h>
// 判断是否为闰年
int is_leap_year(int year) {
return (year % 4 == && year % 100 != ) || (year % 400 == );
}
// 获取某个月份的天数
int get_days_of_month(int year, int month) {
int days = 31;
if (month == 2) {
days = is_leap_year(year) ? 29 : 28;
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
days = 30;
}
return days;
}
// 判断日期是否合法
int is_valid_date(int year, int month, int day) {
if (year < 1949 || year > 2049) {
return ;
}
if (month < 1 || month > 12) {
return ;
}
int days = get_days_of_month(year, month);
if (day < 1 || day > days) {
return ;
}
return 1;
}
// 计算两个日期之间相差的天数
int get_days_between_dates(int year1, int month1, int day1, int year2, int month2, int day2) {
int days = ;
while (year1 < year2 || (year1 == year2 && month1 < month2) || (year1 == year2 && month1 == month2 && day1 < day2)) {
days++;
day1++;
if (day1 > get_days_of_month(year1, month1)) {
day1 = 1;
month1++;
if (month1 > 12) {
month1 = 1;
year1++;
}
}
}
return days;
}
int main() {
int year1, month1, day1, year2, month2, day2;
printf("请输入第一个日期(格式为yyyy-mm-dd): ");
scanf("%d-%d-%d", &year1, &month1, &day1);
if (!is_valid_date(year1, month1, day1)) {
printf("日期不合法\n");
return ;
}
printf("请输入第二个日期(格式为yyyy-mm-dd): ");
scanf("%d-%d-%d", &year2, &month2, &day2);
if (!is_valid_date(year2, month2, day2)) {
printf("日期不合法\n");
return ;
}
int days = get_days_between_dates(year1, month1, day1, year2, month2, day2);
printf("两个日期相差 %d 天\n", days);
return ;
}
```
阅读全文