早教吧作业答案频道 -->其他-->
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...的网友还看了以下:
matlab求三次符号方程的解t=a+b-bx-3ax^2+2ax^3;求解x,应该怎么办?小弟不 2020-05-16 …
两个矩阵的规模不符合矩阵乘法的条件时,可以交换这两个矩阵的次序吗有一个3x1的矩阵A,3x3的矩阵 2020-06-10 …
有三个数a,b,c从大到小排序.怎么理解if(a>b){t=a;a=b;b=t;}; 2020-06-12 …
.请教A+B=A(B^T)B+A(A^T)B能写成A+B=AB(B^T)+(A^T)AB.请教A+ 2020-06-12 …
C语言判断题解释。若有宏定义:#defineS(a,b)t=a;a=b;b=t;由于变量t没有定义 2020-07-10 …
定义满足不等式|x-A|<B(A∈R,B>0)的实数x的集合叫做A的B邻域.若a+b-t(t为正常 2020-07-31 …
lnP=A+B/T+C*lnT+D*P/(T^2)求解上面的公式中P的代数式(A,B,C,D,T为 2020-08-01 …
已知幂函数f(x)=(m-1)2xm2-4m+2在(0,+∞)上单调递增,函数g(x)=2x-t, 2020-08-01 …
初高中衔接书上的几道比例线段的题,a/x=t/t+m,a/b=t/t+m+n联立两式,消去t,得x 2020-08-02 …
求解两个矩阵难题第一:设A为n阶实矩阵,且对于任意的x属于R^(n),有x^(T)Ax=0.那么A为 2021-01-04 …