VB编程,找出所有的“水仙花数”。
2个回答
展开全部
这个程序在VB中与VC中是有些些不同的,因为VC中当定义每位为整型时,它不会有四舍五入规则的,而VB中则不同。比如:VC中(153/100)%10=1,而VB中它算出来的为2,所以注意这个就可以了。在VB中就先从个位判断,是否超过或等于5,是的话就让它减去0.5,不是的话直接操作。
VB中程序如下:一个按钮,一个标签就可以了。
Dim m As Integer
Dim m1 As Integer
Dim m2 As Integer
Dim m3 As Integer 'm,m1,m2,m3最好是分开定义不然会出现ByRef参数类型不符的错误
Dim str As String
Private Sub Command1_Click()
For m = 100 To 999
m3 = m Mod 10
If m3 >= 5 Then
m2 = (m / 10 - 0.5) Mod 10 '因为当个位数大于5时,m/10会进一位,即十位会比原来的数据多1,所以要把这个四舍五入的位取消五入规则
Else
m2 = (m / 10) Mod 10
End If
If m2 >= 5 Then
m1 = m / 100 - 0.5 '原因同上
Else
m1 = m / 100
End If
If ((cubic(m1) + cubic(m2) + cubic(m3)) = m) Then
str = str + CStr(m) + vbCrLf '把每计算出的数据存到str中,并换行
Label2.Caption = str
End If
Next m
End Sub
Function cubic(data As Integer) As Double
cubic = data * data * data
End Function
结果如下图:
VB中程序如下:一个按钮,一个标签就可以了。
Dim m As Integer
Dim m1 As Integer
Dim m2 As Integer
Dim m3 As Integer 'm,m1,m2,m3最好是分开定义不然会出现ByRef参数类型不符的错误
Dim str As String
Private Sub Command1_Click()
For m = 100 To 999
m3 = m Mod 10
If m3 >= 5 Then
m2 = (m / 10 - 0.5) Mod 10 '因为当个位数大于5时,m/10会进一位,即十位会比原来的数据多1,所以要把这个四舍五入的位取消五入规则
Else
m2 = (m / 10) Mod 10
End If
If m2 >= 5 Then
m1 = m / 100 - 0.5 '原因同上
Else
m1 = m / 100
End If
If ((cubic(m1) + cubic(m2) + cubic(m3)) = m) Then
str = str + CStr(m) + vbCrLf '把每计算出的数据存到str中,并换行
Label2.Caption = str
End If
Next m
End Sub
Function cubic(data As Integer) As Double
cubic = data * data * data
End Function
结果如下图:
展开全部
这个程序在vb中与vc中是有些些不同的,因为vc中当定义每位为整型时,它不会有四舍五入规则的,而vb中则不同。比如:vc中(153/100)%10=1,而vb中它算出来的为2,所以注意这个就可以了。在vb中就先从个位判断,是否超过或等于5,是的话就让它减去0.5,不是的话直接操作。
vb中程序如下:一个按钮,一个标签就可以了。
dim
m
as
integer
dim
m1
as
integer
dim
m2
as
integer
dim
m3
as
integer
'm,m1,m2,m3最好是分开定义不然会出现byref参数类型不符的错误
dim
str
as
string
private
sub
command1_click()
for
m
=
100
to
999
m3
=
m
mod
10
if
m3
>=
5
then
m2
=
(m
/
10
-
0.5)
mod
10
'因为当个位数大于5时,m/10会进一位,即十位会比原来的数据多1,所以要把这个四舍五入的位取消五入规则
else
m2
=
(m
/
10)
mod
10
end
if
if
m2
>=
5
then
m1
=
m
/
100
-
0.5
'原因同上
else
m1
=
m
/
100
end
if
if
((cubic(m1)
+
cubic(m2)
+
cubic(m3))
=
m)
then
str
=
str
+
cstr(m)
+
vbcrlf
'把每计算出的数据存到str中,并换行
label2.caption
=
str
end
if
next
m
end
sub
function
cubic(data
as
integer)
as
double
cubic
=
data
*
data
*
data
end
function
结果如下图:
vb中程序如下:一个按钮,一个标签就可以了。
dim
m
as
integer
dim
m1
as
integer
dim
m2
as
integer
dim
m3
as
integer
'm,m1,m2,m3最好是分开定义不然会出现byref参数类型不符的错误
dim
str
as
string
private
sub
command1_click()
for
m
=
100
to
999
m3
=
m
mod
10
if
m3
>=
5
then
m2
=
(m
/
10
-
0.5)
mod
10
'因为当个位数大于5时,m/10会进一位,即十位会比原来的数据多1,所以要把这个四舍五入的位取消五入规则
else
m2
=
(m
/
10)
mod
10
end
if
if
m2
>=
5
then
m1
=
m
/
100
-
0.5
'原因同上
else
m1
=
m
/
100
end
if
if
((cubic(m1)
+
cubic(m2)
+
cubic(m3))
=
m)
then
str
=
str
+
cstr(m)
+
vbcrlf
'把每计算出的数据存到str中,并换行
label2.caption
=
str
end
if
next
m
end
sub
function
cubic(data
as
integer)
as
double
cubic
=
data
*
data
*
data
end
function
结果如下图:
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询