2015-第六届蓝桥杯大赛个人赛省赛(软件类)真题 C大学A组 2.星系炸弹

题目描述

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

请填写该日期,格式为 yyyy-mm-dd 即4位年份2位月份2位日期。比如:2015-02-19
请严格按照格式书写。不能出现其它文字或符号。

分析

挺简单的一道题,用我的基本的数学知识也能用手算出来是 2017-08-05 ,下面是程序练习:

#include<iostream>
using namespace std;
int mon[13]={
    
    31,28,31,30,31,30,31,31,30,31,30,31};
bool leapy(int y){
    
    //判断是否是闰年,返回 bool 值
	if(y%4==0 && y%100!=0 || y%400==0)
		return true;
	return false;
}
int main(){
    
    
	bool isleapy=false;
	int y=2014,m=11,d=9,n=1000;
	for(int i=1;i<=n;i++){
    
    //学会这种一天一天前进判断的思想
		d++;
		if(m==2){
    
    
			if(isleapy){
    
    
				if(d>29){
    
    
					m++;
					d=1;
				}
			}
			else{
    
    
				if(d>28){
    
    
					m++;
					d=1;
				}
			}
		}
		else if(d>mon[m-1]){
    
    
			m++;
			d=1;
		}
		if(m>12){
    
    
			y++;
			m=1;
			isleapy=leapy(y);
		}
	}
	printf("%d-%02d-%02d\n",y,m,d);//不足两位时左侧补 0 补齐
	return 0;
}

输出:2017-08-05

猜你喜欢

转载自blog.csdn.net/interestingddd/article/details/114835313