c++ - 使用 if else 语句的函数将数字从大到小排序

标签 c++

作为序言,我想说这不是家庭作业。我正在编写这段代码来练习技能和学习不同的技术。此特定代码的挑战是使用函数和 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/

相关文章:

c++ - 如何将 std::array C++11 操作转换为 Boost+VS08?

C++ 添加不工作

c++ - 将函数指针传递给类对象

c++ - std::pair 赋值运算符的性能问题是什么?

c++ - 在头文件的静态成员函数内声明了多少个静态数据实例?

c++ - 与 double 混合时使用 int 和 unsigned int 之间的速度差异

c++ - 为什么我的 OpenGL 对象相对于最后绘制的对象绘制?

c++ - libocci.so : undefined reference to

c++ - AVL Delete 方法行为奇怪,C++

c++ - C++ 函数中 "return"的确切时刻