蓝桥杯2015第六届C语言B组省赛习题题解——习题B.星系炸弹

每日刷题(十三)

蓝桥杯第六届C语言B组省赛习题

习题B:星系炸弹

在这里插入图片描述
这题主要考察的就是闰年平年的判断,可以对比这个博客中的内容
蓝桥杯2018第九届C语言B组省赛习题题解——习题A.第几天
这个题其实可以手算,也可以用编程实现,这里我展示一下C代码

#include<stdio.h>

int Feb(int y)
{
	int F = 0;							//二月天数 
	if(y % 4 == 0 && y % 100 != 0)		//普通闰年 
		F = 29;
	else if(y % 400 == 0)				//世纪闰年 
		F = 29;
	else
		F = 28;							//平年		
		
	return F;
}

int month(int m, int y, int d)				 
{
	int days = 0;				//当月还差的天数 
	if(m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12)
		if(d != 1)				//判断起始时间是月初一号 
		{
			days = 31 - d;
			d = 1;
		}			
		else
			days = 31;
	if(m == 4 || m == 6 || m == 9 || m == 11)
		if(d != 1)
		{
			days = 30 - d;
			d = 1;
		}			
		else
			days = 30;
	if(m == 2)
		if(d != 1)
		{
			days = Feb(y) - d;
			d = 1;
		}
		else
			days = Feb(y);	
			
				
	return days;
}


int main()
{
	int year = 2014, sum = 0, Feb = 0, months = 11, days = 0;
	sum += month(months,year,9);
	months ++;
	for(; months <= 12; months++)
	{
		if(sum + month(months,year,1) > 1000)
		{
			days = 1000 - sum;
			break;
		}
		sum += month(months,year,1);
		if(months == 12)
		{
			months = 0;
			year++;
		}
			
	}
	if(months < 10 && days >= 10)
		printf("%d-0%d-%d\n",year, months, days);
	if(days < 10 && months >= 10)
		printf("%d-%d-0%d\n",year, months, days);
	if(months < 10 && days < 10)
		printf("%d-0%d-0%d\n",year, months, days);
	
	return 0;
} 

运行结果是
在这里插入图片描述
所以它的爆炸日期是2017-08-05

如果喜欢我的文章,请记得三连哦,点赞关注转发,欢迎各位志同道合的IT友人在评论区讨论交流,感谢您的支持,下期更精彩!!!

发布了40 篇原创文章 · 获赞 7 · 访问量 3122

猜你喜欢

转载自blog.csdn.net/qq_44631615/article/details/104339470