首先,我想说这不是家庭作业。我正在编写此代码来练习技能和学习不同的技术。这个特定代码的挑战是使用一个函数(如果只有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;
}
答案 0 :(得分:1)
您实际上并没有从函数中返回任何内容。编译器可以对此发出警告(并非总是如此),提高警告级别。此外,您的函数声明为返回单个整数。然后,例如:
if (b>c){
int value2 = b;
int value3 = c;
}
您声明两个局部于if块的变量。这些陈述没有任何作用。老实说,我能提供的最佳建议是grab a book or two。无论如何...
此特定代码的挑战是将3个值返回给 用户使用函数,并且仅使用else语句。
我了解您想练习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
)。