
正文
vb.net水仙花数 vb求水仙花数代码
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
VB编程,找出所有的“水仙花数”。
这个程序在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
结果如下图:
相关问答
Q1: 用VB编写:找出所有的“水仙花数”。 “水仙花数”是指一个三位数,其各位数字的立方和等于该数本身
代码为:
using System;
using System.Collections.Generic;
using System.Text;
namespace _
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("一重循环判断:");
Console.WriteLine("水仙花数有:");
int i,j, k, l;
for (i = 100; i 1000;i++)
{
j = i / 100;
k = i %100/10;
l = i % 10;
int n = j * j * j + k * k * k + l * l * l;
if (n == i)
Console.WriteLine(n);
}
Console.WriteLine("三重循环判断:");
Console.WriteLine("水仙花数有:");
int q, w, e, r;
for(q=1;q=9;q++)
for(w=0;w=9;w++)
for (e = 0; e = 9; e++)
{
int s = q * 100 + w * 10 + e;
int t = q * q * q + w * w * w + e * e * e;
if (s == t)
Console.WriteLine(s);
}
}
}
}
扩展资料:
注意事项
自定义函数is(number)判断numbervb.net水仙花数的各位数字立方和是否等于它本身vb.net水仙花数,如is(121)返回值0vb.net水仙花数,is(153)返回值1。 主函数输入两个正整数m和n(m=1, n=1000),输出m-n之间的所有满足各位数字和等于它本身的数。
Input
多组测试数据,每组输入两个正整数m和n(m=1, n=1000)。
Output
输出m-n之间的所有满足各位数字立方和等于它本身的数,空格隔开(最后一个数后无空格)。
Sample Input
1 100
50 200
50 500
Sample Output
1
153
153 370 371 407
#includestdio.h
#includemath.h
int is(int number)
{
int s,sum=0;
while(number!=0)
{
s=number%10;//不断取余,直至为0
sum+=pow(s,3);
number=number//10;不断去尾,直至为0
}
return sum;
}
int main(void)
{
int m,n,k,flag;
while(scanf("%d%d",m,n)!=EOF)
{
flag=1;
for(k=m;k=n;k++)
{
if(k==is(k))
{
if(flag!=0)
{
printf("%d",k);
flag=0;
}
else
printf(" %d",k);
}
}
printf("\n");
}
return 0;
}
Q2: vb 求水仙花数
for i=100 to 999
x=right(cstr(i),1)
y=left(cstr(i),1)
z=mid(cstr(i),2,1)
if i=x^3+y^3+z^3 then print i
next i
Q3: 用VB.net变成找出100~999之间的水仙花数
楼上写的程序vb.net水仙花数,我无语了vb.net水仙花数,要是有这么简单就好了……
下面是我写的程序:
Private Sub Command1_Click()
Dim a%(1 To 100), isprime As Boolean, k%
Static b%
b = 0
Cls
'随机产生100个100到999的数
Print "随机产生的100个数是:"
Randomize
For i = 1 To 100
a(i) = Int(Rnd * 900 + 100)
Print a(i);
If i Mod 10 = 0 Then Print '十个数一行
Next i
'找出素数
Print "其中是素数的数有:"
For i = 1 To 100
If a(i) Mod 2 0 Then '能被2整除的肯定不是素数,故排除这种情况
isprime = True '奇数都有可能是素数,故先假设奇数都是素数
k = 3 '下面是判断a(i)是不是素数的算法,希望你能看懂
Do Until k Sqr(a(i)) Or Not isprime
If a(i) Mod k = 0 Then
isprime = False
Else
k = k + 2
End If
Loop
If isprime = True Or k Sqr(a(i)) Then
b = b + 1 '记录素数的个数
a(b) = a(i) '把素数用新的数组保存起来
Print a(b);
If b Mod 10 = 0 Then Print
End If
End If
Next i
'冒泡排序法
For x = b To 2 Step -1
For y = 1 To x - 1
If a(y) a(y + 1) Then temp = a(y): a(y) = a(y + 1): a(y + 1) = temp
Next y
Next x
'输出排序后的素数
Print "按从大到小排序后的素数:"
For i = 1 To b
Print a(i);
If i Mod 10 = 0 Then Print
Next i
End Sub
运行结果如图所示。
如果还没解决你的问题,可以加我百度HI账号。
Q4: 用vb求1到1000水仙花数的编程方法
所谓的水仙花数(梅花数)是指在三位整数(100到999之间)中,百位数、十位数、个位数的立方和等于它本身,如153=1^3+5^3+3^3。
程序代码如下:
Private Sub Command1_Click()
Dim i As Integer, s As Integer
Dim a As Integer, b As Integer, c As Integer
Print "100到999所有水仙花数(也叫梅花数):";
For i = 100 To 999
a = i \ 100 '取百位数
b = i \10 Mod 10 '或 b = i Mod 100 \10 取十位数
c = i Mod 10 ‘取个位数
s = a ^ 3 + b ^ 3 + c ^ 3 '水仙花数的判断依据
If s = i Then
Print i;
End If
Next i
End Sub
运行结果:
100到999所有水仙花数(也叫梅花数): 153 370 371 407
Q5: VB如何求水仙花数
水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)
可以运用将一个 For...Next 循环放置在另一个 For...Next 循环中,组成嵌套循环来解决水仙花求解问题。
以3位10进制数100-999为例,代码如下:
Private Sub Command1_Click()
Dim i As Long, j As Long, k As Long
Dim s As Long
For i = 1 To 9
For j = 0 To 9
For k = 0 To 9
s = i * 100 + j * 10 + k
If ((i ^ 3) + (j ^ 3) + (k ^ 3)) = s Then
Debug.Print s
End If
Next k
Next j
Next i
End Sub
关于vb.net水仙花数和vb求水仙花数代码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






