void printf(int a)
{
if(a==1)
printf("日期合法\n")
else
printf("日期非法\皮前n")
}
void main()
{
void printf(int a)
int x,y,z,i
scanf("%d,%d,%d\n",&x,&y,&z)
if(x%400==0||(x%4==0&&x%100!=0))
{
if(y==1||y==3||y==5||y==7||y==8||y==10||y==12)
i=1
else if(y==2)
i=2
else if(y==4||y==6||y==9||y==11)
i=3
else
i=4
switch(i)
{
case 1:
if(z>=32)
printf(0)
else
printf(1)break
case 2:
if(z>=30)
printf(0)
else
printf(1)break
case 3:
if(z>=31)
printf(0)
else
printf(1)break
case 4:printf(0)break
default: printf(0)break
}
}
else
{
if(y==1||y==3||y==5||y==7||y==8||y==10||y==12)
i=1
else if(y==2)
i=2
else if(y==4||y==6||y==9||y==11)
i=3
else
i=4
switch(1)
{
case 1:
if(z>=32)
printf(0)
else
printf(1)break
case 2:
if(z>=29)
printf(0)
else
printf(1)break
case 3:
if(z>=31)
printf(0)
else
printf(1)break
case 4:
printf(0)
default: printf(0)break
}
}
}
帮你编好了,直接考到VC++里面运燃陪清行即可
运行后输入3个整数,分别代乱知表年月日,空格空开,enter结束
staticpublic
boolean
isValidDate(
int
year,
int
mon,
int
day,
short
year_min,short
year_max,
StringBuffer
msg)
{
if(year<year_min
||
year>year_max)
{
msg.append("年份必须在("+
year_min+"~"+year_max+
")之间,输入值("+year+")无效\n")
return
false
}else
if(mon<1
||
mon>12){
msg.append("月份必须在(1~12)之间,输入值("+mon+")无效\n")
return
false
}else
if(day<1
||
day>31){
msg.append("日号必须在(1~31)之间,输入值("+day+")无效\n")
return
false
}else
if(mon==2){
if(isLeapYear(year)
&&
day>29){
msg.append("闰年的闰二月日橘芹号必须在(1~29)之间,"+year+"是闰年,输入值("+day+")无效\n")
return
false
}else
if(day>28){
msg.append("非闰年的闰二月的日号必须在(1~28)之间,"+year+"不是闰年,输入值("+day+")无效帆伍凳\n")
return
false
}
}
return
true
}
//闰态旅年
static
public
boolean
isLeapYear(int
year){
return
(year%4==0
&&
year%100!=0)||
year%400==0
}
主要验证三个信息:
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>static int is_valid_date(int y, int m, int d)
{
int month[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
return m > 0 && m <= 12 && d > 0 && d <= month[m - 1]
}
int main(void)
{
int y, m, d
scanf("%4d-%2d-%2d", &y, &m, &d)
if (is_valid_date(y, m, d))
printf("valid date\n")
else
printf("invalid date\n")
乎带 哪顷缓 return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)