【C语言程序练习】验证用户输入的日期格式是否正确,如果不正确,则提示重新输入,直到重新输入正确为止

验证用户输入的日期格式是否正确,如果不正确,则提示重新输入,直到重新输入正确为止。

(提示:需要定义一个表示日期的结构体类型struct Date,包括年、月、日信息,并用typedef重新定义新类型名Date;检查日期是否有效,定义为函数int checkDate(Date date))。

#include <stdio.h>
//定义一个表示日期的结构体类型struct Date
struct Date
{
	int year;
	int month;
	int day;
}date;
//用typedef重新定义新类型名Date
typedef struct Date Date;
//检查日期是否有效函数
//int checkDate(Date date);
int checkDate(Date date)
{
	int y = 0;
	//判断月份是否为31天
	if (date.month == 1 || date.month == 3 || date.month == 5 || date.month == 7 || date.month == 8 || date.month == 10 || date.month == 12)
		y = 1;
	//判断月份是否为30天
	if (date.month == 4 || date.month == 6 || date.month == 9 || date.month == 11)
		y = 4;
	//月份为2月时(需要判断闰年)
	if (date.month == 2)
	{
		if ((date.year % 4 == 0 && date.year % 100 != 0) || date.year % 400 == 0)
			y = 2;
		else
			y = 3;
	}
	if (date.year < 1900 || date.year>2020)
		return 0;
	else if (date.month < 1 || date.month>12)
		return 0;
	else if (y == 1 && (date.day < 1 || date.day>31))
		return 0;
	else if ((y == 4) && (date.day < 1 || date.day>30))
		return 0;
	else if ((y == 2) && (date.day < 1 || date.day>29))
		return 0;
	else if ((y == 3) && (date.day < 1 || date.day>28))
		return 0;
	else
		return 1;
}
int main()
{
	int x;
	do
	{
		printf("Please input the date!\n");
		scanf_s("%d%d%d", &date.year, &date.month, &date.day);
		x = checkDate(date);
	} while (x == 0);
	if (x)
		printf("Correct!\n");
	return 0;
}

运行结果:
在这里插入图片描述
在这里插入图片描述

  • 7
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值