请帮我编写一个函数模板,分别求一个数组里数据的最大值和最小值。并以整型、浮点型以及字符型验证正确性。其中,字符型按照ASCII码判断最大值、最小值。
时间: 2024-02-25 15:54:12 浏览: 73
好的,我可以帮您编写这个函数模板。
以下是代码实现:
```c++
#include <iostream>
using namespace std;
template <typename T>
void findMinMax(T arr[], int size, T& min, T& max) {
if (size <= 0) {
return;
}
min = max = arr[0];
for (int i = 1; i < size; i++) {
if (arr[i] < min) {
min = arr[i];
}
if (arr[i] > max) {
max = arr[i];
}
}
}
int main() {
int arrInt[] = {1, 2, 3, 4, 5};
int minInt, maxInt;
findMinMax(arrInt, 5, minInt, maxInt);
cout << "Min int: " << minInt << endl;
cout << "Max int: " << maxInt << endl;
float arrFloat[] = {1.1, 2.2, 3.3, 4.4, 5.5};
float minFloat, maxFloat;
findMinMax(arrFloat, 5, minFloat, maxFloat);
cout << "Min float: " << minFloat << endl;
cout << "Max float: " << maxFloat << endl;
char arrChar[] = {'a', 'b', 'c', 'd', 'e'};
char minChar, maxChar;
findMinMax(arrChar, 5, minChar, maxChar);
cout << "Min char: " << (int)minChar << endl;
cout << "Max char: " << (int)maxChar << endl;
return 0;
}
```
这个函数模板接受一个数组,数组大小以及两个引用类型的变量用于储存最大值和最小值。在函数中,我们使用一个循环来遍历数组并找到最大值和最小值。最后,我们将最大值和最小值分别储存在传递给函数的引用变量中。
在主函数中,我们分别测试了整型、浮点型和字符型数据的最大值和最小值,并验证了函数模板的正确性。
注意,对于字符型数据,我们使用了 `(int)` 强制将字符转换为整型,以便输出其 ASCII 码值。
阅读全文