由用户按要求键入日期格式数据,如果不正确,则重复提示,并且要求重新输入,直至正确为止。本程序将通过对年份的限制、月份的限制,以及每个月天数的检测来校验录入日期是否正确。
#include <stdio.h>
#include <stdlib.h>
struct Date
{
int year,month,day;
};
bool check_valid(Date date)
{
//闰年先不考虑
int month[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if(date.year<1900 || date.year>5000 )
return false;
if(date.month<=0 || date.month>12)
return false;
if(date.day>month[date.month-1] || date.day<=0 )
return false;
return true;
}
int main()
{
Date date;
printf("请输入日期(eg,1949-10-01):\n");
while(true)
{
scanf("%d-%d-%d",&date.year,&date.month,&date.day);
if(check_valid(date))
{
printf("输入正确!");
break;
}
else
{
printf("您输入的格式有误!请重新输入:\n");
continue;
}
}
system("pause");
return 0;
}