Board logo

标题: [求助] 求助达人一个编程基础问题 [打印本页]

作者: xslwh    时间: 2021-12-7 14:10     标题: 求助达人一个编程基础问题

期末了,朋友孩子的大学计算机老师出了一道基础题。求助论坛的达人,希望能有完美的解决方案。

题目如下:

输出1000年至9999年所有的对称日,用VBA实现。

(所谓的对称日,就是无论您从左往右念,还是从右往左念,它都是一样的数字!比如:20211202)

作者: xslwh    时间: 2021-12-8 18:59

这两天可能论坛比较卡,服务器不太正常。总是维护,也没人解答。
不过照例还是回复感谢一下。
作者: lichkingrei    时间: 2021-12-10 19:26

语法不知道 不过逻辑大概是这样子:
首先循环遍历1000.1.1-9999.12.31内所有的日期
然后将date转换成字符串
字符串的顺叙格式肯定是  y1 y2 y3 y4  m1 m2 d1 d2     
拆分  if y1=d2 & y2=d1 & y3=m2 & y4=m1
将这天加入一个列表
作者: lichkingrei    时间: 2021-12-10 19:31

有日期函数自然好用
没有日期函数需要自己写的话
第一注意大小月  第二注意闰年的2月
仔细想想总是能写出来的
作者: davidjjjj    时间: 2021-12-11 15:42

这题只要逆向思考就好,因为年没有限制,所以从月日开始解题。表列所有月日,重反排而得其年!所以总共有366个排列(加2月29日),再扣掉年数小于1000的,也就是每月的10,20,30,共扣掉35个(每月3个,二月2个),应剩331个解,不谢。
作者: papapa12306    时间: 2022-1-13 16:14

第一次在LSP聚集地看到有人发编程题~~~没学过VB;解题思路大概就是:

日期拼接->反转字符->利用日期函数校验时间是否合法->如果合法则对称日成立
作者: Fenice123    时间: 2022-5-26 12:57

这题就是类判断回文吗,只不过加上闰年2月特判,还有注意月份,日期的范围,很简单的啊
作者: xh20032633    时间: 2022-5-30 22:43

VBA,好古老的东西啊,还记得毕设就是用这玩意写的,但已经完全想不起来了。
上面有解体思路,其实几个For循环也可以,年一直加,月1~12,日1~31再判断月份就好。
作者: 紫色诱惑    时间: 2022-5-31 20:21

闰年判断出来,就知道月天数,然后判断正序和逆序就可以了,随手写了下用值应该是331个吧
作者: hanyuwolf    时间: 2022-6-3 22:34

用上时间函数和翻转,python里就两行代码的事情
作者: 52024nwahs    时间: 2023-7-16 17:33

提供一个授人以渔的方法  可以使用chatGPT来做类似的工作 要求chatGPT输出代码 和每行对应的功能
不过vba好古老啊
作者: zhenght123    时间: 2023-7-30 11:05

' 定义对称日的函数  
Function IsSymmetric(ByVal dateValue As Date) As Boolean  
    ' 判断日期是否为对称日  
    If DateSerial(Year(dateValue), 1, 1) + DateSerial(Year(dateValue), 2, (Month(dateValue) - 1)) - DateSerial(Year(dateValue), Month(dateValue), 1) + DateSerial(Year(dateValue), Month(dateValue), 2) = dateValue Then  
        IsSymmetric = True  
    Else  
        IsSymmetric = False  
    End If  
End Function  
  
' 循环遍历所有日期并输出对称日  
Sub 测试()
Dim i As Integer  
For i = 1000 To 9999  
    If IsSymmetric(i) Then  
        Debug.Print i  
    End If  
Next i
End Sub
直接将以上代码复制粘贴,然后运行

[ 本帖最后由 zhenght123 于 2023-7-30 11:09(GMT+8) 编辑 ]
作者: jyfc    时间: 2024-12-11 12:23     标题: 回复 1楼 的帖子

vba没学过啊。。。太少见了吧,但是逻辑的话,你可以用4个变量来存年份,比如1000可以是四个变了
作者: zsunlight    时间: 2024-12-14 05:47

只需遍历一年即可,每一天都会有对应的年数




欢迎光临 SiS001! Board - [第一会所 关闭注册] (http://154.84.5.249/bbs/) Powered by Discuz! 7.2