作为序言,我想说这不是家庭作业。我正在编写这段代码来练习技能和学习不同的技术。此特定代码的挑战是使用函数和 if else 语句将 3 个值返回给用户。我已经成功地实现了我认为可行的功能。但是,我的 int main() 输出一个零而不是预期的 6、12、16 答案。谁能指出我哪里出错了?
#include <iostream>
using namespace std;
int sort2(int a, int b, int c){
if (a>b && a>c){
int value1 = a;
if (b>c){
int value2 = b;
int value3 = c;
} else {
int value2 = c;
int value3 = b;
}
}
if (b>a && b>c){
int value1 = b;
if (a>c){
int value2 = a;
int value3 = c;
} else {
int value2 = c;
int value3 = a;
}
}
if (c>a && c>b){
int value1 = c;
if(a>b){
int value2 = a;
int value3 = b;
} else {
int value2 = b;
int value3 = a;
}
}
}
int main(){
int result = sort2(12,16,6);
cout<<result;
}
最佳答案
你实际上并没有从你的函数中返回任何东西。编译器可以对此发出警告(并非总是如此),提高警告级别。此外,您的函数被声明为返回一个整数。然后,例如这里:
if (b>c){
int value2 = b;
int value3 = c;
}
您声明了两个局部于 if block 的变量。这些声明没有任何效果。老实说,我能给出的最好建议是 grab a book or two .无论如何...
The challenge of this specific code is to have 3 values returned to the user using a function and if else statements only.
我知道您想练习 if else 语句和编写函数。不幸的是,仅此一项不足以完成您想要的操作,但您可以通过返回包含 3 个值的结构来使您的代码以最小的更改工作:
struct sorted_3_values {
int value1;
int value2;
int value3;
};
然后将您的功能更改为
sorted_3_values sort2(int a, int b, int c){
sorted_3_values result;
if ( ... ) {
result.value1 = ...;
result.value2 = ...;
result.value3 = ...;
}
return result;
}
然后在 main
sorted_3_values x = sort2(12,16,6);
std::cout << x.value1 << " " << x.value2 << " " << x.value3;
请注意,如果您编写这样的代码,那么您并不是真正在使用 C++。在某些时候,您应该看看容器(例如 std::vector
)和算法(std::find
)。
关于c++ - 使用 if else 语句的函数将数字从大到小排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53215370/