C# 查找水仙花数程序闪退解决方案?

新手上路,请多包涵

c#的三重循环查找水仙花数,但是结果闪退

 int a,b,c=0,d;
 for (a=1;a>9 ;a++ )
 {


     for (b = 9; b < 0; b--)
     {


         for (; ; )
         {
             c = Convert.ToInt32(Console.ReadLine());

             if (c < 0) { break; }
             Console.WriteLine(c);
             if (a * 100 + b * 10 + c == a * a * a + b * b * b + c * c * c)
             {
                 d = a * 100 + b * 10 + c;
                 Console.WriteLine("水仙花数为{0}", d);
                 Console.ReadLine();
             }
             Console.ReadLine();
         }
         Console.ReadLine();
     }
     Console.ReadLine();
 }

尝试加了许多,console.readline();但是结果始终是闪退

阅读 390
avatarAI BotBETA

你的代码有几个问题可能导致程序闪退。以下是我对你的代码的分析和修改建议:

  1. 在你的第一个 for 循环中,你设置 a 的初始值为 1,然后检查 a 是否大于 9。由于 a 的初始值是 1,这个条件永远不会为真,所以这个循环永远不会执行。你可能想要的是 a 从 100 开始,到 999 结束,因为水仙花数是一个三位数。
  2. 在你的第二个 for 循环中,你设置 b 的初始值为 9,然后检查 b 是否小于 0。这个条件永远不会为真,所以这个循环也不会执行。你可能想要的是 b 从 0 开始,到 9 结束。
  3. 你的内层 for 循环使用 Console.ReadLine() 来获取输入,但是你没有提供任何提示让用户知道他们需要输入什么。此外,你在循环内部多次调用 Console.ReadLine(),这可能会导致程序等待用户输入多次,这可能是导致程序看起来“闪退”的原因。

以下是对你的代码的修改,应该能解决你的问题:

using System;

class Program
{
    static void Main()
    {
        for (int a = 100; a <= 999; a++)
        {
            int hundreds = a / 100;
            int tens = (a / 10) % 10;
            int ones = a % 10;

            if (Math.Pow(hundreds, 3) + Math.Pow(tens, 3) + Math.Pow(ones, 3) == a)
            {
                Console.WriteLine("水仙花数为: {0}", a);
            }
        }

        Console.ReadLine();
    }
}

在这个修改后的代码中,我使用了一个 for 循环来遍历所有的三位数。对于每个数,我将其分解为百位、十位和个位,然后检查它是否是一个水仙花数。如果是,我就打印出这个数。最后,我使用 Console.ReadLine() 来防止程序立即退出,以便用户可以看到结果。

1 个回答

如果是 Visual Studio,把这个设置关了。我这是英文版,你如果用的中文版自己按英文意思找下。

snipaste_2024-04-20_22-46-51.png

如果不是 VS 再说。另外,ReadLine() 放在程序的最后才会在结束前等待,而且还得是在中间没有抛出异常的情况下。

另外,你这个程序,循环条件错了。跟踪一下运行过程会发现根本没进循环去。

snipaste_2024-04-20_22-53-13.png

除了这种方式跟踪,也可以用调试模式,打断点+单步运行的方式来跟踪。

for (a = 1; a > 9; a++) 表示 a 初始为 1,但在 a > 9 的情况下进入循环……很显然初始值就不满足条件,所以进不到循环。再去学习一下 for 循环该怎么写。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
Microsoft
子站问答
访问
宣传栏