九度OJ 题目1070:今年的第几天?
2015-08-19 16:22
531 查看
一.题目描述:
输入年、月、日,计算该天是本年的第几天。
输入:
包括三个整数年(1<=Y<=3000)、月(1<=M<=12)、日(1<=D<=31)。
输出:
输入可能有多组测试数据,对于每一组测试数据,
输出一个整数,代表Input中的年、月、日对应本年的第几天。
样例输入:
1990 9 20
2000 5 1
样例输出:
263
122
二.题目分析
闰年的判断:能够整除400的是闰年(新世纪),否则能够整除4但是不能整除100的是闰年,例如1000不是闰年,1000是新世纪年,必须整除400才是闰年。
三.代码
输入年、月、日,计算该天是本年的第几天。
输入:
包括三个整数年(1<=Y<=3000)、月(1<=M<=12)、日(1<=D<=31)。
输出:
输入可能有多组测试数据,对于每一组测试数据,
输出一个整数,代表Input中的年、月、日对应本年的第几天。
样例输入:
1990 9 20
2000 5 1
样例输出:
263
122
二.题目分析
闰年的判断:能够整除400的是闰年(新世纪),否则能够整除4但是不能整除100的是闰年,例如1000不是闰年,1000是新世纪年,必须整除400才是闰年。
三.代码
#include <stdio.h> #include <stdlib.h> int IsLeapYear(int year) { if(year%400==0) return 1; if(year%4==0&&year%100!=0) return 1; return 0; } int Day(int year,int month,int day) { int i,m[12]={31,28,31,30,31,30,31,31,30,31,30,31},sum=0; if(IsLeapYear(year)) m[1]++; for(i=0;i<month-1;i++) sum +=m[i]; sum +=day; return sum; } int main() { int year,month,day; while(scanf("%d%d%d",&year,&month,&day)!=EOF) printf("%d\n",Day(year,month,day)); return 0; }
相关文章推荐
- 二维数组的查找
- Uva 12075 Counting Triangles(容斥)
- Android 数据存储与IO之File存储
- JavaScript学习笔记之类型之间的判断比较
- CodeForces 441 A. Valera and Antique Items
- linux强制umount设备的方法
- iframe自适应高度(兼容多种浏览器)
- 桌面支持--Fixed objects will move
- Java集合深入学习--HashSet与TreeSet
- 桌面支持--excel字母变数字解决办法
- Python函数式编程指南(三):迭代器
- AC自动机+DP 改变字符串中的‘?’使得在字典中匹配到的次数最多 codechef Lucy and Question Marks
- 归档空间问题处理总结
- codeforces 71C C. Round Table Knights(枚举)
- Sublime Text使用笔记
- hosts.deny hosts.allow防止ssh暴力破解密码
- 编写高质量代码改善C#程序的157个建议——建议78:应避免线程数量过多
- 桌面支持--excel自动换行
- CSS3边框阴影,折角效果演示
- 用java下载网页