编写三个函数:求两个整数的最大值、最小值、和。分别用这三个函数作为实参,再写一个计算函数compute,对两个整数进行各种计算。其中一个形参为指向具体算法函数的指针。
时间: 2023-04-20 09:01:03 浏览: 168
这里是三个函数的代码:
```c++
#include <iostream>
using namespace std;
int max(int a, int b) {
return a > b ? a : b;
}
int min(int a, int b) {
return a < b ? a : b;
}
int sum(int a, int b) {
return a + b;
}
int compute(int a, int b, int (*func)(int, int)) {
return func(a, b);
}
int main() {
int a = 10, b = 20;
cout << "max: " << compute(a, b, max) << endl;
cout << "min: " << compute(a, b, min) << endl;
cout << "sum: " << compute(a, b, sum) << endl;
return ;
}
```
其中,compute函数的第三个参数是一个指向具体算法函数的指针,可以根据需要传入max、min或sum函数。在main函数中,我们分别调用了compute函数,并传入了不同的算法函数指针,从而实现了求最大值、最小值和和的功能。
相关问题
1、编写一个计算函数compute,对两个整数进行各种计算。有一个形参为指向具体算法函数的指针,根据不同的实参函数,用不同的算法进行计算。编写三个函数:求两个整数的最大值、最小值、和。分别用这三个函数作为实参,测试compute函数。
下面是代码实现:
```c++
#include <iostream>
using namespace std;
int max(int a, int b) {
return a > b ? a : b;
}
int min(int a, int b) {
return a < b ? a : b;
}
int sum(int a, int b) {
return a + b;
}
int compute(int a, int b, int (*func)(int, int)) {
return (*func)(a, b);
}
int main() {
int a = 5, b = 3;
cout << "Max value: " << compute(a, b, max) << endl;
cout << "Min value: " << compute(a, b, min) << endl;
cout << "Sum value: " << compute(a, b, sum) << endl;
return 0;
}
```
输出结果如下:
```
Max value: 5
Min value: 3
Sum value: 8
```
在这个例子中,我们定义了三个函数max、min和sum,它们分别返回两个整数的最大值、最小值和和。然后,我们定义了一个函数compute,它有三个参数:两个整数和一个指向函数的指针。这个函数使用传入的函数指针来执行不同的算法,然后返回计算结果。
在主函数中,我们定义了两个整数a和b,然后使用compute函数来计算它们的最大值、最小值和和,分别传入了max、min和sum这三个函数作为参数。最后,我们将计算结果输出到控制台上。
用变量的指针作为函数调用的实参,降序输出三个整数
可以使用指针变量作为函数的实参,然后在函数内部对指针所指向的变量进行操作。下面是一个降序输出三个整数的示例代码:
```c++
#include <iostream>
void printDescending(int* a, int* b, int* c) {
if (*a >= *b && *a >= *c) {
std::cout << *a << " ";
if (*b >= *c) {
std::cout << *b << " " << *c << std::endl;
} else {
std::cout << *c << " " << *b << std::endl;
}
} else if (*b >= *a && *b >= *c) {
std::cout << *b << " ";
if (*a >= *c) {
std::cout << *a << " " << *c << std::endl;
} else {
std::cout << *c << " " << *a << std::endl;
}
} else {
std::cout << *c << " ";
if (*a >= *b) {
std::cout << *a << " " << *b << std::endl;
} else {
std::cout << *b << " " << *a << std::endl;
}
}
}
int main() {
int x = 3, y = 7, z = 1;
int* px = &x;
int* py = &y;
int* pz = &z;
printDescending(px, py, pz);
return 0;
}
```
在上面的代码中,我们定义了一个函数 `printDescending`,它接受三个指向整数的指针作为参数。在函数内部,我们使用了条件语句来判断三个整数的大小关系,并按照降序输出它们。在 `main` 函数中,我们定义了三个整数变量 `x`、`y` 和 `z`,然后分别取它们的地址赋值给指针变量 `px`、`py` 和 `pz`,最后调用 `printDescending` 函数输出这三个整数的降序排列。