C语言 检查日期是否有效

日期相关:

一个小小的工具函数,也行以后会用到。

#include<stdbool.h>
#include<stdio.h>

struct date {
	int month;
	int day;
	int year;
	// 月 - 日 - 年  
};

bool isleap(struct date d);            //判断是否为闰年
int NumberOfDays(struct date d);       //判断天数
bool IsValidDate(struct date d);       //检查是否是合法输入


int main(void) {
	
	struct date today, tomorrow;
	int flag = 0;

	printf("Enter today's date:(format: month day year): ");
	scanf("%d %d %d", &today.month, &today.day, &today.year);

	if (IsValidDate(today))
		return 0;

	if (today.day != NumberOfDays(today)) {
		tomorrow = today;
		tomorrow.day++;

	} else if (today.month != 12) {
		tomorrow.day = 1;
		tomorrow.month = today.month + 1;
		tomorrow.year = today.year;

	} else {
		tomorrow.day = 1;
		tomorrow.month = 1;
		tomorrow.year = today.year + 1;
	}

	printf("Tomorrow is: %d - %d - %d\n", tomorrow.month, tomorrow.day, tomorrow.year);
	return 0;
}


bool IsValidDate(struct date d) {
	
	bool flag = false;
	if (d.day <= 0 || d.day > 31) {

		printf("illegal input of day!\n");
		flag = true;

	}
	if (d.month <= 0 || d.month > 12) {
		printf("illegal input of month!\n");
		flag = true;
	}
	if (d.year < 0) {
		printf("illegal year!\n");
		flag = true;
	}

	return flag;
}

int NumberOfDays(struct date d) {

	int day = 0;
	int days[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

	if (d.month == 2 && isleap)
		day = 29;
	else
		day = days[d.month - 1];

	return day;
}

bool isleap(struct date d) {

	bool leap = false;
	int year = d.year;

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

	return leap;
}

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值