用c语言不改变整型变量a, b, c的值,利用指针变量*p1,*p2,*p3交换实现上述三个数由大到小的排序和输出。
时间: 2024-02-09 17:11:53 浏览: 181
C语言指向指针的指针
好的,下面是用C语言利用指针变量*p1,*p2,*p3交换实现整型变量a, b, c由大到小的排序和输出的代码:
```c
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int a, b, c;
int *p1, *p2, *p3;
printf("请输入三个整数:\n");
scanf("%d %d %d", &a, &b, &c);
p1 = &a;
p2 = &b;
p3 = &c;
if (*p1 < *p2) swap(p1, p2);
if (*p1 < *p3) swap(p1, p3);
if (*p2 < *p3) swap(p2, p3);
printf("排序后:\n%d %d %d\n", *p1, *p2, *p3);
return 0;
}
```
首先,我们定义了三个整型变量a、b和c,以及三个指向整型变量的指针变量p1、p2和p3。
然后,通过scanf函数从键盘输入三个整数,并将它们分别赋值给a、b和c。
接着,将p1指向a所在的内存地址,将p2指向b所在的内存地址,将p3指向c所在的内存地址。
在排序时,我们利用了swap函数来交换指针所指向的值。如果p1所指向的值小于p2所指向的值,就调用swap函数交换p1和p2所指向的值。同理,如果p1所指向的值小于p3所指向的值,就调用swap函数交换p1和p3所指向的值,最后如果p2所指向的值小于p3所指向的值,就调用swap函数交换p2和p3所指向的值。
最后,通过printf函数输出排序后的a、b和c的值。
阅读全文