代码练习系列:问题 A 日期差值
2017-11-03 10:10
218 查看
题目描述
有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天。
输入
有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD
输出
每组数据输出一行,即日期差值
样例输入
20130101
20130105
样例输出
5
有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天。
输入
有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD
输出
每组数据输出一行,即日期差值
样例输入
20130101
20130105
样例输出
5
#include <stdio.h> #include <string.h> int num[13][2] = {{0,0},{31,31},{28,29},{31,31},{30,30},{31,31},{30,30},{31,31},{31,31},{30,30}, {31,31},{30,30},{31,31}}; int isPrime(int x){ if ((x % 4 == 0 && x % 100 != 0) || (x % 400 == 0)){ return 1; }else return 0; } int main() { int num1,num2,temp; int year1,year2,month1,month2,day1,day2; while(scanf("%d%d",&num1,&num2) != EOF){ if(num1 > num2){ temp = num1; num1 = num2; num2 = temp; } year1 = num1 / 10000,month1 = num1 % 10000 / 100,day1 = num1 % 100; year2 = num2 / 10000,month2 = num2 % 10000 / 100,day2 = num2 % 100; int cnt = 1; while(year1 < year2 || month1 < month2 || day1 < day2){ day1++; if(day1 == num[month1][isPrime(year1)] + 1){ month1++; day1 = 1; } if(month1 == 13){ year1++; month1 = 1; } cnt++; } printf("%d\n",cnt); } return 0; }
相关文章推荐
- 代码练习系列:问题 E 日期累加
- 代码练习系列:问题 C 打印日期
- 代码练习系列:问题 F A+B和C (15)
- 代码练习系列:问题 H 部分A+B (15)
- 代码练习系列:问题 C 等腰梯形
- 代码练习系列:问题 B Day of Week
- 代码练习系列:问题 B Hello World for U
- 代码练习系列:问题 A 输出梯形
- 代码练习系列:问题 C 进制转换【转载】
- 代码练习系列:问题 A 字符串连接
- 代码练习系列:问题 G 数字分类 (20)
- 代码练习系列:问题 D 八进制
- 代码练习系列:问题 A 又一版 A+B
- 代码练习系列:问题 B 数制转换
- 代码练习系列:问题 A 统计同成绩学生人数
- 代码练习系列:问题 E 学生查询
- 2018年全国多校算法寒假训练营练习比赛(第三场)E---进击吧!阶乘(Java代码,另附Java解决大数问题的模板)
- [c/c++练习系列]多项式合并问题
- 帮初学者改代码——playerc之“练习:求完数问题”(下)
- 算法竞赛入门经典,练习代码 ,4.4.1 小问题集锦