编写4个重载函数,分别求整数和字符的最小值
时间: 2024-09-10 10:22:34 浏览: 56
在编程中,编写函数重载(Overload)是指在同一作用域内创建具有相同名称但参数列表不同的多个函数。下面是一个简单的例子,展示了如何在C++中编写四个重载的`min`函数,分别计算整数和字符的最小值:
1. **对于整数**:
```cpp
int min(int a, int b) {
return a < b ? a : b;
}
int min(int a, long b) { // 处理不同类型的整数
return a < b ? a : b;
}
```
2. **对于字符**:
```cpp
char min(char a, char b) {
if (a < b)
return a;
else
return b;
}
```
3. **对于两个字符和一个整数**:
```cpp
int min(char c, int d) {
return c < static_cast<int>(d) ? c : d; // 避免直接比较,防止隐式转换错误
}
```
4. **处理所有类型的比较(如果允许的话)**,可以添加模板方法:
```cpp
template<typename T>
T min(T a, T b) {
return a < b ? a : b;
}
```
相关问题
编一个程序,用重载函数实现针对若干个数据输出最小值。要求包括3个同名函数,分别实现: ① 对2个实数。 ② 对3个字符串。 ③ 对10个整数。
这是一个很好的问题!以下是我为您编写的程序:
```
#include <iostream>
#include <string>
using namespace std;
void printMin(double a, double b) {
cout << "The minimum value is: " << min(a, b) << endl;
}
void printMin(string a, string b, string c) {
cout << "The minimum value is: " << min({a, b, c}) << endl;
}
void printMin(int arr[], int size) {
cout << "The minimum value is: " << *min_element(arr, arr + size) << endl;
}
int main() {
double a = 3.14, b = 2.71;
string s1 = "hello", s2 = "world", s3 = "cpp";
int arr[] = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100};
int size = sizeof(arr) / sizeof(arr[0]);
// call the overloaded functions
printMin(a, b);
printMin(s1, s2, s3);
printMin(arr, size);
return 0;
}
```
这个程序包括三个同名函数`printMin`,分别用于输出传入参数的最小值。对于实数,我使用了`min`函数返回两个数字的最小值;对于字符串,我使用了`min`函数返回三个字符串的最小值;对于整数数组,我使用了`min_element`函数返回数组中的最小值。
键盘输入10个数(可能为整形、浮点型、双精度型及其字符类型),分别利用函数重载和函数模板,求出其中的最大值和最小值。
函数重载版本:
```C++
#include <iostream>
using namespace std;
int getMax(int arr[], int n) {
int max = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
float getMax(float arr[], int n) {
float max = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
double getMax(double arr[], int n) {
double max = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
char getMax(char arr[], int n) {
char max = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
int getMin(int arr[], int n) {
int min = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i] < min) {
min = arr[i];
}
}
return min;
}
float getMin(float arr[], int n) {
float min = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i] < min) {
min = arr[i];
}
}
return min;
}
double getMin(double arr[], int n) {
double min = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i] < min) {
min = arr[i];
}
}
return min;
}
char getMin(char arr[], int n) {
char min = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i] < min) {
min = arr[i];
}
}
return min;
}
int main() {
const int N = 10;
int arr1[N];
float arr2[N];
double arr3[N];
char arr4[N];
cout << "请输入" << N << "个整数:" << endl;
for (int i = 0; i < N; i++) {
cin >> arr1[i];
}
cout << "最大值为:" << getMax(arr1, N) << endl;
cout << "最小值为:" << getMin(arr1, N) << endl;
cout << "请输入" << N << "个浮点数:" << endl;
for (int i = 0; i < N; i++) {
cin >> arr2[i];
}
cout << "最大值为:" << getMax(arr2, N) << endl;
cout << "最小值为:" << getMin(arr2, N) << endl;
cout << "请输入" << N << "个双精度数:" << endl;
for (int i = 0; i < N; i++) {
cin >> arr3[i];
}
cout << "最大值为:" << getMax(arr3, N) << endl;
cout << "最小值为:" << getMin(arr3, N) << endl;
cout << "请输入" << N << "个字符:" << endl;
for (int i = 0; i < N; i++) {
cin >> arr4[i];
}
cout << "最大值为:" << getMax(arr4, N) << endl;
cout << "最小值为:" << getMin(arr4, N) << endl;
return 0;
}
```
函数模板版本:
```C++
#include <iostream>
using namespace std;
template <typename T>
T getMax(T arr[], int n) {
T max = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
template <typename T>
T getMin(T arr[], int n) {
T min = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i] < min) {
min = arr[i];
}
}
return min;
}
int main() {
const int N = 10;
int arr1[N];
float arr2[N];
double arr3[N];
char arr4[N];
cout << "请输入" << N << "个整数:" << endl;
for (int i = 0; i < N; i++) {
cin >> arr1[i];
}
cout << "最大值为:" << getMax(arr1, N) << endl;
cout << "最小值为:" << getMin(arr1, N) << endl;
cout << "请输入" << N << "个浮点数:" << endl;
for (int i = 0; i < N; i++) {
cin >> arr2[i];
}
cout << "最大值为:" << getMax(arr2, N) << endl;
cout << "最小值为:" << getMin(arr2, N) << endl;
cout << "请输入" << N << "个双精度数:" << endl;
for (int i = 0; i < N; i++) {
cin >> arr3[i];
}
cout << "最大值为:" << getMax(arr3, N) << endl;
cout << "最小值为:" << getMin(arr3, N) << endl;
cout << "请输入" << N << "个字符:" << endl;
for (int i = 0; i < N; i++) {
cin >> arr4[i];
}
cout << "最大值为:" << getMax(arr4, N) << endl;
cout << "最小值为:" << getMin(arr4, N) << endl;
return 0;
}
```
阅读全文