输入3个数a、b、c,按从大到小的顺序输出。要求通过指针实现:定义3个整型指针pa、pb、pc,分别指向a、b、c,先找出最大数,再找出次大数和最小数,最后按顺序输出*pa、*pb、*pc
时间: 2023-07-10 19:26:52 浏览: 100
好的,下面是代码实现:
```c
#include <stdio.h>
void swap(int *pa, int *pb) {
int temp = *pa;
*pa = *pb;
*pb = temp;
}
int main() {
int a, b, c;
int *pa, *pb, *pc;
printf("请输入三个整数:\n");
scanf("%d%d%d", &a, &b, &c);
pa = &a;
pb = &b;
pc = &c;
if (*pa < *pb) {
swap(pa, pb);
}
if (*pa < *pc) {
swap(pa, pc);
}
if (*pb < *pc) {
swap(pb, pc);
}
printf("%d %d %d\n", *pa, *pb, *pc);
return 0;
}
```
这段代码中,首先定义了三个指针pa、pb、pc,分别指向a、b、c。然后通过scanf函数输入a、b、c的值。接着,通过定义一个swap函数,找出最大数、次大数和最小数,并按顺序输出*pa、*pb、*pc。
运行结果如下:
```
请输入三个整数:
5 10 3
10 5 3
```
相关问题
使用c语言编写,题目描述 输入a和b两个整数,按先大后小的顺序输出a和b。 要求不交换整型变量的值,而是交换两个指针变量的值(即a和b的地址) 要求不能用函数实现。 输入 a=a的值,b=b的值 输出 max=a和b的较大值,min=a和b的较小值,输入样例1 :a=5,b=9 输出样例1:max=9,min=5
好的,下面是使用 C 语言实现的代码:
```c
#include <stdio.h>
int main() {
int a, b, *pa, *pb, tmp;
scanf("a=%d,b=%d", &a, &b);
pa = &a;
pb = &b;
if (*pa < *pb) {
tmp = *pa;
*pa = *pb;
*pb = tmp;
}
printf("max=%d,min=%d", *pa, *pb);
return 0;
}
```
首先,在输入 a 和 b 的值后,我们定义两个指针变量 pa 和 pb 分别指向 a 和 b 的地址。然后,我们通过比较 a 和 b 的大小,将较大的值赋给指针变量 pa,较小的值赋给指针变量 pb。最后,我们通过一个临时变量 tmp,交换指针变量所指向的地址中存储的值。最后,输出指针变量所指向的值,即 a 和 b 的值。
【id:195】【10分】A. 交换数字,不用函数实现(指针) 题目描述 输入a和b两个整数,按先大后小的顺序输出a和b。 要求不交换整型变量的值,而是交换两个指针变量的值(即a和b的地址) 要求不能用函数实现。 输入 a=a的值,b=b的值 输出 max=a和b的较大值,min=a和b的较小值,输入样例1 :a=5,b=9 输出样例1:max=9,min=5
实现代码如下:
```c++
#include <iostream>
using namespace std;
int main() {
int a, b;
cin >> "a=" >> a >> ",b=" >> b;
int *pa = &a, *pb = &b;
if (*pa < *pb) {
swap(pa, pb);
}
cout << "max=" << *pa << ",min=" << *pb;
return 0;
}
```
由于要交换指针变量的值,我们需要定义两个指针变量 pa 和 pb 分别指向 a 和 b 的地址,然后通过 swap 函数交换它们的值即可。最后输出指针变量所指向的值,即 a 和 b 的值。
阅读全文