判断日期合法性

 
#include   <iostream.h> 
#include   <stdio.h> 


int   Days[12]={31,   28,   31,   30,   31,   30,   31,   31,   30,   31,   30,   31}; 

bool   CheckDate(int   iYear,   int   iMonth,   int   iDay); 

int   main(void)   
{   
int   iYear,   iMonth,   iDay; 

cout < < "Year: "; 
cin> > iYear; 
cout < < "Month: "; 
cin> > iMonth; 
cout < < "Day: "; 
cin> > iDay; 


cout < <CheckDate(iYear,   iMonth,   iDay); 
cout < <endl; 

return   0; 
} 


bool   CheckDate(int   iYear,   int   iMonth,   int   iDay) 
{ 
if(iMonth <1   ||   iMonth> 12)   return   false; 

bool   b_IsLeapYear=false; 
if(iYear%4==0)   
{ 
b_IsLeapYear=true; 

if(!(iYear%100==0   &&   iYear%400==0))   b_IsLeapYear=false; 
} 

if(b_IsLeapYear)   Days[1]=29; 
else   Days[1]=28; 

if(iDay <0   ||   iDay> Days[iMonth-1])   return   false; 

return   true; 
} 

要在不使用`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`函数确定哪一个是更早的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值