用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)判断number的各位数字立方和是否等于它本身,如is(121)返回值0,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
#include<stdio.h>
#include<math.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;
}
Private Sub Form_Load()
Show
Print vbCrLf;
Print vbCrLf;
Dim a As Integer, b, c
For i = 100 To 999
a = i \ 100
b = (i Mod 100) \ 10
c = i Mod 10
If (a ^ 3 + b ^ 3 + c ^ 3 = i) Then
Print Tab(10); i & "=" & a & "^3+" & b & "^3+" & c & "^3"
End If
Next i
End Sub
Dim a%, b%, c As Integer
For a = 1 To 9
b = 0
Do While b <= 9
c = 0
Do Until c > 9
If a ^ 3 + b ^ 3 + c ^ 3 = 100 * a + 10 * b + c Then
Print "水仙花数"; 100 * a + 10 * b + c
End If
c = c + 1
Loop
b = b + 1
Loop
Next a
End Sub
我的文库有好多呢。
我的输出与题目有些出入。
Dim i, j, m, n As Integer
For n = 100 To 999
i = n \ 100
j = (n Mod 100) \ 10
m = n Mod 10
If i ^ 3 + j ^ 3 + m ^ 3 = n Then
Print n; "="; i; "^3+"; j; "^3+"; m; "^3"
End If
Next n
End Sub
因为上面的代码是VB6的,在VB.Net中Print方法不好用了,VB.Net不支持了。
改成一个Label控件,并把控件AutoSize属性设为False,再拉大点。
Label1.Text = Label1.Text + (n & "=" & i & "^3+" & j & "^3+" & m & "^3") + vbCrLf