任意输入两个整数,编写三个函数分别实现:(1)计算两个数的加法和;(2)计算两个整数的减法差;(3)交换这两个整数的数值。要求用“函数指针”调用这三个函数,结果在主函数中输出。
时间: 2023-06-20 22:04:58 浏览: 109
以下是代码实现:
```c++
#include <iostream>
using namespace std;
int add(int a, int b) {
return a + b;
}
int subtract(int a, int b) {
return a - b;
}
void swap(int& a, int& b) {
int temp = a;
a = b;
b = temp;
}
int main() {
int x, y;
cout << "请输入两个整数:";
cin >> x >> y;
int (*p_add)(int, int) = add;
int (*p_subtract)(int, int) = subtract;
void (*p_swap)(int&, int&) = swap;
cout << "它们的和为:" << p_add(x, y) << endl;
cout << "它们的差为:" << p_subtract(x, y) << endl;
p_swap(x, y);
cout << "经过交换后它们的值为:" << x << " " << y << endl;
return 0;
}
```
运行结果示例:
```
请输入两个整数:10 5
它们的和为:15
它们的差为:5
经过交换后它们的值为:5 10
```
相关问题
任意输入两个整数,编写三个函数分别实现:(1)计算两个数的加法和;(2)计算两个整数的减法差;(3)交换这两个整数的数值。要求用“函数指针”调用这三个函数,结果在主函数中输出。目前已编写完成main函数,请编程实现sum函数、minus函数和swap函数,函数功能和要求如下所示。
以下是三个函数的实现:
```c
#include <stdio.h>
int sum(int a, int b){
return a+b;
}
int minus(int a, int b){
return a-b;
}
void swap(int* a, int* b){
int temp = *a;
*a = *b;
*b = temp;
}
int main(){
int a, b;
printf("请输入两个整数:\n");
scanf("%d %d", &a, &b);
int (*func[3])(int, int) = {sum, minus};
void (*swap_func)(int*, int*) = swap;
printf("加法和:%d\n", func[0](a, b));
printf("减法差:%d\n", func[1](a, b));
printf("交换前:%d %d\n", a, b);
swap_func(&a, &b);
printf("交换后:%d %d\n", a, b);
return 0;
}
```
在主函数中,我们定义了一个函数指针数组`func`,其中存储了`sum`和`minus`这两个函数的地址。同时,我们定义了一个指向`swap`函数的指针`swap_func`。
接着,我们通过`func[0](a, b)`调用`sum`函数,通过`func[1](a, b)`调用`minus`函数,函数指针的调用方式和一般函数的调用方式类似。
最后,我们通过`swap_func(&a, &b)`调用`swap`函数,注意到`swap`函数的参数是两个指向整型变量的指针,因此我们需要使用`&`符号将变量的地址传递给函数。
编写重载函数max1可分别求两个整数,三个整数
编写重载函数 `max1`,可以分别求两个整数和三个整数。
1. 首先,我们定义一个 `max1` 函数,用来求解两个整数中的最大值。可以利用条件运算符 `? :` 来实现,如果第一个整数大于第二个整数,则返回第一个整数,否则返回第二个整数。
```cpp
int max1(int a, int b)
{
return (a > b) ? a : b;
}
```
2. 接下来,我们定义一个重载的 `max1` 函数,用来求解三个整数中的最大值。可以在函数内部调用先前定义的两个整数求最大值的函数,分别比较第一个整数和后两个整数的大小,再比较较大值和最后一个整数的大小,然后返回最大值。
```cpp
int max1(int a, int b, int c)
{
return max1(max1(a, b), c);
}
```
这样,我们就可以使用 `max1` 函数来分别求解两个整数和三个整数中的最大值。