利用指针实现三个数的排序
时间: 2024-03-03 13:46:55 浏览: 30
可以通过指针来实现三个数的排序。具体实现方法如下:
```c
void sort(int *a, int *b, int *c) {
int tmp;
if (*a > *b) {
tmp = *a;
*a = *b;
*b = tmp;
}
if (*a > *c) {
tmp = *a;
*a = *c;
*c = tmp;
}
if (*b > *c) {
tmp = *b;
*b = *c;
*c = tmp;
}
}
int main() {
int a = 3, b = 9, c = 5;
printf("Before sorting: a=%d, b=%d, c=%d\n", a, b, c);
sort(&a, &b, &c);
printf("After sorting: a=%d, b=%d, c=%d\n", a, b, c);
return 0;
}
```
在sort函数中,使用了指针来传递a、b、c三个变量的地址,通过比较指针所指向的值来实现排序。在main函数中,调用sort函数进行排序,并传递了a、b、c三个变量的地址。最后输出排好序后的a、b、c三个变量的值。
相关问题
利用指针实现三个数从大到小输出
可以使用指针数组来实现三个数的排序。具体步骤如下:
1. 定义三个整型变量a、b、c,分别输入三个数的值。
2. 定义一个指针数组p,数组中存放三个指向整型变量的指针。
3. 将p[0]、p[1]、p[2]分别指向a、b、c。
4. 通过比较三个指针所指向的值的大小,交换指针的位置,使得p[0]指向最大值,p[1]指向中间值,p[2]指向最小值。
5. 输出p[0]、p[1]、p[2]所指向的值,即可输出三个数从大到小的顺序。
下面是代码实现:
```c
#include <stdio.h>
int main()
{
int a, b, c;
int *p[3];
printf("请输入三个整数:\n");
scanf("%d%d%d", &a, &b, &c);
p[0] = &a;
p[1] = &b;
p[2] = &c;
// 通过比较三个指针所指向的值的大小,交换指针的位置,使得p[0]指向最大值,p[1]指向中间值,p[2]指向最小值。
if (*p[0] < *p[1]) {
int *temp = p[0];
p[0] = p[1];
p[1] = temp;
}
if (*p[0] < *p[2]) {
int *temp = p[0];
p[0] = p[2];
p[2] = temp;
}
if (*p[1] < *p[2]) {
int *temp = p[1];
p[1] = p[2];
p[2] = temp;
}
printf("从大到小输出三个数为:%d %d %d\n", *p[0], *p[1], *p[2]);
return 0;
}
```
输入三个整数,例如:3 5 2,输出结果为:
```
请输入三个整数:
3 5 2
从大到小输出三个数为:5 3 2
```
编写一main函数 要求利用指针 实现从键盘输入三个数 由小到大排序
好的,下面是使用指针实现从键盘输入三个数并从小到大排序的main函数示例:
```c++
#include <iostream>
using namespace std;
void sort(int *a, int *b, int *c) {
int t;
if (*a > *b) {
t = *a;
*a = *b;
*b = t;
}
if (*a > *c) {
t = *a;
*a = *c;
*c = t;
}
if (*b > *c) {
t = *b;
*b = *c;
*c = t;
}
}
int main() {
int a, b, c;
cout << "请输入三个数:" << endl;
cin >> a >> b >> c;
sort(&a, &b, &c);
cout << "从小到大排序后的结果为:" << a << " " << b << " " << c << endl;
return 0;
}
```
在上面的代码中,sort函数用于实现三个数从小到大排序,使用指针传入三个数的地址,通过比较和交换来实现排序。在main函数中,先从键盘输入三个数,然后调用sort函数进行排序,最后输出排序后的结果。