蓝桥杯星系炸弹C代码实现


                                        蓝桥——星系炸弹


在X星系的广袤空间中漂浮着许多X星人造“炸弹”,每个炸弹都可以设定多少天之后爆炸。比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。

输入

输入为炸弹放置日期(格式为 yyyy-mm-dd)及定时天数(整型)。

输出

输出为爆炸的准确日期(格式为 yyyy-mm-dd);请严格按照格式书写,不能出现其它文字或符号。

注意:年为4位整数,月为两位整数,日为两位整数,例如2016年4月7日表示为:2016-04-07

样例输入

 
 
1999-9-9 800

样例输出



2001-11-17




题目思路并不复杂,直接上代码:


#include<stdio.h>
#include<string.h>
int judgeyear(int year);
int main()
{
	int year,mouth,day,num;
	scanf("%d-%d-%d",&year,&mouth,&day);
	scanf("%d",&num);
	while(num!=0)
	{
		while(1)
		{
			if(mouth>2)
			{
				if(judgeyear(year+1))  
				{
					if(num>=366)
					{
						num-=366;
						year++;
					}
					else  break;
				} 
				else 
				{	
					if(num>=365)
					{
						num-=365;
						year++;
					}
					else  break;	
				}				
			}
			else 
			{
				if(judgeyear(year))  
				{
					if(num>=366)
					{
						num-=366;
						year++;
					}
					else  break;
				} 
				else 
				{	
					if(num>=365)
					{
						num-=365;
						year++;
					}
					else  break;	
				}	
				
			}
		
		}
		day++;
		num--;
		if(mouth==1||mouth==3||mouth==5||mouth==7||mouth==8||mouth==10)
		{
			if(day>31)
			{
				mouth++;
				day=1;	
			}
		}
		else if(mouth==2)
		{
			if(judgeyear(year))
			{
				if(day>29)  
				{
					mouth++;
					day=1;	
				}
			}
			else 
			{
				if(day>28)  
				{				 
					mouth++;
					day=1;
				} 
			
			}
		}
		else if(mouth==12)
		{
			if(day>31)
			{
				year++;
				mouth=1;
				day=1;
			}
		}
		else
		{
			if(day>30)
			{
				mouth++;
				day=1;
			}
		}	
	}
	if(mouth<10&&day>=10)
		printf("%d-0%d-%d",year,mouth,day);
	else if(mouth>=10&&day<10)
		printf("%d-%d-0%d",year,mouth,day);
	else  if(mouth<10&&day<10)
		printf("%d-0%d-0%d",year,mouth,day);
	else 
		printf("%d-%d-%d",year,mouth,day);
	return 0;
}

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




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值