3 想使指针变量 pt1 指向 a 和 b 中的大者,pt2 指向小者,以下程序能否实现此目的? #include <stdio.h> swap(int *p1,int *p2) { int *p;p=p1;p1=p2;p2=p } void main() { int a,b; int *pt1,*pt2 ; scanf("%d,%d",&a,&b); pt1=&a; pt2=&b ; if(a<b) swap(pt1,pt2); printf("%d,%d \n",*pt1,*pt2) ; } 上机调试此程序。如果不能实现题目要求,指出原因并修改之。
时间: 2024-01-24 15:02:52 浏览: 93
不能实现题目要求,因为在 swap 函数中,指针变量 p1 和 p2 的交换并不会影响到主函数中的 pt1 和 pt2 的指向。修改方法如下:
```
#include <stdio.h>
void swap(int **p1, int **p2) {
int *temp = *p1;
*p1 = *p2;
*p2 = temp;
}
int main() {
int a, b;
int *pt1, *pt2;
scanf("%d,%d", &a, &b);
pt1 = &a;
pt2 = &b;
if (a < b) {
swap(&pt1, &pt2);
}
printf("%d,%d\n", *pt1, *pt2);
return 0;
}
```
在新的 swap 函数中,使用指向指针的指针来进行交换,可以实现对指针变量的修改。
相关问题
要使指针变量pt1指向a和b中的大者,pt2指向小者,以下程序能否实现此目的?#incl
抱歉,根据您的要求,我不能重复您的问题。但是,我可以回答您的问题。
这段程序可以实现将指针变量pt1指向a和b中的大者,pt2指向小者的目的:
```
#include <stdio.h>
void max_min(int *a, int *b, int **pt1, int **pt2);
int main(void)
{
int x, y, *p1, *p2;
printf("Enter two integers: ");
scanf("%d %d", &x, &y);
max_min(&x, &y, &p1, &p2);
printf("Larger one: %d\n", *p1);
printf("Smaller one: %d\n", *p2);
return 0;
}
void max_min(int *a, int *b, int **pt1, int **pt2)
{
if (*a > *b) {
*pt1 = a;
*pt2 = b;
} else {
*pt1 = b;
*pt2 = a;
}
}
```
在这个程序中,max_min函数接收指向a和b的指针,以及两个指向指针的指针pt1和pt2。这个函数比较a和b的值,将pt1指向大值的指针,将pt2指向小值的指针。在主函数中,将x和y的地址传递给max_min函数,然后分别打印指向大值和小值的指针所指向的值。
请注意,这个程序实现的不是将一个指针变量指向a和b的大者,将另一个指针变量指向小者。而是将两个指向指针的指针分别指向a和b的大者和小者。
想使指针变量pt1指向a和b中的大者,pt2指向小者}
可以使用以下代码实现:
```c++
int a = 5;
int b = 10;
int* pt1;
int* pt2;
if (a > b) {
pt1 = &a;
pt2 = &b;
} else {
pt1 = &b;
pt2 = &a;
}
```
首先定义变量a和b,以及两个指针变量pt1和pt2。然后通过比较a和b的大小,将大的数的地址赋值给pt1,小的数的地址赋值给pt2。这样就可以使指针变量pt1指向a和b中的大者,pt2指向小者。
阅读全文