对指定日期计算出N天后的日期问题

								    指定日期计算出N天后的日期问题
问题描述:先输入起始日期,再输入任意天数n,求n天后的日期。
源代码一(参考http://zhidao.baidu.com/linkurl=0BxF0QvTywzuRkLUFj6ulUQKYqp97CjUOZBV1UUmXoCkS9HNyOT2axHkcOsRLi-xlB_JE6KvdglSD23S35EUXK
#include<stdio.h>
<span style="font-family:SimHei;font-size:14px;"><strong>int main()
{
   int year,month,day;
   int leapyear=0;
   int daytime=0;
   int sum;
   static int month_date[12]={31,28,31,30,31,30,31,31,30,31,30,31};
   printf("请输入日期:");
   scanf("%d-%d-%d",&year,&month,&day);
   printf("请输入天数:");
   scanf("%d",&daytime);
   sum=daytime+day;
   do
   {
	   	if(month==2)
	   	{
	   		month_date[month-1]+=leapyear;

	   	}
	   	if(sum>month_date[month-1])
	   	{
	   		sum-=month_date[month-1];
	   		month++;
	   		if(month==13)
	   		{
	   			year++;
	   			if(year%400==0||(year%100!=0&&year%4==0))
	   			{
	   				leapyear=1;
	   			}
	   			else
	   			{
	   				leapyear=0;
	   			}
	   			month=1;
	   		}
	   	}
   } while(sum>month_date[month-1]);
   day=sum;
   printf("\n第%d天后是%d-%d-%d",daytime,year,month,day);
   return 0;
}</strong></span><span style="font-family: arial, 'courier new', courier, 宋体, monospace; font-size: 14px;">
</span>
<span style="font-family:SimHei;font-size:14px;"><strong>
</strong></span>

源代码二(自己写的)


#include<stdio.h>
int year,month,day,days,years;
int a[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};

int ru(int year)
{
	if(year%400==0||year%4==0&&year%100!=0)
		return 1;
	else
		return 0;
}

void rest(int days)
{
	int i;
	for(i=1;i<=12;i++)
	{
			if(days-a[i]>0)
				days=days-a[i];
			else
			{
			   	month=i;
				day=days;
			    break;
			}
	}
     if(i-1==12)
	 {
		 year=year+1;
		 if(!ru(year))
			 days++;
		 rest(days);
	 }
	 year+=years;
}

int main()
{
	int i;
	while(scanf("%d%d%d%d",&year,&month,&day,&days)==4)
	{
		days=days-(a[month]-day);
		if(!ru(year)&&month<=2)
			days=days+1;
		for(i=month+1;i<=12;i++)
		{
			if(days>a[i])
				days=days-a[i];
			else
				break;
		}
		if(i-1==12)
		{
			printf("%d\n",days);
			year++;
			years=0;
			while(days>=366)
			{
			   days=days-366;
			   years++;
			}
			for(i=1;i<=years;i++)
			{
				if(!ru(year+i))
					days++;
			}
			rest(days);
		}
		else
		{
				month=i;
				day=days;
		}

		printf("%d-%d-%d\n",year,month,day);
	}
	return 0;
}
				
时间: 2024-10-23 12:16:31

对指定日期计算出N天后的日期问题的相关文章

根据日期计算出周一和周日

http://stackoverflow.com/questions/2821035/c-sharp-get-start-date-and-last-date-based-on-current-date DateTime baseDate = DateTime.Today; var today = baseDate; var yesterday = baseDate.AddDays(-1); var thisWeekStart = baseDate.AddDays(-(int)baseDate.

SQL Server日期计算

通常,你需要获得当前日期和计算一些其他的日期,例如,你的程序可能需要判断一个月的第一天或者最后一天.你们大部分人大概都知道怎样把日期进行分割(年.月.日等),然后仅仅用分割出来的年.月.日等放在几个函数中计算出自己所需要的日期!在这篇文章里,我将告诉你如何使用DATEADD和DATEDIFF函数来计算出在你的程序中可能你要用到的一些不同日期. 在使用本文中的例子之前,你必须注意以下的问题.大部分可能不是所有例子在不同的机器上执行的结果可能不一样,这完全由哪一天是一个星期的第一天这个设置决定.第一

用Java计算某个日期100天后的日期

用Java计算日期时间,首先考虑到时间类,Java中提供的和时间日期相关的类里,有一个Calendar类,可以获取某个时间日期. 计算某个日期100天后的日期,思路如下: 1.先设定时间,例如2017年1月1日: 2.在给定日期的天数上增加100: 具体代码如下: 1 /* 2 * 1.先给定一个时间,例如2017年1月1日 3 */ 4 Calendar cld = Calendar.getInstance(); 5 cld.set(Calendar.YEAR, 2017); 6 cld.se

c#控制台应用程序-“进入指定日期检查出星期几”

这涉及一个算法: 基姆拉尔森计算公式 W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1) mod 7 在公式中d表示日期中的日数.m表示月份数.y表示年数. 注意:在公式中有个与其它公式不同的地方: 把一月和二月看成是上一年的十三月和十四月,例:假设是2004-1-10则换算成:2003-13-10来代入公式计算. 代码例如以下: Console.WriteLine("**************************"); Console.WriteL

编程题:用函数实现,用户输入年月日,来计算出该日期为当年第几天?

#include<stdio.h> /*函数is_leap_year()的返回值是判断该年是否闰年*/ int is_leap_year(int year) { int leap; if(year%4==0&&year%100!=0||year%400==0) leap=1; else leap=0; return leap; } /*函数len_of_month()的返回值为某年year的某月month的天数*/ int len_of_month(int year,int m

Python计算出给定的时间段的具体日期列表-大全

由于工作中经常用到关于用户自定义时间,来进行后台数据的查询,特意整理了一下工作中常用的到的关于时间列表的一个函数,可以计算出某一年中的具体哪个周的开始和结束日期,某个周的具体日期列表(2015年38周),自定义时间段的具体日期列表(20150901-20151010) 1.计算周的日期函数.包含某一周开始.结束日期,某一周的详细日期列表 import datetime def allweeks(week):     "计算一年内所有周的具体日期"     _week = int(wee

根据周几计算出月份总年中所有此日的日期值

/// <summary> /// 根据年月获取所有周几 /// </summary> /// <param name="y">年</param> /// <param name="m">月份字符串</param> /// <param name="week">周几字符串(0:—....6:日)</param> /// <returns>时

输入年月日计算出是该年的第多少天

插件和工具介绍内容均收集于网络,太多了就不一一注明了,在此谢过! 1.Charles 为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析.Charles通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析.一个可查看所有HTTP和SSL/HTTPS流量的工具.这款工具对于你测试和服务器端进行交互的应用非常有用 2.xScope xScope带有六种不同的工具,帮助每一个设计者快速.精确的完成工作,这些工具功能灵活.强大,包括∶量

iOS学习笔记37-时间和日期计算

一.时间和日期计算 我们在应用开发中,时常需要和时间打交道,比如获取当前时间,获取两个时间点相隔的时间等等,在iOS开发中与时间相关的类有如下几个: 1. NSDate:表示一个绝对的时间点 2. NSTimeZone:时区信息 3. NSLocale:本地化信息 4. NSDateComponents:一个封装了具体年月日.时秒分.周.季度等的类 5. NSCalendar:日历类,它提供了大部分的日期计算接口 6. NSDateFormatter:用来在日期和字符串之间转换 二.NSDate