public class drake
{
public int Max(ref int a, ref int b, ref int c,out int min,out int medium)
{
int max = 0;
medium = 0;
min = 0;
if (a > b && b > c)
{
max = a;
medium = b;
min = c;
}
if (a < b && b < c)
{
max = c;
medium = b;
min = a;
}
if (a > b && b < c && a > c)
{
max = a;
medium = c;
min = b;
}
if (a > b && b < c && a < c)
{
max = c;
medium = a;
min = b;
}
return max;
}
}
class Program
{
static void Main(string[] args)
{
drake c = new drake();
int q = 5;
int w = 9;
int e = 6;
int medium;
int min;
int max = c.Max(ref q, ref w, ref e, out min, out medium);
Console.WriteLine(max+"+"+medium+"+"+min);
}
}
}
分支没写全啊!3个数排列组合一共有1*2*3 = 6
种结果。
又:不要漏了相等判断。
5 9 6 这个不在代码中任何一个分支,所以结果为0。
先假设不考虑相等情况(因为如果考虑相等,不能区分medium和max或者medium和min是同一个数的情况)。
应该有六个结果:
a>b>c
a>c>b
b>c>a
b>a>c
c>a>b
c>b>a
修改后的代码如下:
public class drake
{
public int Max(ref int a, ref int b, ref int c, out int min, out int medium)
{
int max = 0;
medium = 0;
min = 0;
if (a > b)//此分支处理a>b的情况
{
if (b > c)// a>b>c
{
max = a;
medium = b;
min = c;
}
else if (a < c)//c>a>b
{
max = c;
medium = a;
min = b;
}
else//a>c>b
{
max = a;
medium = c;
min = b;
}
}
else//此分支处理a<b的情况
{
if (b < c)// c>b>a
{
max = c;
medium = b;
min = a;
}
else if (a < c)// b>c>a
{
max = b;
medium = c;
min = a;
}
else//b>a>c
{
max = b;
medium = a;
min = c;
}
}
return max;
}
}
class Program
{
static void Main(string[] args)
{
drake c = new drake();
int q = 5;
int w = 9;
int e = 6;
int medium;
int min;
int max = c.Max(ref q, ref w, ref e, out min, out medium);
Console.WriteLine(max + "+" + medium + "+" + min);
}
}