为什么我的排序代码不起作用?

时间:2015-04-05 23:46:50

标签: c++ pointers

编写具有五个参数的函数minMax的定义。前三个参数是整数。最后两个由函数设置为前三个参数的最大值和最小值。该函数不返回值。

该功能可以按如下方式使用:

int a = 31,b = 5,c = 19 big,small; MINMAX(A,B,C,&安培;大,&安培;小); / *大现在是31 / / 小现在是5 * /

void minMax (int a, int b, int c, int *big, int *small) {
    if (a > b && a > c) 
        *big = a;
    else if (b>a && b>c)
            *big = b;
    else if (c>a && c>b)
            *big = c;

    if (a < b && a < c) 
        *small = a;
    else if (b<a && b<c)
        *small = b;
    else if (c<a && c<b)
        *small = c;
return;
}

说明:      ⇒您的功能没有改变小的值。确保在功能中取消引用它。

常见错误: 确保你的if / else语句是正确的。 确保在每个语句的末尾都有分号。 确保为大小分配正确的值。

2 个答案:

答案 0 :(得分:1)

如果3个数字abc都不同,那么您的代码应该可以正常运行。但是如果2(或甚至全部3)值相同,则会出现错误,因为您总是检查&#34;严格大于&#34;并且&#34;严格小于&#34;,即您使用的是><,而不是>=<=。尝试使用= 31,B = 31,C = 31,您将看到既不会将值分配给*big也不会分配给*small

答案 1 :(得分:0)

这个怎么样:

void minMax(int x, int y, int z, int * big, int * small) 
{
    *big = x;   

    if (y > *big) 
    {
        *big = y;
    }

    if (z > *big) 
    {
        *big = z;
    }

    *small = x;

    if (y < *small)
    {
        *small = y;
    }

    if (z < *small)
    {
        *small = z;
    }
}