关于c语言如何判断日期是否合法?\\有这样的日期吗?
有这样的日期吗? (单测试用例版)
题目来源:http://pts.hunau.edu.cn/problem.php?cid=2659&pid=9
最近帮人做题目,在csdn上看到有一个多测试版本,因为数组还没学,所以无法利用,而且也想在csdn上发篇文章试试,于是便拿来练手了。
输入
每行有三个小于10000的正整数y,m,d,表示一个日期的年月日。
输出
如果该日期是合乎历法的则输出yes,否则输出no。
输入样例:
2000 2 292001 6 312001 12 312001 11 3120000 2 21
输出样例:
no
no
yes
no
no
解析:主要在于闰年,大小月(7、8月变换),二月的处理。
** 闰年规则:四年一闰,百年不闰,四百年再闰:链接。例如:2000年是闰年,2100年则是平年
处理:
对于年year,月month,日day;
先判断年,月,日单个是否合法
然后对把y除4取余赋值给a:a=y%4;
把月份m除2取余赋值给c: c=m%2;
因为m在7、8月有变化,相当于跨了一个月,
于是我用:if(m>=8){c=(c+1)%2;}来处理c
则if(m==2)(解决2月的特殊情况),else if 解决其他月份。
注:m>8月的处理应该在其他月份处理之前就要做。
二月特殊情况:
if(m==2){if(a==0){a=y%400,b=y%100;if(a!=0&&b==0&&d>=29){printf("no");}else {if(d<=29){printf("yes");}else{printf("no");}}}else if(d<29) {printf("yes");}else{printf("no");} }
其他月份:
else if(c==0) {if(d<=30) printf("yes");else printf("no");}else if(c==1) {if(d<=31) printf("yes");else printf("no");}
代码如下(式中的y,m,d表示年月日):
#include <stdio.h>
#include<math.h>
int main (){int y,m,d;int a,b,c;scanf("%d %d %d",&y,&m,&d);a=y%4;c=m%2;if(y>0&&y<=10000&&m>0&&m<=12&&d>0&&d<=31){if(m>=8){c=(c+1)%2;}if(m==2){if(a==0){a=y%400,b=y%100;if(a!=0&&b==0&&d>=29){printf("no");}else {if(d<=29){printf("yes");}else{printf("no");}}}else if(d<29) {printf("yes");}else{printf("no");} }else if(c==0) {if(d<=30) printf("yes");else printf("no");}else if(c==1) {if(d<=31) printf("yes");else printf("no");}}elseprintf("no");return 0;
}
好了 ,以上就是全部内容了,感谢观看。
关于c语言如何判断日期是否合法?\\有这样的日期吗?相关推荐
- java 日期是否合法_java 中 Date 类型快判断日期是否合法.
// 如果日期不合法,则抛异常try {String date_str = 5555-22-33;SimpleDateFormat format=new SimpleDateFormat(yyyy-M ...
- JAVA判断输入日期是否合法
简单判断输入日期是否合法 运行结果: public class JudgeDate {public static boolean judge(int y,int m,int d) {boolean p ...
- 判断日期是否合法(Java精练版)
判断日期经常合法出现在IO场景下,下面将使用简练的思路和代码呈现给大伙! 实现思路: 1.声明并初始化一个整型数组,表示各个月中最大的天数,数组长度刚好为12(注意:该数组在平年条件下使用) 2.定义 ...
- c语言switch判断星座,通过日期计算星座 - osc_d41sfzmu的个人空间 - OSCHINA - 中文开源技术交流社区...
分析和理解根据日期计算星座函数 起始月份 号数 星座 结束月份 号数 时间区间 12 22 摩羯座 1 19 12/22 - 1/19 1 20 水瓶座 2 18 1/20 - 2/18 2 19 双 ...
- Oracle数据库:约束行限制where语句,判断条件,比较条件,字符串日期格式,in,like,escape,null语句
Oracle数据库:约束行限制where语句,判断条件,比较条件,字符串日期格式,in,like,escape,null语句 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很 ...
- 正则表达式在JS中的应用,判断邮箱是否合法
目录 一.什么是正则表达式: 二.正则表达式基本符号: 三.简单的正则表达式: 四.创建正则表达式,调用方法: 五.例子:判断邮箱是否合法 一.什么是正则表达式: 正则表达式主要用在字符串格式匹配方面 ...
- c语言判断非法字符题目,C语言考试题库之判断题-c语言考试判断题
<C语言考试题库之判断题-c语言考试判断题>由会员分享,可在线阅读,更多相关<C语言考试题库之判断题-c语言考试判断题(7页珍藏版)>请在人人文库网上搜索. 1.三.判断题(1 ...
- 如何判断一个字符串是否为数字或日期?
如何判断一个字符串是否为数字或日期? 作者: eygle | English Version [转载时请以超链接形式标明文章 出处和作者信息及 本声明] 链接: http://www.eygle.c ...
- R语言基于日期范围筛选数据实战(Subset by a Date Range):日期范围之内的数据、日期范围之外的数据、日期之后的数据、日期之前的数据
R语言基于日期范围筛选数据实战(Subset by a Date Range):日期范围之内的数据.日期范围之外的数据.日期之后的数据.日期之前的数据 目录 R语言基于日期范围筛选数据实战(Subse ...
- linux检查socekt是否断开,如何在C语言中判断socket是否已经断开
如果不主动关闭socket的话,系统不会自动关闭的,除非当前进程挂掉了,操作系统把占用的socket回收了才会关闭.小编今天跟大家简单介绍下如何在C语言中判断socket是否已经断开 下面来介绍判断非 ...
最新文章
- CoRL 2020奖项公布,斯坦福获最佳论文奖,华为等摘得最佳系统论文奖
- 在物理机上用u盘安装linux遇到的问题
- 烂泥:centos单独编译安装gd库
- Rumor CodeForces - 893C
- 网络知识:路由器要不要每天重启?很多人都做错了,难怪网速慢
- 05-类--+-号使用
- 票务系统开发_景区票务系统部署到底是SaaS还是本地化呢?
- pagePiling.js - 创建美丽的全屏滚动效果
- 第一次接触WebSocket遇到的坑以及感受
- B2B电商平台--ChinaPay银联电子支付功能
- oracle减法函数mius_Oracle常用函数及其用法
- 单片机(嵌入式)程序分层架构
- c 陷阱与缺陷 摘录
- STM32F103 GPIOA->CRL=0XFFF0FFFF配置端口方向
- java小游戏——飞翔的小鸟(java初学作品)
- 从希望中寻找失望——计算机达人成长之路(8)连载
- 给B2C网站企业的一点建议
- Kinect开发(二)——注意项点,影像显示
- P4 类,对象,类成员简介
- WayOS路由器电信网通双线的设置方法