新手保姆级解析C++解日历问题
2020-03-31 19:15
621 查看
新手保姆级解析C++解日历问题
题目描述:
已知 2007 年 10 月 10 日,请求出 nnn 天后是几月几号
输入描述:
多组输入,每组输入为 111 行,为一个正整数 n(1<=n<=2000)
输出描述:
对于每组输入,输出格式为
yyyy-mm-dd, 输出的值为 nnn 天后的日期
样例输入:
1
2
样例输出:
2007-10-11 2007-10-12
解题::
#include <iostream> #include <iomanip> using namespace std; int Isyear(int n); int num[2]={365,366};//定义一个一维数组,数组中保存着非闰年与闰年的日期 int mon[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31}, {31,29,31,30,31,30,31,31,30,31,30,31}}; int main() { int n; cin>>n; while(n) { int year =2007;//初始化年 int month=0;//初始化月份 n=n+283;//从2007年1月1日到2007年10月10日,需要度过283天. //思路先确立年,如何确立,先从2007年开始,按照年份增加,当天数小于等于一年的总天数时,年份确立 for(year=2007;n>num[Isyear(year)];year++)//当Isyear返回值为1时num[1]=366,反之num[0]=365. { n-=num[Isyear(year)]; }//通过这个循环我们得到了这一年度过了多少天,如果n==0则日期为1月1日,以此类推 //思路此时年确立,现在确立月份 //闰年与非闰年,其月份中含有的日期是不同的 //现在我们来确立月份,当天数小于等于一个月的总天数时,月份确立. for(month=0;n>mon[Isyear(year)][month];month++) { n-=mon[Isyear(year)][month]; } month +=1; cout<<year<<'-'<<setw(2)<<setfill('0')<<month<<"-"<<setw(2)<<setfill('0')<<n<<endl; cin>>n; } return 0; } int Isyear (int n) { if(n%4==0&&n%100!=0||n%400==0) return 1; else return 0; }
不断学习,不断更新.
恳请大佬,多多指教.
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 【C++深度剖析教程14】经典问题解析三之关于赋值的疑问
- java socket解析和发送二进制报文工具(附java和C++转化问题)
- C++新手常见的问题与解答
- C++中的经典问题解析
- c++字符数组未初始化及初始化后元素内容及其'\0'问题解析
- C/C++ sizeof函数解析——解决sizeof求结构体大小的问题
- C与C++的兼容问题——extern "C"的用法解析
- strace 运维故障解析:C++库问题导致LAMP运行异常,Floating Point Exception
- 问题九:C++中::是干嘛用的(域解析操作符)
- 【C++深度剖析教程15】经典问题解析之关于string的疑问
- 日历问题 —— C++
- vs2015运行c++出现的小问题及解决方案(希望能帮助一些和我一样的新手)
- C/C++ sizeof函数解析——解决sizeof求结构体大小的问题
- 关于vs2010 C++编译链接总是出现“LNK:2019 无法解析的外部符号”的问题
- C++模板例子问题解析
- 运维故障解析:C++库问题导致LAMP运行异常,Floating Point Exception
- C++深度解析 同名覆盖引发的问题 --- 父子间的赋值兼容,函数重写(47)
- c++学习笔记(5.专题一经典问题解析)
- 一道经典的C++题,关于分钱的问题,适合新手阅读(黑客X档案论坛题目)
- 在C++新手区回答一个问题