c++ - 为什么我的 C++ 算法总是为数字的最小值和最大值返回相同的值?

标签 c++ algorithm

我一直在编写一些简单的算法,但遇到了一个问题。我正在编写一个算法来显示数字的最小值和最大值。它有效,但它只返回两种情况下的最大值,我不明白为什么。非常感谢!!!

#include <iostream>

using namespace std;

void Citire(int& n)
{ cout  <<"\nDa numarul:";
  cin   >>n;
  while (n<=0)
    {cout<<"ai gresit, da natural:";
     cin >>n;
    }
}

int CifMinMax(int n)
{
    int Max = 9;
    int Min = 0;
    int UltCif;

    while (n>0)
    {
        UltCif = n % 10;

        if (UltCif < Min)
          Min = UltCif;

        if (UltCif > Max)
            Max = UltCif;

    n = n/10;
    }

    return Max, Min;
}

int main()
{
    int n;
    int Min;
    int Max;

    Citire(n);
    Min = CifMinMax(n);
    Max = CifMinMax(n);

    cout <<endl<<Min<<" este cifra minima a numarului, iar "<<Max<<" este cifra maxima a numarului." << endl;
    return 0;
}

最佳答案

return Max, Min;

此行实际上返回 Min 并丢弃 Max。阅读有关 operator 的信息, 它从左到右评估其操作数并返回最后一个,这就是您获得相同值的原因。

你需要这样的东西:

std::pair<int, int> CifMinMax(int n)
{
    // ...
    return std::make_pair(Min, Max);
}

std::pair<int, int> MinMax = CifMinMax(n);
Min = MinMax.first;
Max = MinMax.second;

关于c++ - 为什么我的 C++ 算法总是为数字的最小值和最大值返回相同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26717220/

相关文章:

C++:在 HashMap 中查找子字符串

c++ - 为什么重载的新运算符是隐式静态的,并且构造对象不需要范围解析

c++ - 与 C++ 一起使用的 Lear Gist Descriptor C 代码

c# - 创建我的第一个算法

algorithm - 用最少的简单路径覆盖无向图的所有边

C++ - 错误 : no matching function for call to 'Motor::Motor()'

C++ 合并 2 wchar_t*

c++ - 如何确保给定的一组点位于可能正方形的边界上?

algorithm - 在 python 中将 Goertzel 算法扩展到 24 kHz、32 kHz 和 48 kHz

c# - 为什么这个方法需要递归?