九度OJ 1096:日期差值 (日期计算)
2015-10-23 09:15
357 查看
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:8138
解决:2752
题目描述:
有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天
输入:
有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD
输出:
每组数据输出一行,即日期差值
样例输入:
样例输出:
来源:2009年上海交通大学计算机研究生机试真题
思路:
直接相减需要考虑的情况比较多。比如找一个参考时间,比如00000101,算出两个日期与其差值,然后两个差值相减。
代码:
内存限制:32 兆
特殊判题:否
提交:8138
解决:2752
题目描述:
有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天
输入:
有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD
输出:
每组数据输出一行,即日期差值
样例输入:
20110412 20110422
样例输出:
11
来源:2009年上海交通大学计算机研究生机试真题
思路:
直接相减需要考虑的情况比较多。比如找一个参考时间,比如00000101,算出两个日期与其差值,然后两个差值相减。
代码:
#include <stdio.h> #include <string.h> #include <stdlib.h> #define N 10 int compare(int y[2], int m[2], int d[2]) { if (y[0] != y[1]) return y[0]-y[1]; else if (m[0] != m[1]) return m[0]-m[1]; else if (d[0] != d[1]) return d[0]-d[1]; else return 0; } void swap(int a[2]) { int tmp; tmp = a[0]; a[0] = a[1]; a[1] = tmp; } int days(int y, int m, int d) { int count = 0; //printf("y=%d, m=%d, d=%d\n", y, m, d); count += y*365; count += (y-1)/4+1; count -= (y-1)/100+1; count += (y-1)/400+1; //printf("count=%d\n", count); if (m > 1) count += 31; if (m > 2) { if ((y%4 == 0 && y%100 != 0) || y%400 == 0) count += 29; else count += 28; } if (m > 3) count += 31; if (m > 4) count += 30; if (m > 5) count += 31; if (m > 6) count += 30; if (m > 7) count += 31; if (m > 8) count += 31; if (m > 9) count += 30; if (m > 10) count += 31; if (m > 11) count += 30; if (m > 12) count += 31; //printf("count=%d\n", count); count += d; //printf("count=%d\n", count); return count; } int main(void) { int i; char s[2] , a ; int y[2], m[2], d[2]; while (scanf("%s%s", s[0], s[1]) != EOF) { for(i=0; i<2; i++) { strncpy(a, s[i], 4); a[4] = '\0'; y[i] = atoi(a); strncpy(a, s[i]+4, 2); a[2] = '\0'; m[i] = atoi(a); strncpy(a, s[i]+6, 2); a[2] = '\0'; d[i] = atoi(a); } printf("%d\n", abs(days(y[0], m[0], d[0]) - days(y[1], m[1], d[1])) + 1); } return 0; } /************************************************************** Problem: 1096 User: liangrx06 Language: C Result: Accepted Time:0 ms Memory:920 kb ****************************************************************/
相关文章推荐
- 部分和问题(搜索简单题)
- javascript === 与 ==
- 大数据分析-京东慧眼
- 链表、头指针、头结点
- 程序员的那些事儿 -- 皆大欢喜的加薪
- Android Gradle实用技巧——APK文件名中加上SVN版本号,日期等
- 双链表建立和删除
- 第七周项目6-停车场模拟
- 第七周实践项目4--队列数组
- 《iOS总结》上传报错:ERROR ITMS-90049
- EI Capitan下 CocoaPods命令无法使用问题
- 练习2 C - 成绩转换
- 第七周项目3--负数把正数赶出数列
- 虚拟机安装Ubuntu的上网设置(有线网络和无线网络)
- 在Linux下安装JDK (ubuntu)
- Light OJ 1013 Love Calculator(DP)
- iOS 9 适配中出现的坑
- struts2 拦截器和actioninvocation
- 对URLLoader的封装,完美解决FLEX读取各种GB2312等编码文件
- JS解析XML数据,ActiveXObject("Microsoft.XMLDOM")对象兼容IE和火狐