学习-用指向函数的指针变量作函数的参数求两个整数中的最大值
时间: 2024-02-26 09:57:44 浏览: 29
好的,下面是一个示例代码:
```c
#include <stdio.h>
int max(int a, int b) {
return a > b ? a : b;
}
int max_with_ptr(int a, int b, int (*p)(int, int)) {
return p(a, b);
}
int main() {
int a = 10, b = 20;
int (*p)(int, int) = max;
int max_value = max_with_ptr(a, b, p);
printf("max value between %d and %d is %d\n", a, b, max_value);
return 0;
}
```
这里定义了两个函数,一个是计算两个整数的最大值的`max`函数,另一个是用指向函数的指针变量作为参数的`max_with_ptr`函数。
在`main`函数中,我们先定义了两个整数`a`和`b`,然后定义了一个指向`max`函数的指针变量`p`,接着调用`max_with_ptr`函数并将`a`、`b`和`p`作为参数传递进去,`max_with_ptr`函数内部通过调用指向的函数指针`p`来计算出`a`和`b`之间的最大值,并将结果返回给`main`函数。
最后在`main`函数中打印出最大值即可。
相关问题
使用指针变量作为函数参数,编写函数求两个数的大于小于等于关系
好的,我了解了您的要求,以下是示例代码:
```c++
#include<iostream>
using namespace std;
void compare(int* a, int* b, int* max, int* min, int* equ){
if(*a > *b){
*max = *a;
*min = *b;
*equ = 0;
}
else if(*a < *b){
*max = *b;
*min = *a;
*equ = 0;
}
else{
*max = *a;
*min = *b;
*equ = 1;
}
}
int main(){
int num1, num2, max, min, equ;
cout << "请输入两个整数:" << endl;
cin >> num1 >> num2;
compare(&num1, &num2, &max, &min, &equ);
if(equ){
cout << num1 << " 等于 " << num2 << endl;
}
else{
cout << num1 << " 大于 " << num2 << endl;
cout << num1 << " 小于 " << num2 << endl;
}
cout << "最大值为:" << max << endl;
cout << "最小值为:" << min << endl;
return 0;
}
```
这里我们定义了一个 `compare` 函数,它使用了指针变量作为函数参数,它的参数包括两个整数指针变量和三个整数指针变量。函数的作用是判断两个数的大小关系,并输出它们的最大值、最小值和是否相等的信息。
在函数内部,我们通过比较输入的两个整数指针变量的值,确定它们的大小关系,并将最大值、最小值和是否相等的信息存储在三个指针变量中。最后在主函数中输出结果。
希望这个代码能够帮您解决问题。
使用指向变量的指针变量做函数参数,编写函数求两个数的大于,小于,等于关系完整的程序
好的,以下是代码实现:
```c
#include <stdio.h>
void compare(int a, int b, int *greater, int *less, int *equal)
{
if (a > b) {
*greater = a;
*less = b;
*equal = 0;
} else if (a < b) {
*greater = b;
*less = a;
*equal = 0;
} else {
*greater = a;
*less = b;
*equal = 1;
}
}
int main()
{
int a, b;
int greater, less, equal;
printf("请输入两个整数:\n");
scanf("%d %d", &a, &b);
compare(a, b, &greater, &less, &equal);
if (equal)
printf("%d 等于 %d\n", a, b);
else
printf("%d 大于 %d,%d 小于 %d\n", greater, less, less, greater);
return 0;
}
```
解释一下:
- `compare` 函数有三个指向变量的指针参数 `greater`、`less` 和 `equal`,分别指向最大值、最小值和相等标志。
- 如果 `a` 大于 `b`,则将 `a` 赋值给 `greater`,`b` 赋值给 `less`,`equal` 赋值为 0。
- 如果 `a` 小于 `b`,则将 `b` 赋值给 `greater`,`a` 赋值给 `less`,`equal` 赋值为 0。
- 如果 `a` 等于 `b`,则将 `a` 赋值给 `greater`,`b` 赋值给 `less`,`equal` 赋值为 1。
- 在 `main` 函数中,先读入两个整数 `a` 和 `b`,然后调用 `compare` 函数,将 `greater`、`less` 和 `equal` 赋值为对应的值。
- 最后根据 `equal` 的值,输出相应的结果。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)