(2) 提示用户输入两个日期,然后显示哪一个日期更早。(最好可以加上刚才判断日期合法性的程序,分别先判断日期1是否合法,日期2是否合法,如果都合法再比较日期。不使用sting函数
时间: 2024-10-23 16:16:06 浏览: 32
要在不使用`string`函数的情况下,你可以使用`scanf`函数读取用户输入的日期,并使用结构体和自定义函数来验证日期的有效性和进行比较。这里是一个简单的示例,假设我们只考虑年月日形式的日期:
```c
#include <stdio.h>
#include <stdbool.h>
// 定义日期结构
typedef struct {
int year;
int month;
int day;
} Date;
// 判断日期合法性
bool is_valid_date(Date date) {
return (date.year >= 1900 && date.year <= 9999 &&
date.month >= 1 && date.month <= 12 &&
date.day >= 1 && date.day <= 31);
}
// 比较日期
Date earlier_date(Date date1, Date date2) {
if (date1.year < date2.year ||
(date1.year == date2.year && date1.month < date2.month) ||
(date1.year == date2.year && date1.month == date2.month && date1.day < date2.day)) {
return date1;
} else {
return date2;
}
}
int main() {
Date date1, date2;
// 输入并检查日期1的合法性
printf("Enter the first date (YYYY-MM-DD): ");
scanf("%d-%d-%d", &date1.year, &date1.month, &date1.day);
if (!is_valid_date(date1)) {
printf("Invalid date 1.\n");
return 1;
}
// 输入并检查日期2的合法性
printf("Enter the second date (YYYY-MM-DD): ");
scanf("%d-%d-%d", &date2.year, &date2.month, &date2.day);
if (!is_valid_date(date2)) {
printf("Invalid date 2.\n");
return 1;
}
// 比较日期并输出结果
Date result = earlier_date(date1, date2);
printf("%s is earlier than %s.\n", result.year == date1.year ? "" : "The",
result.year == date2.year ? "" : "The");
return 0;
}
```
在这个例子中,我们首先读取用户输入的日期,然后通过`is_valid_date`函数检查输入是否有效。如果输入无效,会提示用户输入错误。如果两个日期都是有效的,我们就通过`earlier_date`函数确定哪一个是更早的。
阅读全文