蓝桥杯算日期VB通解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_31736627/article/details/62887815
随便打开一个目录, 右键-新建文本文件
重命名 xxx.vbs (需要显示后缀名)
vbs是VB Script缩写... 
因为VB中有2个很简单的时间函数datediff(时间间隔)和dateadd(时间相加)
所以日期的填空题能1分钟内做完
=========================我叫分割线=========================
DateDiff(interval, date1, date2 [,firstdayofweek[, firstweekofyear]])
DateAdd(interval, number, date)
interval 参数 
yyyy 年 
q 季度 
m 月 
y 一年的日数 
d 日 
w 一周的日数 
ww 周 
h 小时 
n 分钟 
s 秒 
=========================我叫分割线=========================
2015年4月11日省赛C/C++的B组第2题
星系炸弹


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


请填写该日期,格式为 yyyy-mm-dd 即4位年份2位月份2位日期。比如:2015-02-19
请严格按照格式书写。不能出现其它文字或符号。
=========================我叫分割线=========================
msgbox dateadd("d",1000,"2014-11-9")
'vb中注释是单引号...msgbox意思是MessageBox 就是弹出对话框
'vb中不需要分号结尾, 函数调用 直接可以用 [func 参数]
'更规范 稍微符合C语言的...Call Msgbox("xxxxx")
=========================我叫分割线=========================
就这么一行, 然后保存, 运行这个vbs

=========================我叫分割线=========================
答案出来了...这个小技巧分享给大家啦. 不用自己看日历数(汗||)或者写代码了~
因为3次碰到日期相关的了...所以这个方法还是感觉挺实用的~
能争取到大概20分钟的时间(新技能get√)






例二:

题目描述:


    大数学家高斯有个好习惯:无论如何都要记日记。

    他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210

    后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?

    高斯出生于:1777年4月30日。
    
    在高斯发现的一个重要定理的日记上标注着:5343,因此可算出那天是:1791年12月15日。

    高斯获得博士学位的那天日记上标着:8113   

    请你算出高斯获得博士学位的年月日。


提交格式:

yyyy-mm-dd, 例如:1980-03-21


算法思路:

首先,我们计算出高斯出生的那一天到年末的时间t1,我们用总的天数t减去t1,这样就可以避免t1对我们以后的计算照成的麻烦;

然后,我们对接下来的每年相加,直到得到第一个天数大于t的年份,则该年份就是我们要求出的年份,按照同样的方法求出月份;

天数就是t减去以上的时间剩下的结果,还要注意输出结果中当天数和月份为个位数的时候,不是直接输出,而是前面带有0,因此应对输出进行控制。

注意:一个坑的问题就是自己没有想到出生的那一天已经是第一天了

'这题因为是第多少天 所以需要-1
'vb中分割字符串用& vbCrLf相当于C/C++中的\n或者endl
msgbox "5343:" & dateadd("d",5343-1,"1777-4-30") & vbCrLf & "8113:" & dateadd("d",8113-1,"1777-4-30")

猜你喜欢

转载自blog.csdn.net/qq_31736627/article/details/62887815