【发布时间】:2015-07-17 21:15:57
【问题描述】:
整天都在做这件事,无法弄清楚我错过了什么。不想求助于这里寻求帮助,但我不得不。
本练习假设引用三个int参数,并将它们的值按升序排列,使第一个参数的值最小,第二个参数的值居中,第三个参数的值最大。
代码编译良好,但数字不按顺序排列。它会一起跳过我的函数,直接从 main 中显示变量。
#include <iostream>
using namespace std;
//Function prototype
void smallSort(int&, int&, int&);
//Main
int main()
{
int a = 100, b = 25, c = 20;
smallSort(a, b, c);
cout << a << endl;
cout << b << endl;
cout << c << endl;
return 0;
}
void smallSort(int &valu1, int &valu2, int &valu3)
{
int tempVal1 = 0, tempVal2 = 0, tempVal3 = 0;
if (valu1 > valu2 && valu1 > valu3)
{
tempVal1 = valu1;
valu1 = tempVal1;
if (valu2 > valu3)
{
tempVal2 = valu2;
tempVal3 = valu3;
valu2 = tempVal2;
valu3 = tempVal3;
}
else if (valu3 > valu2)
{
tempVal2 = valu3;
tempVal3 = valu2;
valu2 = tempVal3;
valu3 = tempVal2;
}
}
else if (valu2 > valu1 && valu2 > valu3)
{
tempVal1 = valu2;
valu2 = tempVal1;
if (valu1 > valu3)
{
tempVal2 = valu1;
tempVal3 = valu3;
valu1 = tempVal2;
valu3 = tempVal3;
}
else if (valu3 > valu1)
{
tempVal2 = valu3;
tempVal3 = valu1;
valu3 = tempVal2;
valu1 = tempVal3;
}
else if (valu3 > valu1 && valu3 > valu2)
{
tempVal1 = valu3;
valu3 = tempVal1;
if (valu2 > valu1)
{
tempVal2 = valu2;
tempVal3 = valu1;
valu2 = tempVal2;
valu1 = tempVal3;
}
else if (valu1 > valu2)
{
tempVal2 = valu1;
tempVal3 = valu2;
valu1 = tempVal2;
valu2 = tempVal3;
}
}
}
}
【问题讨论】:
-
那么你的代码有什么错误?
-
代码编译正常,但数字不按顺序排列。它似乎一起跳过了我的函数,只是直接从 main 显示变量。
-
看看
tempVal1 = valu1; valu1 = tempVal1;。它什么也没做。将值复制到 temp,然后将 temp 复制回相同的值。其余的也这样做。最终结果是没有动作。
标签: c++ function reference swap