C++实现通过年份与天数判断月份日期
来源:互联网 发布:java电商项目视频教程 编辑:程序博客网 时间:2024/05/01 20:28
近期为了准备CCF认证考试,自己随便练习遇到的一道经典题,所以写下来,自己的思路想法。
先把题目列出来
给定一个年份y和一个整数d,问这一年的第d天是几月几日?
注意闰年的2月有29天。满足下面条件之一的是闰年:
1)年份是4的整数倍,而且不是100的整数倍;
2)年份是400的整数倍。
输入格式
第一行包含一个整数y,表示年份,年份在1900到2015之间(包含1900和2015)。
输出格式
输出两行,每行一个整数d,d在1至365之间。
样例输入
2015
80
样例输出
3
21
再上代码,如果某些人需要,这样就不用看后面了!
#include<iostream>using namespace std;bool isRunyear(int year){ if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { return true; } else{ return false; }}int main(){ int year; cin >> year; int day; cin >> day; bool bl; bl = isRunyear(year); int iArr[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; int count = 0,count1=0; if (bl==true) { //表明是闰年 iArr[1] = 29; for (int i = 0; i < 12; i++) { count1 = count; count += iArr[i]; if (day>count1&&day <= count){ cout << i+1 << endl; cout << day - count1 << endl; break; } } } else{ //表明是平年 for (int i = 0; i < 11; i++) { count1 = count; count += iArr[i]; if (day>=count1&&day <= count){ cout << i + 1 << endl; cout << day - count1 << endl; break; } // else if (day == count){ // cout << i + 1 << endl; // cout << day - count1 << endl; // } } } return 0;}
接着是运行结果:
前面两行是你输入的数据,后面的是输出结果
(http://img.blog.csdn.net/20160902160654748)
这里为使整个结构看得更清晰一点,我把是不是闰年单拿出来,写成外部函数。很简单的一段,我就不详细说了。主要是下面判断几月份以及具体哪一天的时候是关键点:
首先,把平年的每个月到底有几天,以数组的形式存起来,在下面的判断是不是闰年之后,直接改变iArr[1](即二月份的天数)的值。用两个计数变量,是用来保存加iArr[i]之前与加之后的两个值,这样虽然声明的变量多了,占的空间多了,但至少思路更清晰,更容易明白。
for (int i = 0; i < 12; i++) { count1 = count; count += iArr[i]; if (day>count1&&day <= count){ cout << i+1 << endl; cout << day - count1 << endl; break; } }
for循环是为了累加,当你输入的d数据恰好大于加iArr[i]之前的值,又小于加完以后的天数时,说明找到了那个临界点,由于i 还是下标,所以加一,就能得到月份,day-count1就恰好是那个月的第几天了。这里还有个注意事项,就是临界状态,你所输入的数据,恰好是某个月最后一天,这样所单独拿出来,测试了一下:
// else if (day == count){ // cout << i + 1 << endl; // cout << day - count1 << endl; // }
后来一看,跟把它直接加入到上面的循环判断的时候一样,所以,就注释掉了。
当然,这份代码还有好多没有考虑到:
比如:输入的数据是否符合要求,年份,天数,都要进行判断,还要尽可能的简化代码。
0 0
- C++实现通过年份与天数判断月份日期
- 输入年份与月份 判断是否是闰年 与该年月的天数
- 实现给定任意年份和月份得出天数
- 输入年份和月份,输出月份天数
- JavaScript 通过特定的年份和月份确定相应的天数
- 根据年份和月份获得天数
- 输入年份月份统计当月天数
- 求任意年份任意月份的天数
- 根据年份、月份取当月的天数
- java输入年份和月份,输出天数
- java输入年份,月份,输出当月天数
- 判断月份天数
- 获取当前年份、月份、日期
- C语言历年上机考题(根据月份和年份,输出该月的天数)
- java工具类(七)实现给定任意年份和月份得出天数
- Java实现给定年份和月份,输出该月的天数
- 请用户输入年份,输入月份,输出该月份天数
- 给定月份,判断该月有多少天。(给定年份,给定月份,判断从1月到当前月的上个月的总天数)。
- PLM系统与选择
- Objective-C - runtime 之 Class 和 Meta Class
- Shell编程(2):符号相关
- Markdown 11种基本语法
- HDU 3652 B-Number(数位dp)
- C++实现通过年份与天数判断月份日期
- Linux中ps命令的简单使用
- Sqlplus无法使用上下左右键的问题
- Android简单的反编译嵌入例子
- 对象模型&模板
- LeetCode Restore IP Addresses(回溯法)
- 微软面试100题系列---求二叉树中节点的最大距离
- linux解压xxx.tar.bz2
- 选择语句