当前位置: 首页 > 知识库问答 >
问题:

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

管梓
2024-04-23

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();但是结果始终是闪退

共有2个答案

蔚丰
2024-04-23

如果是 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 循环该怎么写。

师向文
2024-04-23

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

  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() 来防止程序立即退出,以便用户可以看到结果。

 类似资料:
  • 本文向大家介绍Java三种求水仙花数的方法,包括了Java三种求水仙花数的方法的使用技巧和注意事项,需要的朋友参考一下 水仙花数:水仙花数是三位数,它的各位数字的立方和等于这个三位数本身,例如:370=33+73+00;371=33+73+13,370、371就是一个水仙花数 注意:要判断一个三位数是不是水仙花数,得先取得这个三位数的的个位,十位和百位 普通for循环: while循环: do-w

  • 本文向大家介绍C#控件闪烁的解决方法,包括了C#控件闪烁的解决方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#控件闪烁的解决方法。分享给大家供大家参考。具体分析如下: 如果你在Form中绘图的话,不论是不是采用的双缓存,都会看到图片在更新的时候都会不断地闪烁,解决方法就是在这个窗体的构造函数中增加以下三行代码: 请在构造函数里面底下加上如下几行: 参数说明: UserPaint 如

  • 本文向大家介绍java实现水仙花数的计算,包括了java实现水仙花数的计算的使用技巧和注意事项,需要的朋友参考一下 看到标题java实现水仙花数,首先先要知道什么是水仙花数,具体了解一下 所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数 列如153=1*1*1+5*5*5+3*3*3  那么153就是水仙花数,首先是分析需要的功能,首先他是一个3位数。 那值一定在100-1000之间,必定

  • 本文向大家介绍在C ++中查找协方差的程序,包括了在C ++中查找协方差的程序的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将讨论一个寻找协方差的程序。 为此,我们将提供两组随机变量。我们的任务是计算它们的协方差,即这两个值相差多少的度量。 示例 输出结果

  • 本文向大家介绍探寻python多线程ctrl+c退出问题解决方案,包括了探寻python多线程ctrl+c退出问题解决方案的使用技巧和注意事项,需要的朋友参考一下 场景: 经常会遇到下述问题:很多io busy的应用采取多线程的方式来解决,但这时候会发现python命令行不响应ctrl-c 了,而对应的java代码则没有问题: ctrl-c则会结束程序 而对应的python代码: python p

  • 本文向大家介绍JS判断一个数是否是水仙花数,包括了JS判断一个数是否是水仙花数的使用技巧和注意事项,需要的朋友参考一下 水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。 例如:1^3 + 5^3+ 3^3 = 153 以上所述是小编给大家介绍的JS判断一个数是否是水仙花数,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!