每日刷题(十三)
蓝桥杯第六届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