首先说明什么是回文数:左右对称的自然数称回文数。如121,4224,13731等你所出的题目是求三位数以内的所有回文数,所以只要判断第一位和第三位的数字是否一样,一样则为回文数。代码如下:Private Sub Command1_Click()
创新互联公司专注于肥西网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供肥西营销型网站建设,肥西网站制作、肥西网页设计、肥西网站官网定制、小程序开发服务,打造肥西网络公司原创品牌,更为您提供肥西网站排名全网营销落地服务。
For i = 100 To 999 '100到999循环
a$ = Trim$(Str(i)) '转换成字符串
b = Left$(a$, 1) '截取左边第一位
d = Right$(a$, 1) '截取右边第一位
If b = d Then '判断左右是否相等,相等既是回文数.
T1.Text = T1 + Str(i)
End If
Next
End Sub
2种方法,
1,是使用VB自带的函数StrReverse , 一个数字,被翻过来以后,还和原数字相同,就可以判断是回文数了
2.使用循环,每次都2端取数字,都相同,就可以判断为回文数, 当有不同时,跳出循环,不是回文数
你的i = Len(Str(a))会出问题。
If i 1 Then
Return True
End If
这个返回在if内部,当条件不满足将导致函数无返回。
以下代码仅供参考:
Function IsH(ByVal a As Long) As Boolean
Dim i As Long, j As Long, t As String
t = a.ToString
i = t.Length
Select Case i
Case 1
Return True
Case 2
If Mid(t, 1, 1) = Mid(t, 2, 1) Then Return True Else Return False
Case 3
If Mid(t, 1, 1) = Mid(t, 3, 1) Then Return True Else Return False
Case Else
For j = 1 To i \ 2
If Mid(t, j, 1) Mid(t, i - j + 1, 1) Then Return False
Next j
End Select
Return True
End Function
在数学中也有这样一类数字有这样的特征,成为回文数(palindrome number)。
设n是一任意自然数。若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。例如,若n=1234321,则称n为一回文数;但若n=1234567,则n不是回文数。
注意:
1.偶数个的数字也有回文数124421
如:1234321
Len(s) / 2=7/2=3.5
k = 1,Mid(s, k, 1)=1,Mid(s, (Len(s) - k + 1), 1)=Mid(s, (7 -1 + 1), 1)=1
k = 2,Mid(s, k, 1)=2,Mid(s, (Len(s) - k + 1), 1)=Mid(s, (7 -2 + 1), 1)=2
……
如果k = 3,为假,就退出循环,
If k Len(s) / 2 Then
k=3 Len(s) / 2 =3.5