早教吧作业答案频道 -->其他-->
VB求守形数守形数即a^2=xxa如5^2=25,25^2=625题目是求1到2000的守形数,我编写了程序,可是结果只有1,5,6,为什么?代码PrivateFunctionfact(n%)AsBooleanDimm#,datam=n*ndata=mMod10Ifdata=nThenfact=TrueElsefa
题目详情
VB 求守形数
守形数即 a^2=xxa 如5^2=25,25^2=625
题目是求1到2000的守形数,我编写了程序,可是结果只有1,5,6,为什么?
代码
Private Function fact(n%) As Boolean
Dim m#,data
m = n * n
data = m Mod 10
If data = n Then
fact = True
Else
fact = False
End If
End Function
Private Sub Command1_Click()
Dim i%,k%
For i = 1 To 100
m = fact(i)
If m = True Then
k = k + 1
Print Tab(((k - 1) Mod 4) * 13); i;
Else
m = False
Print "";
End If
Next i
End Sub
守形数即 a^2=xxa 如5^2=25,25^2=625
题目是求1到2000的守形数,我编写了程序,可是结果只有1,5,6,为什么?
代码
Private Function fact(n%) As Boolean
Dim m#,data
m = n * n
data = m Mod 10
If data = n Then
fact = True
Else
fact = False
End If
End Function
Private Sub Command1_Click()
Dim i%,k%
For i = 1 To 100
m = fact(i)
If m = True Then
k = k + 1
Print Tab(((k - 1) Mod 4) * 13); i;
Else
m = False
Print "";
End If
Next i
End Sub
▼优质解答
答案和解析
首先你判断守型数的那个函数是错的,你只判断了N平方数的最后一位跟N是否一样,当然只能找个个位数的守型数了.因为当N位数为两位以上时(比如25) 他的平方数是625,在你拿625的最后一位5跟他比较当然不一样.正确的应该是取最后2位(2即25的位数).正确的函数应该是:
Private Function Fact(N As Long) As Boolean
Dim M
M = N * N
If Right(CStr(M),Len(CStr(N))) = CStr(N) Then Fact = True
End Function
然后你command1里的代码也要改改,一方面不够简洁,还有你是找1-2000内的,而你代码却是1-100范围的守型数.
Private Sub Command1_Click()
Dim I As Long,K As Integer
For I = 1 To 2000
If Fact(I) = True Then
K = K + 1
Print I,
If K Mod 4 = 0 Then Print
End If
Next I
End Sub
Private Function Fact(N As Long) As Boolean
Dim M
M = N * N
If Right(CStr(M),Len(CStr(N))) = CStr(N) Then Fact = True
End Function
然后你command1里的代码也要改改,一方面不够简洁,还有你是找1-2000内的,而你代码却是1-100范围的守型数.
Private Sub Command1_Click()
Dim I As Long,K As Integer
For I = 1 To 2000
If Fact(I) = True Then
K = K + 1
Print I,
If K Mod 4 = 0 Then Print
End If
Next I
End Sub
看了VB求守形数守形数即a^2=x...的网友还看了以下:
已知实数t满足关系式loga(t/a^3)=loga(y/a^3)(a>0且a≠1)(1)令t=a 2020-04-26 …
电路复频域分析请教:象函数为I(S)=1/(S+1),拉氏逆变换原函数为i(t)=e^(-t)ε( 2020-06-02 …
r(A*A^T)=r(A^T*A)=r(A)证明方程AX=0与A^TAX=0同解AX=0显然有A^ 2020-06-10 …
下列关于双链DNA的叙述错误的是()A.若一条链上A和T的数目相等,则另一条链上的A和T数目也相等 2020-06-26 …
下列关于双链DNA的叙述,不正确的是A.若一条链上A和T的数目相等,则另一条链上的A和T数目也相等 2020-06-26 …
我发现傅里叶变换的巨大错误!先看两条结论:1.x(t)*h(t)的傅里叶级数系数为T·a(k)·b 2020-07-13 …
数列an满足递推式(a(n+2))*an-(a(n+1))^2=(t^n)*(t-1),a1=1, 2020-08-01 …
函数周期问题设f(x)在R上有定义,任意R上的x,有f(x+T)=kf(x)(k,t为常数,T>0) 2020-11-16 …
一平稳随机过程X(t),自相关函数为R(T),a为常数,试以X(t)的自相关函数表示随机过程Y(t) 2020-12-20 …
设A为实数,记函数f(x)=a√(1-x^2)+√(1+x)+√(1-x)的最大值为g(a)1.设t 2020-12-31 …