㈠ c語言中,如何驗證輸入日期的正確性!~
主要驗證三個信息:
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
常式:
#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語言:從鍵盤上輸入一個日期,判斷輸入的日期是否正確
定義一個12元素的int型數組存放1月份至12月份每個月的天數;
根據輸入的年份判斷是否為閏年,對上述數組中2月份的天數進行調整;
判斷年份大於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;
}
}
請放心使用
有問題的話請追問
滿意請及時採納,謝謝