七、题目:日期问题

小明正在整理一批历史文献。这些历史文献中出现了很多日期。小明知道这些日期都在1960年1月1日至2059年12月31日。令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的,有采用月/日/年的,还有采用日/月/年的。更加麻烦的是,年份也都省略了前两位,使得文献上的一个日期,存在很多可能的日期与其对应。

比如02/03/04,可能是2002年03月04日、2004年02月03日或2004年03月02日。

给出一个文献上的日期,你能帮助小明判断有哪些可能的日期对其对应吗?
输入


一个日期,格式是"AA/BB/CC"。 (0 <= A, B, C <=9)
输入


输出若干个不相同的日期,每个日期一行,格式是"yyyy-MM-dd"。多个日期按从早到晚排列。
样例输入


02/03/04
样例输出


2002-03-04
2004-02-03
2004-03-02


  • 分析思路:

输入1960年1月1日至2059年 12月31日
AA/BB/CC
把字符串提取出数字
有三种可能
顺着思路直接写代码

  • 代码
#include<iostream>
#include<sstream>
#include<set>
using namespace std;bool isLeap(int year){  //判断是否为闰年 return(year%4==0&&year%100!=0)||year%400==0;
}
void i2s(int i,string &s){stringstream ss;ss<<i;ss>>s;
}
string f(int a,int b,int c){if(a>=0&&a<=59)a+=2000; else if(a>=60&&a<=99)a+=1900;else return "";if(b<1||b>12) return "";  //非法 if(c<1||c>31) return "";  //非法 bool _isLeap=isLeap(a);switch(b){ //日期校验case 2:   //2月 if(_isLeap&&c>29)return "";  //闰年最大29日 if(!_isLeap&&c>28)return "";break;case 4:if(c>30)return "";  //非法 break; case 6:if(c>30)return "";break;case 9:if(c>30)return "";break;case 11:if(c>30)return "";break;default:break;}//下面是合法日期转为字符串 string _a,_b,_c;i2s(a,_a);  //a转到_a i2s(b,_b);i2s(c,_c);//b和c需要特殊处理 if(_b.length()==1)_b="0"+_b; //b的长度等于1在前面补0 if(_c.length()==1)_c="0"+_c;return _a+"-"+_b+"-"+_c;
}
int main(){string in;  ///字符串输入 cin>>in;int a=0,b=0,c=0;a=(in[0]-'0')*10+(in[1]-'0'); //第一个元素减0 b=(in[3]-'0')*10+(in[4]-'0');c=(in[6]-'0')*10+(in[7]-'0');string case1=f(a,b,c);  //预设a为年,b为月,c为日 string case2=f(c,a,b);  //预设c为年,a为月,b为日 string case3=f(c,b,a);  //预设c为年,b为月,c为日 set<string> ans; //排序 if(case1!="")ans.insert(case1);if(case2!="")ans.insert(case2);if(case3!="")ans.insert(case3);for(set<string>::iterator iter=ans.begin();iter!=ans.end();iter++){ //迭代输出 cout<<*iter<<endl;}
return 0;
}

2017蓝桥杯C++B:日期问题(日期转字符串)相关推荐

  1. 2017蓝桥杯java B组纸牌三角形

    2017蓝桥杯java B组纸牌三角形 1.标题:纸牌三角形 A,2,3,4,5,6,7,8,9 共9张纸牌排成一个正三角形(A按1计算).要求每个边的和相等. 下图就是一种排法 A 9 6 4 8 ...

  2. 第十一届蓝桥杯python试题_Python描述 第十一届蓝桥杯省赛第一场 试题 I: 字符串编码...

    试题 I: 字符串编码 时间限制: 1.0s 内存限制: 512.0MB 本题总分 25 分 [问题描述] 小明发明了一种给由全大写字母组成的字符串编码的方法.对于每一个大 写字母 小明将它转换成它在 ...

  3. 2017蓝桥杯等差素数(C++B组)

    题目 :                                            等差素数列 2,3,5,7,11,13,....是素数序列. 类似:7,37,67,97,127,157 ...

  4. 蓝桥杯 算法训练 Cowboys By Assassin dp+字符串操作

    问题描述一个间不容发的时刻:n个牛仔站立于一个环中,并且每个牛仔都用左轮手枪指着他旁边的人!每个牛仔指着他顺时针或者逆时针方向上的相邻的人.正如很多西部片那样,在这一刻,绳命是入刺的不可惜--对峙的场 ...

  5. 2017蓝桥杯省赛---java---B---7(日期问题)

    题目描述 日期问题 标题:日期问题小明正在整理一批历史文献.这些历史文献中出现了很多日期.小明知道这些日期都在1960年1月1日至2059年12月31日.令小明头疼的是,这些日期采用的格式非常不统一, ...

  6. 蓝桥杯2015初赛-星系炸弹-日期计算

    题目描述 在X星系的广袤空间中漂浮着许多X星人造"炸弹",用来作为宇宙中的路标. 每个炸弹都可以设定多少天之后爆炸. 比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2 ...

  7. 2022年第十四届蓝桥杯模拟赛【核酸日期】C语言详解

    目录 题目 思路 代码实现 题目 核酸日期 问题描述 如果周一做核酸,周二显示核酸天数为 1 天,周三显示 2 天,以此类推,周六显示 5 天,周日显示 6 天. 小蓝在某一天做了一次核酸,请问他的核 ...

  8. 蓝桥杯 历届试题 回文日期 C

    问题描述 2020年春节期间,有一个特殊的日期引起了大家的注意:2020年2月2日. 因为如果将这个日期按 yyyymmdd 的格式写成一个8位数是 20200202,恰好是一个回文数.我们称这样的日 ...

  9. 2020蓝桥杯真题回文日期 C语言/C++

    题目描述 2020 年春节期间,有一个特殊的日期引起了大家的注意:2020 年 2 月 2 日.因为如果将这个日期按 "yyyymmdd" 的格式写成一个 8 位数是 202002 ...

最新文章

  1. 独家 | 数据分析@爱可可-爱生活是否在用机器学习算法运营微博
  2. 编程之美-求二进制数中1的个数方法整理
  3. springmvc教程(1)
  4. 【渝粤题库】广东开放大学 会展概论 形成性考核
  5. 使用webpack打包ES6代码
  6. mybatis 注解忽略属性
  7. linux模拟磁盘和用户管理总结
  8. 女人要是一辈子不結婚,老了怎么办?
  9. 登录图片滑动验证实现
  10. 基于TMC4361-超静音闭环步进电机驱动方案
  11. 商品归类查询服务_喜报 | 东泽国际获批进出口商品归类服务单位资质
  12. 2021年N1叉车司机最新解析及N1叉车司机模拟考试
  13. 分布式-分布式常见问题和解决方案
  14. c/c++/linux精确定时器
  15. 中国石油大学《大学语文》第二阶段在线作业
  16. 搭建指标体系的底层逻辑
  17. 金仓数据库KingbaseES Clusterware配置手册(集群搭建前置操作 )
  18. 一文详解8种异常检测算法(附Python代码)
  19. 【R语言】——火山图绘制
  20. 关于matlab的简介,Matlab 简介

热门文章

  1. 从零开始学习python编程-从零开始学python
  2. python有什么用-我们为什么要选择学习python?学习python有什么用?
  3. python基础教程廖雪峰云-为什么看不懂廖雪峰的Python学习教程?
  4. python使用缩进来体现-Python使用缩进来体现代码之间的逻辑关系。
  5. python从入门到放弃表情图-[python从入门到放弃]基于百度OCR的文字识别
  6. 三款主流智能车机横评 吉利博越GKUI实至名归
  7. 语音识别揭秘:你的手机究竟有多理解你?
  8. asp.net 提取html div,asp.net – 将div固定在html中的某一点
  9. unix 连接 mysql_UNIX域套接字连接mysql
  10. 前端面试知识点归纳:vue,react,webpack,bable,项目开发