算法--计算当天在该年是第几天
来源:互联网 发布:提高淘宝店铺流量 编辑:程序博客网 时间:2024/06/08 09:45
问题:输入一个年份,检测其是否为正确的年份,检测是否为闰年,输入当天为该年的第几天
问题解析:判断日期的正确性最关键的就是每个月有多少天。其中最特殊的就是每年的二月(分平年和闰年)
所以在考虑日期是否准确的时候 二月要特别“关照一下”
1.先检测该日期是否为闰年(闰年的标准是4的倍数,不能是100的倍数,但可以是400的倍数)
2.检测完是否为闰年之后,我们可以根据普通的月份和闰年和二月份的特殊性一起判断该日期是否准确。
3.最后根据每个月的天数输出该年是第几天(闰年的话如果月份大于二,天数要加一)
代码如下:
#include <stdio.h>
int leap(int y) //检查是否为闰年
{
if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)
return 1;
else
return 0;
}
int valid(int y, int m, int d) //判断日期是否正确
{
return (((leap(y)&&d<30)||(leap(y)==0&&d<29))&&m==2/*判断闰年二月份是否填写正确*/||(y>=0&&m>0&&d>0&&m<13&&m!=2/*限制二月份的情况以免发生约束冲突*/&&d<32));//判断普通年份是否正确
}
int calc(int y, int m, int d) //判断当天是在该年的第几天
{
int sum;
switch (m) {
case 1:
break;
case 2:
sum = 31;
break;
case 3:
sum = 31 + 28;
break;
case 4:
sum = 31 + 28 + 31;
break;
case 5:
sum = 31 + 28 + 31 + 30;
break;
case 6:
sum = 31 + 28 + 31 + 30 + 31;
break;
case 7:
sum = 31 + 28 + 31 + 30 + 31 + 30;
break;
case 8:
sum = 31 + 28 + 31 + 30 + 31 + 30 + 31;
break;
case 9:
sum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31;
break;
case 10:
sum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30;
break;
case 11:
sum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31;
break;
case 12:
sum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30;
break;
}
sum += d;
if (leap(y) && m > 2)
sum++;
return sum;
}
int main()
{
int year,month,day;
printf("请输入年份月份以及天数=");
scanf("%d%d%d", &year, &month, &day);
while (valid(year,month,day)-1)
{
printf("您输入的日期有误,请再次输入\n请输入年份月份以及天数=");
scanf("%d%d%d", &year, &month, &day);
}
printf("您输入的天数为该年的第%d天", calc(year, month, day));
return 0;
}
0 0
- 算法--计算当天在该年是第几天
- (hdu 简单题 128题)hdu 2005 第几天(计算当天是该年的第几天)
- 计算某日是该年的第几天——c语言算法实现
- 计算某年某月某日是该年的第几天【算法入门】
- 项目五-计算该年第几天
- 计算某日是该年第几天
- 输入年月日,计算该年第几天
- C# 取当天是一年中的第几季度,第几月,是该季度的第几天
- 计算某年某月某日是该年的第几天。
- 计算某年是该年度的第几天(java)
- 计算该日是该年的第几天
- [C]计算某一天是该年中的第几天
- 计算日期是该年中的第几天
- 【日期计算】某日期是该年第几天
- 计算某日是该年的第几天
- 计算某日是该年的第几天
- 计算某日是该年的第几天
- 第三天、计算某日是该年的第几天
- 原生socket客户端与服务器消息互传
- 设计模式之03 Template Mthod模式
- JavaScript实现CRC32函数
- [转]"我泡在GitHub上的177天"--github连击带来的惯性链正向促进.
- Appium(二) 官网下载+安装(win7)
- 算法--计算当天在该年是第几天
- 浅谈translate属性与相对定位、绝对定位的区别
- binary-tree-level-order-traversal-ii
- Spring 使用 DefaultAdvisorAutoProxyCreator创建AOP 小结
- 使用mobilenet训练自己的数据
- 行内元素,块级元素和空元素
- Service 简单的音乐播放服务
- Spring MVC 新增跨域支持
- Java学习笔记_11