700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > JSK-129 判断日期是否符合格式【入门】

JSK-129 判断日期是否符合格式【入门】

时间:2021-10-22 01:05:41

相关推荐

JSK-129 判断日期是否符合格式【入门】

判断日期是否符合格式

我们知道一年有12个月,每个月最多有31天,年有平年和闰年之分,本题目要求如果输入一个日期,程序需要判断用户输入的日期是否正确。

输入:用户输入是三个数字,分别表示年,月和日。 例如 10 21 ,表示10月21日,这个输入经过判断是正确的。又例如输入 1993 11 38 ,这个输入经过判断是错误的,因为日期不能超过31天。

输出:程序的输出分为两种,1或者0。1表示输入正确,0表示输入错误

提示:测试输入的三个数字中,年份是正数,月份和日期有可能是负数,程序需要对这两个数为负数的情况进行判断

样例输入

21 10

样例输出

0

问题链接:JSK-129 判断日期是否符合格式

问题描述:(略)

问题分析

这个题有关日期计算问题,做一下年月日范围的检查就可以了。

程序说明

函数leapyear()根据带入参数(年)判断是否为润年,润年则返回1否则返回0。返回整数值更便于使用。

数组days[]存储每月的天数,不用其元素days[0]使得程序让人更加直观好懂。

参考链接:(略)

题记:功能尽可能封装为函数。

AC的C语言程序如下:

/* JSK-129 判断日期是否符合格式 */#include <stdio.h>int days[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};int leapyear(int year){return ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0);}int judge(int y, int m, int d){if(y < 0 || m <= 0 || d <= 0)return 0;else if(m > 12)return 0;else {days[2] += leapyear(y);if(d > days[m])return 0;elsereturn 1;}}int main(void){int y, m, d;scanf("%d%d%d", &y, &m, &d);printf("%d\n", judge(y, m, d));return 0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。