蓝桥杯 C语言星系炸弹问题的编程思想。

如题:   星系炸弹


  在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。
每个炸弹都可以设定多少天之后爆炸。
比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。
有一个贝塔炸弹,2014年11月9日放置,定时为1000天,请你计算它爆炸的准确日期。


请填写该日期,格式为 yyyy-mm-dd  即4位年份2位月份2位日期。比如:2015-02-19

请严格按照格式书写。不能出现其它文字或符号。


这是蓝桥杯大学生B组的第二题是一道填空题,可能有很多方法得到答案,但是我还是忍不住用编程的方法解决了这个问题,代码比较拙劣 凑合这看一下。

整体思想就是,先判断 2014年以及之后的几年是不是闰年, 然后1000天一天一天的加,没加一次判断一次月份,和日数,如果日数大于了30或者31天 且月份小于12 月份加1,否则年份加1,年和月 每一次加1 日数都要置为1, 如果是2月份 就要判断当前年是不是闰年 闰年 2月份就是 29天 否则 就是28天,最后求出结果。

如果月份

C语言源码 :

#include<stdio.h>
int main(){
int y=2014,m=11,d=9;
int days[5];
int j=0;
int sumday=1000;
for(y;y<2019;y++){
if((y%4==0&&y%100!=0)||y%400==0){
days[j++]=366;
}
else days[j++]=365;}
j=0,y=2014;
while(sumday--){


if(m==1||m==3||m==5||m==7||m==8||m==10||m==12){
if(d<31){
d+=1;
}
else {
if(m<12){
m+=1;
d=1;
}
else{
y++;
m=1;
d=1;
}
}
}
else if(m==4||m==6||m==9||m==10||m==11){

if(d<30){
d+=1;
}
else {
if(m<12){
m+=1;
d=1;
}
else{
y++;
m=1;
d=1;
}
}

}
else if(m==2){
int sum=0;
if(y==2014){
sum=days[0];
}
if(y==2015){
sum=days[1];
}
if(y==2016){
sum=days[2];
}
if(y==2017){
sum=days[3];
}
if(y==2018){
sum=days[4];
}
if(sum==365){
if(d<28){
d+=1;
}
else{
m+=1;
d=1;
}
}
else{
if(d<29){
d+=1;
}
else{
m+=1;
d=1;
}
}

}
}
printf("%d-%02d-%d",y,m,d);
return 0;
}
   


最后结果



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值