编写程序:输入一个日期(年、月、日),判断日期是否合法。怎么写?求代码?

编写程序:输入一个日期(年、月、日),判断日期是否合法。怎么写?求代码?,第1张

#include "stdio.h"

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结束

static

public

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

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12458436.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存