当前位置:首页 » 编程语言 » 判断日期的有效性c语言
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

判断日期的有效性c语言

发布时间: 2022-05-12 14:10:41

c语言中,如何验证输入日期的正确性!~

  1. 主要验证三个信息:

    a.验证月数是否在1~12,m>0&&m<=12

    b.验证日数是否超过当月,d>0&&d<=month[m-1]

    c.对平闰年的判断,if((y%4==0&&y%100!=0)||y%400==0)month[1]=29

  2. 例程:

    #include<stdio.h>
    staticintis_valid_date(inty,intm,intd)
    {
    intmonth[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    if((y%4==0&&y%100!=0)||y%400==0)
    month[1]=29;
    returnm>0&&m<=12&&d>0&&d<=month[m-1];
    }
    intmain(void)
    {
    inty,m,d;
    scanf("%4d-%2d-%2d",&y,&m,&d);
    if(is_valid_date(y,m,d))
    printf("validdate ");
    else
    printf("invaliddate ");
    return0;
    }

㈡ C语言:判断输入的一个日期的正确性

用SWITH对月份进行选择 然后每个月份下都用IF做个判断 然后输出 最后再对2单独进行判断 判断闰年的算法是year%400==0||(year%4==0&&year%100!=0)

㈢ C语言验证日期格式是否正确

#include<stdio.h>
typedefstruct{inty,m,d;}Date;
intmon[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
intcheckDate(Datedate)
{mon[2]=28+(date.y%4==0&&date.y%100||date.y%400==0);
returndate.y>0&&date.m>0&&date.d>0&&date.m<13&&date.d<=mon[date.m];
}
intmain()
{Datedate;
scanf("%d%*c%d%*c%d",&date.y,&date.m,&date.d);
printf("%s",(checkDate(date)?"OK":"Error"));
return0;
}

㈣ c语言中 求解如何判断输入的年月日是否合法

似乎没有现成的函数可以用。
年月好检查,在范围内就成;日初查也是查范围,范围没问题再细查。
细查一般这样,你用年月和当月的1日生成一个日期,加上你输入的(日-1)(要消除定位在1号的差),然后取这个日期变量的日,如果和输入日相等就没问题,不等就是输入日期不合法。

㈤ c语言中怎样判断输入的日期是否合法要求用结构体并且能判断例如2000-3-21中的每一部分是否合法(包括-)

struct Date
{
int year;
int month;
int day;
char ch;
};

void main()
{
Date date;
printf("please input date\n");
scanf("%d%c%d%c%d",&date.year,&date.ch,&date.month, &date.ch,&date.day);
if(ch != '-' || month > 12 || month < 1 ||day < 0 || day > n) n的值根据年月判断
{
printf("error\n");
}

再给你一个判断闰年的程序,自己试着组合下
#include<stdio.h>

void main()
{
int year;
printf("please input year :\n");
scanf("%d",&year);
if(year % 400 == 0 || year % 4 == 0 && year % 100 != 0)
{
printf("yes!\n");
}
else
printf("no!");
}

㈥ 用c语言编程,接收年月日,判别是否为合法日期。

#include "stdio.h"
int main()
{
int year,month,day;
int sign=0,dayvalid;
printf("请输入年月日:\n");
scanf("%d,%d,%d",&year,&month,&day);
if ((year%4==0&&year%100!=0)||year%400==0)
{
sign =1;
}
if (month>=1&&month<=12)
{
switch (month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
dayvalid = 31;
break;
case 4:
case 6:
case 9:
case 11:
dayvalid = 30;
break;
case 2:
if (sign ==1)
dayvalid = 29;
else
dayvalid = 28;
break;
default:
break;
}
if (!(day >0&&day <=dayvalid))
{
printf("日期格式错误\n");
return 2;
}
}
else
{
printf("月份格式错误:\n");
return 1;
}

printf("日期格式正确\n");
return 0;
}

㈦ c语言判断日期合法性

手边没有IDE,查错有点费事,写了一个

#include<stdio.h>
voidyes();
voidno();
intmain(void)
{
intyear,month,day;
printf("PleaseInputDataLike1992-04-03: ");
scanf("%d-%d-%d",&year,&month,&day);
if(year<0||year>3000||day>31||day<0||month>12||month<0)
{
printf("PleaseInputRightNumber! ");
return-1;
}
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
{
if(day>0&&day<=31)
{
yes();
}
else
{
no();
}
}
elseif(month==2)
{
if((year%4==0&&year%100!=0)||year%400==0&&year%100==0)
{
yes();
}
else
{
no();
}
}
else
{
if(day>0&&day<31)
{
yes();
}
else
{
no();
}
}
return0;
}
voidyes()
{
printf("YES ");
}
voidno()
{
printf("NO ");
}

㈧ c语言:从键盘上输入一个日期,判断输入的日期是否正确

  1. 定义一个12元素的int型数组存放1月份至12月份每个月的天数;

  2. 根据输入的年份判断是否为闰年,对上述数组中2月份的天数进行调整;

  3. 判断年份大于0、月份大于0小于13、日期大于0小于等于月份对应的天数为正确输入,否则为错误输入。

代码如下:

#include"stdio.h"
intmain(intargc,char*argv[]){
inty,m,d,md[12]={31,28,31,30,31,30,31,31,30,31,30,31};//md是每月天数数组
printf("Pleaseentertheyear,month,day(separatedby'')... ");
scanf("%d%d%d",&y,&m,&d);
md[1]=y%4==0&&y%100||y%400==0?29:28;//闰年调整
if(y>0&&m>0&&m<13&&d>0&&d<=md[m-1])//判断输入是否正确
printf("Yourinputiscorrect! ");//正确输出
else
printf("Error... ");//错误输出
return0;
}

运行样例如下:


㈨ 用c语言对用户输入的日期型数据进行有效性验证,yyyy~m~d代表年月日保证

#include<stdio.h>
intmain(intargc,char*argv[]){
inty,m,d,c[12]={31,28,31,30,31,30,31,31,30,31,30,31};
printf("Inputy,m&d... ");
while(1){
scanf("%d%d%d",&y,&m,&d);
c[1]=28+(y%4==0&&y%100||y%400==0);
if(m>0&&m<13&&d>0&&d<=c[m-1])
break;
printf("Inputerror,redo:");
}
printf("Yourinputis%d-%d-%d ",y,m,d);
return0;
}

㈩ c语言 输入一个时间(年、月、日、时、分、秒),判断时间是否合法,输出下一秒的时间

#include<stdio.h>

int year = 0;

int month = 0;

int day = 0;

int hour = 0;

int minute = 0;

int second = 0;


int main()

{

void inputDate(); /*输入年-月-日 时:分:秒*/

void nextSceond(); /*计算下一秒的时间*/

int leapYear(int year); /*判断是否为闰年*/

int dayMonth(int month); /*返回每个月份对应的天数*/

inputDate();

leapYear(year);

dayMonth(month);

nextSceond();

system("PAUSE");

return 0;

}


/*函数inputDate()输入年-月-日 时:分:秒*/

void inputDate()

{

int loop;

for(loop = 0; loop < 3; loop++)

{

printf("请输入年-月-日 时:分:秒:");

scanf("%d-%d-%d %d:%d:%d", &year, &month, &day, &hour, &minute, &second);

if(month < 1 || month > 12)

{

printf(" 月份输入错误! ");

continue;

}

else if(day < 1 || day > dayMonth(month))

{

printf(" 日期输入错误! ");

continue;

}

else if(hour < 0 || hour > 23)

{

printf(" 小时输入错误! ");

continue;

}

else if(minute < 0 || minute > 59)

{

printf(" 分钟输入错误! ");

continue;

}

else if(second < 0 || second > 59)

{

printf(" 秒数输入错误! ");

continue;

}

else

{

break;

}

}

}



/*函数nextSecond()计算下一秒的时间*/

void nextSceond()

{

if(59 == second)

{

minute += 1;

second = 0;

if(60 == minute)

{

hour += 1;

minute = 0;

if(24 == hour)

{

day += 1;

hour = 0;

if(day > dayMonth(month))

{

month += 1;

day = 1;

if(13 == month)

{

year += 1;

month = 1;

}

}

}

}

}

else

{

second += 1;

}

printf("%d-%d-%d %d:%d:%d ",year, month, day, hour, minute, second);

}



/*函数leapYear(int year)判断是否为闰年*/

int leapYear(int year)

{

if(0 == (year % 4 && 0 != year % 100) || 0 == year % 400)

{

return 1;

}

else

{

return 0;

}

}


/*函数名dayMonth(int month)返回每个月份对应的天数*/

int dayMonth(int month)

{

switch(month)

{

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:

return 31;

case 2:

if(0 == (year % 4 && 0 != year % 100) || 0 == year %400)

{

return 29;

}

else

{

return 28;

}

case 4:

case 6:

case 9:

case 11:

return 30;

}

}

  • 请放心使用

  • 有问题的话请追问

  • 满意请及时采纳,谢谢