关于min()函数和max()函数:
min()、max()这两个函数如果需要使用,要在程序头文件中加上<algorithm>库就可以使用这个函数了
#include <algorithm>
min()函数是比较数中哪一个数最小,就返回最小的数,而max()函数则是比较数中哪一个数最大,就返回最大的数。
这些函数的原理就是找出这些变量当中的最值并返回,类似于
// 最大
int max(int a, int b){
return (a > b) ? a : b;
}
// 最小
int min(int a, int b){
return (a < b) ? a : b;
}
函数的使用
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循环终止,程序也就结束了
此外,其他的数据类型也可以用max或min来进行比较,比如float、double还有char类型,此处需注意的是,比较char是比较其ASCII码的数值大小
如果数据更大,需要用到高精度来进行比较,那么此时的两个函数虽然可以用到,但是因为高精度是用字符串实现的,所以这两个函数的用处并不大