输入3个整数,要求设3个指针变量p1,p2,p3,使p1指向3个数中的最大者,p2指向次大者,p3指向最小者,然后按由大到小的顺序输出这3个数
时间: 2024-02-13 07:00:21 浏览: 101
好的,这是一个关于指针的问题。以下是代码实现:
```c++
#include <iostream>
using namespace std;
void sort(int* p1, int* p2, int* p3) {
int* temp;
if (*p1 < *p2) {
temp = p1;
p1 = p2;
p2 = temp;
}
if (*p1 < *p3) {
temp = p1;
p1 = p3;
p3 = temp;
}
if (*p2 < *p3) {
temp = p2;
p2 = p3;
p3 = temp;
}
}
int main() {
int a, b, c;
int* p1, *p2, *p3;
cin >> a >> b >> c;
p1 = &a;
p2 = &b;
p3 = &c;
sort(p1, p2, p3);
cout << *p1 << " " << *p2 << " " << *p3 << endl;
return 0;
}
```
以上代码中,我们使用了指针来操作变量,将 p1, p2, p3 指向输入的三个数,然后用 sort 函数来实现排序,并将排序后的结果输出。
相关问题
输入3个整数,要求设3个指针变量p1、p2、p3,使p1指向3个数中的最大者,p2指向次大者,p3指向最小者,然后按由大到小的顺序输出这3个数。
可以使用选择排序的思想来解决这个问题。首先将三个指针 p1、p2、p3 指向这三个整数,然后比较它们之间的大小关系,将它们按照从大到小的顺序排列,最后输出即可。
以下是示例代码实现:
```c++
#include <iostream>
using namespace std;
void sort(int* &p1, int* &p2, int* &p3) {
int* tmp;
if (*p1 < *p2) {
tmp = p1;
p1 = p2;
p2 = tmp;
}
if (*p1 < *p3) {
tmp = p1;
p1 = p3;
p3 = tmp;
}
if (*p2 < *p3) {
tmp = p2;
p2 = p3;
p3 = tmp;
}
}
int main() {
int a, b, c;
cout << "请输入三个整数:" << endl;
cin >> a >> b >> c;
int* p1 = &a;
int* p2 = &b;
int* p3 = &c;
sort(p1, p2, p3);
cout << "由大到小的顺序输出这三个数:" << endl;
cout << *p1 << " " << *p2 << " " << *p3 << endl;
return 0;
}
```
输入示例:
```
请输入三个整数:
6 3 10
```
输出示例:
```
由大到小的顺序输出这三个数:
10 6 3
```
从键盘输入三个整数,要求设三个指针变量p1,p2, p3,使p1指向三个数的最大者,p2指向次大者,p3指向最小者,然后按由小到大的顺序输出这三个数用c语言
好的,下面是一个示例代码:
```c
#include <stdio.h>
int main() {
int a, b, c;
int *p1, *p2, *p3; // 定义三个指针变量
int temp;
printf("请输入三个整数:");
scanf("%d %d %d", &a, &b, &c);
// 初始化指针变量
p1 = &a;
p2 = &b;
p3 = &c;
// 排序
if (*p1 < *p2) {
temp = *p1;
*p1 = *p2;
*p2 = temp;
}
if (*p1 < *p3) {
temp = *p1;
*p1 = *p3;
*p3 = temp;
}
if (*p2 < *p3) {
temp = *p2;
*p2 = *p3;
*p3 = temp;
}
// 输出
printf("%d %d %d\n", *p3, *p2, *p1);
return 0;
}
```
这个程序要求用户从键盘上输入三个整数,并将它们存储在变量 `a`、`b` 和 `c` 中。
然后,程序定义了三个指针变量 `p1`、`p2` 和 `p3`,并将它们分别初始化为 `a`、`b` 和 `c` 的地址。
接下来,程序使用三个 `if` 语句将 `p1`、`p2` 和 `p3` 指向三个数的最大者、次大者和最小者。具体地,程序先比较 `p1` 和 `p2` 所指向的值,如果 `p1` 所指向的值小于 `p2` 所指向的值,则交换它们所指向的值。然后,程序再比较 `p1` 和 `p3` 所指向的值,如果 `p1` 所指向的值小于 `p3` 所指向的值,则交换它们所指向的值。最后,程序再比较 `p2` 和 `p3` 所指向的值,如果 `p2` 所指向的值小于 `p3` 所指向的值,则交换它们所指向的值。
最后,程序使用 `printf()` 函数按照由小到大的顺序输出这三个数。
需要注意的是,这个程序可以处理相同的整数。如果要处理相同的浮点数,则需要使用浮点数的比较函数(如 `fabs()` 或 `EPS`)来判断它们是否相等。
阅读全文