计算日期
来源:互联网 发布:服务器安装centos 编辑:程序博客网 时间:2024/06/10 04:12
/*************************************************************************
Author: Li Qingyang
Time: 15/08/2008
Fun:
编写一个程序,要求计算出生日到计算日的总天数
算法:
1)输入出生年year1、月month1、日date1和计算日年year2、月month2、日date2。
2)统计year1到year2-1的总天数:
for (n=year1,days=0;n<year2;n++)
if (n是闰年) days+=366
else days+=365;
3)计算出出生日和计算日是当年的第days1和days2。
4)总天数等于days+days2-days1
根据结果,判断体力、情绪和智力状态
方法如下:
体力状态:用总天数除以23,余数在0~11为体力高潮期,否则为体力低潮期。
情绪状态:用总天数除以28,余数在0~14为情绪高潮期,否则为情绪低潮期。
智力状态:用总天数除以33,余数在0~16为智力高潮期,否则为智力低潮期。
**************************************************************************/
#include <stdio.h>
//是否是闰年
int IsLeepYear(int year)
{
if ((year%400 == 0) || ((year%4==0) && (year%100 !=0)))
{
return 1;
}
return 0;
}
//月份
int DaysOfMonth(int year, int month)
{
int nDays;
if (month == 1 || month == 3 || month == 5 || month == 7
|| month == 8 || month == 10 || month == 12)
{
nDays = 31;
}
else if (month == 2)
{
nDays = IsLeepYear(year) + 28;
}
else
{
nDays = 30;
}
return nDays;
}
//计算是当年的第几天
int DaysOfYear(int year, int month, int date)
{
int nSumOfDays = 0;
int nDays = 0;
int i;
for (i = 1; i < month; i++)
{
nDays += DaysOfMonth(year, i);
}
return nSumOfDays = nDays + date;
}
void State(int nDays)
{
//体力状态判断
if (nDays%23 <= 11)
{
printf("体力高潮期/r/n");
}
else
{
printf("体力低潮期/r/n");
}
//情绪状态判断
if (nDays%28 <= 14)
{
printf("情绪高潮期/r/n");
}
else
{
printf("情绪低潮期/r/n");
}
//智力状态判断
if (nDays%33 <= 16)
{
printf("智力高潮期/r/n");
}
else
{
printf("智力低潮期/r/n");
}
}
void main()
{
int year1, month1, date1; //出生年,月,日
int year2, month2, date2; //计算日的年,月,日
int i; //临时变量用于年份的累加
int nSumOfDays = 0; //总天数
scanf("%d%d%d", &year1, &month1, &date1);
if (month1 > 12 || date1 > 31)
{
printf("input error!");
return;
}
scanf("%d%d%d", &year2, &month2, &date2);
if (month2 > 12 || date2 > 31)
{
printf("input error!");
return;
}
if (year1 > year2)
{
printf("input error!");
return;
}
//计算出生年日到计算日的总天数
for (i = year1; i <= year2; i++)
{
if (year2 != i)
{
nSumOfDays += IsLeepYear(i) + 365;
continue;
}
else
{
nSumOfDays += DaysOfYear(year2, month2, date2);
}
}
nSumOfDays = nSumOfDays - DaysOfYear(year1, month1, date1);
printf("总天数为:%d/r/n", nSumOfDays);
printf("出生日是当年的第%d天/r/n", DaysOfYear(year1, month1, date1));
printf("计算日是当年的第%d天/r/n", DaysOfYear(year2, month2, date2));
State(nSumOfDays);
}
- 日期计算
- 计算日期
- 日期计算
- 日期计算
- 日期计算
- 日期计算
- 日期计算
- 计算日期
- 日期计算
- 日期计算
- 日期计算
- 计算日期
- 日期计算
- 日期计算
- 日期计算
- 日期计算
- 日期计算
- 日期计算
- 为什么大家觉得Symbian开发比较难?
- 最详细的SQL注入相关的命令整理
- 基数排序
- Liferay SSO CAS 集成
- Configure OpenVPN on Ubuntu
- 计算日期
- 我对理发师问题独到的理解
- 没有CSDN的日子
- PKU 1597 Uniform Generator
- 为何传统自动化测试工具会扼杀敏捷?
- SQL SERVER索引维护与事务日志大小的关系
- 什么是云计算
- AOP原理及在架构设计中的应用
- URLTester一个URL测试工具