使用CSharp中的迭代器实现从键盘输入的数以内所有的水仙花数
时间: 2024-06-10 07:08:43 浏览: 82
Sure, 迭代器是 CSharp 中提供的一种便捷的循环方式。为了实现从键盘输入的数以内所有的水仙花数,我们可以先用 Console.ReadLine() 读取输入的数。如果输入的不是数字,需要对输入类型进行校验并提示用户重新输入。一旦我们得到了输入的数,就可以开始循环判断每个数是否为水仙花数了。在循环过程中,我们需要计算当前数每一位数的次方和是否等于原数本身。如果相等,就是一个水仙花数,可以在迭代器中返回。
下面是实现代码:
```csharp
using System;
using System.Collections;
namespace NarcissisticNumbers
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入一个数字:");
int n;
while (!int.TryParse(Console.ReadLine(), out n))
{
Console.WriteLine("输入错误,请重新输入:");
}
foreach (int num in NarcissisticNumberGenerator(n))
{
Console.Write($"{num} ");
}
}
static IEnumerable NarcissisticNumberGenerator(int n)
{
for (int i = 1; i <= n; i++)
{
int num = i;
int sum = 0;
int digits = (int)Math.Log10(num) + 1;
while (num != 0)
{
int digit = num % 10;
sum += (int)Math.Pow(digit, digits);
num /= 10;
}
if (sum == i)
{
yield return i;
}
}
}
}
}
```
中文:以上是 CSharp 实现从键盘输入的数以内所有的水仙花数的代码,希望对你有所帮助♪(^∀^●)ノシ
阅读全文