星系炸弹(2015年蓝桥杯省赛第2题)

/*
在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。
每个炸弹都可以设定多少天之后爆炸。
比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。
有一个贝塔炸弹,n年y月r日放置,定时为t天,请你计算它爆炸的准确日期并
按 yyyy-mm-dd格式输出,? 即4位年份2位月份2位日期。比如:2015-02-19
【数据范围】1950<=y<=2050 , 0< t < 1000
【输入说明】
输入为两行,第一行为3个整数,分别表示起始时间的年、月、日,之间用空格分隔。
第二行为定时的天数。
【输入样例】
2015 1 1
15
【输出样例】
2015-01-16
*/
#include<stdio.h>
struct rq
{
 int nian;
 int yue;
 int ri; 
};
void qiu_jqri( struct rq * , int );//求精确日期
void qiu_det( struct rq * );//求第二天
void qiu_dy( struct rq * ); //大月
void qiu_xy( struct rq * ); //小月
void qiu_nd( struct rq * );//年底
void qiu_ey( struct rq * );//二月
int main(void)
{
 struct rq riqi ;
 scanf("%d", &riqi.nian );
 scanf("%d", &riqi.yue );
 scanf("%d", &riqi.ri );
 int bzsj ;
 scanf("%d", &bzsj);
 qiu_jqri( &riqi ,bzsj);
 return 0;
}
void qiu_ey( struct rq * riqi)
{
 if( riqi->ri == 28 + (riqi->nain % 4 == 0 && riqi->nain % 100 != 0 || riqi->nain % 400 == 0 ) )
 {
  riqi->yue += 1 ;
  riqi->ri = 1 ;
  return ;
 }
 riqi->ri += 1 ;
}
void qiu_nd( struct rq * riqi)
{
 if( riqi->yue == 12 && riqi->ri == 31 )
 {
  riqi->nain += 1 ;
  riqi->yue = 1 ;
  riqi->ri = 1 ;
  return ;
 }
 p_ri += 1 ;
}
void qiu_xy( struct rq * riqi)
{
 if( riqi->ri == 30 )
 {
  riqi->yue += 1 ;
  riqi->ri = 1 ;
  return ;
 }
 riqi->ri += 1 ;
}
void qiu_dy( struct rq * riqi)
{
 if( riqi->ri == 31 )
 {
  riqi->yue += 1 ;
  riqi->ri = 1 ;
  return ;
 }
 riqi->ri += 1 ;
}
void qiu_det( struct rq * riqi )
{
 switch( riqi->yue )
 {
  case 1:
  case 3: 
  case 5: 
  case 7: 
  case 8: 
  case 10:
    qiu_dy( riqi->yue , riqi->ri );
    break ;
  case 4: 
  case 6: 
  case 9: 
  case 11:
    qiu_xy( riqi->yue , riqi->ri );
    break ;
  case 12:
    qiu_nd( riqi->nain , riqi->yue , riqi->ri );
    break ;
  case 2:
     qiu_ey( riqi->nain , riqi->yue , riqi->ri );  
 }
}
void qiu_jqri( struct rq * riqi , int bzsj)
{
 while( bzsj -- > 0 )
 {
  qiu_det(riqi);
 }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值