我必须制作程序,从用户输入返回第二高的数字。
用户可以输入最小 2 数字和最大 10 数字。用户只能输入整数(不是小数),以停止我使用0的程序。
我的问题是:如果我输入 1,2,2,0 ,则输出 2 >正确,应输出1.
以下是我目前正在做的事情:
static void checking(double n, ref double max, ref double smax)
{
if (n > max)
{
smax = max;
max = n;
}
else if (n > smax)
{
smax = n;
}
}
static void Main(string[] args)
{
double n = 1, max = -99999999, smax = -99999999, ISsmaxrepeating = 0;
int i = 0;
while (n != 0 && i < 10)
{
Console.WriteLine("Input number");
n = double.Parse(Console.ReadLine());
if (n % 1 == 0)
{
checking(n, ref max, ref smax);
i++;
}
else
{
smax =0;
break;
}
}
if (smax != 0)
{
Console.WriteLine("secondmax is {0}", smax);
}
else
{
Console.WriteLine("error");
}
Console.ReadLine();
}
以下是一些测试用例:
示例1。:
输入: 10 5 -4 8 5 0
输出 8
示例2。:
输入: 5 5 5 5 0
输出“错误”
示例3。:
输入: 1 0
输出“错误”
示例4。:
输入: 1 2 3 4 5 6 7 8 9 10
输出 9
答案 0 :(得分:2)
如果您已经拥有它,请忽略它:
...
while (n != 0 && i < 10)
{
Console.WriteLine("Input number");
n = double.Parse(Console.ReadLine());
if (n % 1 == 0)
{
if(n != max && n != smax)
checking(n, ref max, ref smax);
i++;
}
else
{
smax =0;
break;
}
}
...
顺便说一下,我不相信你试图处理错误案例的方式。
答案 1 :(得分:1)
最终节目:)
static void checking(double n, ref double max, ref double smax)
{
if (n > max)
{
smax = max;
max = n;
}
else if (n > smax)
{
smax = n;
}
}
static void Main(string[] args)
{
double n = 1, max = Double.MinValue, smax = Double.MinValue;
int i = 0, stopInput = 0;
while (n != 0 && i < 10)
{
Console.WriteLine("Input number");
n = double.Parse(Console.ReadLine());
if (n % 1 == 0 && n !=0) //this (n % 1 == 0) part checks if number is not decimal
{
if (n != max && n != smax)
checking(n, ref max, ref smax);
i++;
}
else
{
break;
}
}
if (stopInput ==1 && smax != Double.MinValue)
{
Console.WriteLine("secondmax is {0}", smax);
}
else
{
Console.WriteLine("error");
}
Console.ReadLine();
}
答案 2 :(得分:0)
首先,检查方法的完整代码:
private static void checking(double n, ref double max, ref double smax)
{
if (n > max)
{
smax = max;
max = n;
}
// Extra check added here
else if (n > smax && n != max)
{
smax = n;
}
}
我用几个输入(5,5,5,0和1,2,1,0)对它进行了测试,它表现得如预期的那样(&#34; 1&#34;在第二种情况下,&#34;错误&#34;在第一个)。
此外,您的n % 1 == 0
检查是一件非常奇怪的事情;我建议你改变一下,或者添加一条评论来解释为什么你要为读者做这件事。益处。