本文主要是介绍c语言计算一个日期的下一天后N天后的日期,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
http://blog.sina.com.cn/s/blog_6be3556a0101g87u.html
方法一:
---------------------------------------------------------------
#include
#include
struct Date
{
int year;
int month;
int day;
};
int leap(int year)
{
if(year%4==0&&year0!=0 || year@0==0)
return 1;
else return 0;
}
int days(int year ,int month)
{
if(leap(year)&&month==2)
return 29;
if(month==2)
return 28;
if(month==4 || month==6 || month==9 || month==11)
return 30;
return 31;
}
struct Date nextDay(struct Date d)
{
if(d.day==days(d.year,d.month))
{
d.day = 1;
d.month=(d.month)+1;
if(d.month==1) d.year++;
}
else d.day++;
return d;
}
struct Date nextNDay(struct Date d,int n)
{
while(n--)
{
d = nextDay(d);
}
return d;
}
void output(struct Date x)
{
printf("%d-d-d\n",x.year,x.month,x.day);
}
int main()
{
struct Date x,y,z;
printf("请输入一个日期,年 月 日:\n");
scanf("%d%d%d",&x.year,&x.month,&x.day);
printf("当前输入的日期是:\n");
output(x);
y = nextDay(x);
printf("它的下一天是:\n");
output(y);
int n;
printf("请输入一段时间>(天):");
scanf("%d",&n);
z = nextNDay(x,n);
output(z);
return 0;
}
---------------------------------------------------------------
方法二:
---------------------------------------------------------------
#include
#include
struct date
{
int year; //定义天
int month; //定义月
int day; //定义天
};
struct date next_day(struct date in); //声明计算下一天的函数
struct date nextN_day(struct date in, int x); //声明计算N天后日期的函数
void print(struct date in); //声明输入日期的函数
int leap(int x); //声明闰年判断的函数
int main()
{
struct date d;
struct date r;
struct date r1;
int n;
int i;
printf("请输入一个 年 月 日:\n");
scanf("%d %d %d",&d.year, &d.month, &d.day);
printf("您输入的日期是:\n");
print(d);
printf("它的下一天是:\n");
r = next_day(d); //计算下一天日期
print(r);
printf("请输入一个时间长度>(天):");
scanf("%d",&n); //接收天数n
printf("经过%d天是:\n",n);
r1 = nextN_day(d,n); //计算n天后的日期
print(r1);
return 0;
}
int leap(int x)
{
if(x%4 == 0 && x0 != 0 || x@0 == 0) //定义函数判断是否为闰年
return 1; //闰年返回1
else
return 0; //平年返回0
}
struct date next_day(struct date in)
{
int m_day; //定义m_day记录每月天数
struct date r;
switch(in.month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: m_day = 31; break;
case 2: {
if(leap(in.year)) m_day = 29;
else m_day = 28;
}
break; //二月分别按闰年平年计算
case 4:
case 6:
case 9:
case 11: m_day = 30; break; //确定每一个月的天数
}
if(in.day+1 <= m_day)
{
r.year = in.year;
r.month = in.month;
r.day = in.day+1; //如果输入的日期加1不最后一天,那么日期加1
}
if(in.day+1 > m_day && in.month != 12)
{
r.year = in.year;
r.month = in.month+1;
r.day = 1; //如果输入的日期是当月最后一天,而且不是12月,则月份加1,日置为1
}
if(in.month == 12 && in.day == 31)
{
r.year = in.year+1;
r.month = 1;
r.day = 1; //如果输入日期是当年最后一天,则年数加1,月和日置为1
}
return r;
}
struct date nextN_day(struct date in, int x)
{
struct date re = in;
while(x--)
{
re = next_day(re); //通过计算x次下一天的下一天,而最终返回x天后的时间值
}
return re;
}
void print(struct date in)
{
printf("%d-d-d\n",in.year,in.month,in.day); //定义时间输出格式控制函数
}
这篇关于c语言计算一个日期的下一天后N天后的日期的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!