键盘输入10个数(可能为整形、浮点型、双精度型及其字符类型),分别利用函数重载和函数模板,求出其中的最大值和最小值。
时间: 2023-04-29 22:02:37 浏览: 90
可以使用函数重载和函数模板来实现输入10个数中的最大值和最小值的求解。
函数重载的方式是定义两个函数,一个用于整型、浮点型和双精度型的求解,另一个用于字符类型的求解。具体实现如下:
```
// 函数重载
int getMax(int arr[], int n) {
int maxVal = arr[];
for (int i = 1; i < n; i++) {
if (arr[i] > maxVal) {
maxVal = arr[i];
}
}
return maxVal;
}
double getMax(double arr[], int n) {
double maxVal = arr[];
for (int i = 1; i < n; i++) {
if (arr[i] > maxVal) {
maxVal = arr[i];
}
}
return maxVal;
}
char getMax(char arr[], int n) {
char maxVal = arr[];
for (int i = 1; i < n; i++) {
if (arr[i] > maxVal) {
maxVal = arr[i];
}
}
return maxVal;
}
int getMin(int arr[], int n) {
int minVal = arr[];
for (int i = 1; i < n; i++) {
if (arr[i] < minVal) {
minVal = arr[i];
}
}
return minVal;
}
double getMin(double arr[], int n) {
double minVal = arr[];
for (int i = 1; i < n; i++) {
if (arr[i] < minVal) {
minVal = arr[i];
}
}
return minVal;
}
char getMin(char arr[], int n) {
char minVal = arr[];
for (int i = 1; i < n; i++) {
if (arr[i] < minVal) {
minVal = arr[i];
}
}
return minVal;
}
```
函数模板的方式是定义一个函数模板,可以适用于不同类型的数组。具体实现如下:
```
// 函数模板
template <typename T>
T getMax(T arr[], int n) {
T maxVal = arr[];
for (int i = 1; i < n; i++) {
if (arr[i] > maxVal) {
maxVal = arr[i];
}
}
return maxVal;
}
template <typename T>
T getMin(T arr[], int n) {
T minVal = arr[];
for (int i = 1; i < n; i++) {
if (arr[i] < minVal) {
minVal = arr[i];
}
}
return minVal;
}
```
使用函数重载的方式调用最大值和最小值的求解:
```
int arr1[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
double arr2[] = {1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, 10.};
char arr3[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'};
int max1 = getMax(arr1, 10);
double max2 = getMax(arr2, 10);
char max3 = getMax(arr3, 10);
int min1 = getMin(arr1, 10);
double min2 = getMin(arr2, 10);
char min3 = getMin(arr3, 10);
```
使用函数模板的方式调用最大值和最小值的求解:
```
int arr1[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
double arr2[] = {1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, 10.};
char arr3[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'};
int max1 = getMax<int>(arr1, 10);
double max2 = getMax<double>(arr2, 10);
char max3 = getMax<char>(arr3, 10);
int min1 = getMin<int>(arr1, 10);
double min2 = getMin<double>(arr2, 10);
char min3 = getMin<char>(arr3, 10);
```