C++中min()、max()函数的使用

目录

感谢:

关于min()函数和max()函数:

函数的使用

数据类型

感谢你能看到这里,你的点赞收藏是我的动力,如果你用上了这篇文章,那么能不能给一个点赞和收藏?谢谢你啦!!!


感谢:

        我最近发布的文章洛谷P1706 全排列问题迷宫之判定刚发布没多久就收到了点赞和收藏,我在此感谢你们的点赞收藏,谢谢你们!!!我真的很高兴,接下来切入正文!

关于min()函数和max()函数:

        min()max()这两个函数如果需要使用,要在程序头文件中加上<algorithm>库或者<cmath>库,就可以使用这个函数了

#include <cstdio>
#include <iostream>
#include <algorithm>//或者#include <cmath>

min()函数是比较数中哪一个数最小,就返回最小的数,max()函数是比较数中哪一个数最大,就返回最大的数。

函数的使用

        min()、max()函数的使用非常简单,只需要将想要对比的变量放进去就行了,注意:多个数比较时,需要加上大括号,且中间用" , "隔开。举个栗子。

#include <iostream>
#include <algorithm>

using namespace std;
int main() {
    int a = 0, b = 0, c = 0, d = 0;
    cout << "请输入第1组数据:";
    cin >> a >> b;
    cout << "请输入第2组数据:";
    cin >> c >> d;

    cout << "第1组最大数:";
    cout << max(a,b);

    cout << "      第1组最小数:";
    cout << min(a,b);

    cout << "\n\n第2组最大数:";
    cout << max(c,d);

    cout << "      第2组最小数:";
    cout << min(c,d);

    cout << "\n\n2组数据最大数:";
    cout << max({a,b,c,d});

    cout << "      两组数据最小数:";
    cout << min({a,b,c,d});
    return 0;
}

这段代码比较了2组数据中的大小,最后输出了两组数据中的最大数。

数据类型

        那么如果我的数据是long long类型呢?可不可以做到一样的效果呢?让我们来试一试。

#include <iostream>
#include <algorithm>

using namespace std;
int main() {
    long long a = 0, b = 0, c = 0, d = 0;
    cout << "请输入第1组数据:";
    cin >> a >> b;
    cout << "请输入第2组数据:";
    cin >> c >> d;

    cout << "第1组最大数:";
    cout << max(a,b);

    cout << "      第1组最小数:";
    cout << min(a,b);

    cout << "\n\n第2组最大数:";
    cout << max(c,d);

    cout << "      第2组最小数:";
    cout << min(c,d);

    cout << "\n\n2组数据最大数:";
    cout << max({a,b,c,d});

    cout << "      两组数据最小数:";
    cout << min({a,b,c,d});
    return 0;
}

让我们看看输出效果...

输出效果没有改变唉!!!

但是如果数据类型太大或者太小,超出了数据范围,那就会有问题了。所以还得在程序中做一个特判。

优化后的程序如下:

#include <cstdio>
#include <algorithm>

using namespace std;

long long a = 0, b = 0, c = 0, d = 0, big = 9223372036854775807;
bool n = true;

bool compare() {
    printf("请输入第1组数据:");
    scanf("%lld%lld", &a, &b);
    printf("请输入第2组数据:");
    scanf("%lld%lld", &c, &d);
    if (a != big && b != big && c != big && d != big) {
        printf("\n第1组最大数:%lld", max(a, b));
        printf("        第1组最小数:%lld", min(a, b));
        printf("\n\n第2组最大数:%lld", max(c, d));
        printf("        第2组最小数:%lld", min(c, d));
        printf("\n\n2组数据最大数:%lld", max({a, b, c, d}));
        printf("        2组数据最小数:%lld", min({a, b, c, d}));
        return true;
    } else {
        printf("数据过大!请重新输入\n\n\n");
        return false;
    }
}

int main() {
    while (n)
        if (compare()) n = false;
    return 0;
}

//long long类型最大能存储的值9223372036854775807

这个代码如果输入的值小于9223372036854775807,那么n为false,那么while循环终止,程序也就结束了,那么为什么程序里写着的是!=呢?这个问题留给你们思考(^_^)

感谢你能看到这里,你的点赞收藏是我更新的动力,如果你用上了这篇文章,那么能不能给一个点赞和收藏?谢谢你啦!!!

  • 42
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tyz_C

你的打赏是我最大动力,感谢大家

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值