c#while实现:输出所有三位数中的水仙花数(水仙花数是三位数,该三位数的个位、十位、百位的立方和等于这个数。例如153=1的立方+5的立方+3的立方)
时间: 2024-03-21 21:43:58 浏览: 81
好的,这是一个简单的问题。可以使用 C# 的 while 循环语句和条件语句实现。代码如下所示:
```csharp
int num = 100;
while (num < 1000)
{
int i = num / 100; // 获取百位数
int j = (num / 10) % 10; // 获取十位数
int k = num % 10; // 获取个位数
if (num == i * i * i + j * j * j + k * k * k)
{
Console.WriteLine(num); // 输出水仙花数
}
num++;
}
```
这段代码中,我们定义了一个变量 `num`,并赋值为 100,表示从 100 开始遍历所有的三位数。然后使用 while 循环语句,当 `num` 不超过 999 时,执行循环体内的代码。
在循环体内,我们使用数学方法获取了 `num` 的百位数、十位数和个位数,并根据水仙花数的定义进行判断。如果 `num` 是水仙花数,则输出它。最后,将 `num` 自增 1,继续下一个循环,直到遍历完所有的三位数。
希望这个回答能够解决你的问题。
相关问题
3位“水仙花数”是指一个三位整数,其各位数字的3次方和等于该数本身。输入一个三位整数并判断不小于该数的最小水仙花数,并给出判断结果。用C#编写代码
以下是C#代码实现:
```csharp
using System;
class Program {
static void Main(string[] args) {
Console.Write("请输入一个三位整数:");
int num = int.Parse(Console.ReadLine());
int n = num + 1;
while (true) {
int a = n / 100; // 百位数
int b = (n / 10) % 10; // 十位数
int c = n % 10; // 个位数
if (n == a * a * a + b * b * b + c * c * c) {
Console.WriteLine($"{n}是水仙花数");
break;
}
n++;
if (n >= 1000) {
Console.WriteLine($"不存在不小于{num}的水仙花数");
break;
}
}
}
}
```
运行结果:
```
请输入一个三位整数:234
370是水仙花数
```
解释:输入的三位整数是234,那么不小于234的最小水仙花数是370。
C#构造方法判断一个数是否是水仙花数
以下是C#构造方法判断一个数是否是水仙花数的代码示例:
```csharp
public class NarcissisticNumber
{
private int number;
public NarcissisticNumber(int num)
{
number = num;
}
public bool IsNarcissistic()
{
int sum = 0;
int temp = number;
int digits = temp.ToString().Length;
while (temp > 0)
{
int digit = temp % 10;
sum += (int)Math.Pow(digit, digits);
temp /= 10;
}
return (sum == number);
}
}
```
在上面的代码中,我们定义了一个名为“NarcissisticNumber”的类,它接受一个整数作为构造函数的参数。我们还定义了一个名为“IsNarcissistic”的公共方法,该方法将判断该数字是否是水仙花数并返回一个布尔值。
在方法中,我们首先计算数字的位数,并在循环中将数字的每个数字的幂加起来。最后,我们检查累加器变量是否等于原始数字,并返回结果。
阅读全文