1158: 又是排序(指针专题)
时间限制: 1 Sec 内存限制: 128 MB
提交: 4978 解决: 2053
[状态] [讨论版] [提交] [命题人:admin]
题目描述
将输入的四个整数按由大到小的顺序输出。
请你定义一个四个数排序的函数psort,psort的四个参数为要排序的四个整数变量的地址,请你按照从大到小的顺序把四个数分别放到四个指针所指向的变量里,不要在函数内输入输出任何内容。请务必使用函数实现四个数的排序。
void psort( int *pa, int *pb,int *pc,int *pd)
{
//实现四个数的排序,并分别放到四个指针所指向的变量里。
}
注意:本题如果采用C/C++提交时,至少要编写psort()函数和main()函数两个函数,并提交完整的程序代码。
输入
输入4个整数,用空格隔开。
输出
输出排序后的4个整数,由空格隔开。输出占一行。
样例输入 Copy
4 3 5 2
样例输出 Copy
5 4 3 2
#include <stdio.h>
// 函数原型声明
void psort( int *pa, int *pb,int *pc,int *pd);
// 又是排序
int main() {
int a[4];
int i;
int *p1, *p2, *p3, *p4;
// 输入4个整数
for(i = 0; i < 4; i++)
scanf("%d", a + i);
p1 = &a[0], p2 = &a[1], p3 = &a[2], p4 = &a[3];
// 定义函数psort进行排序
psort(p1, p2, p3, p4);
// 输出结果
for(i = 0; i < 4; i++)
printf("%d ", a[i]);
return 0;
}
// 实现四个数的排序
void psort( int *pa, int *pb,int *pc,int *pd){
int a[4];
int i, j, k, t;
a[0] = *pa, a[1] = *pb, a[2] = *pc, a[3] = *pd;
// 比较交换排序
for(i = 0; i < 3; i++){
for(j = i + 1; j < 4; j++){
if(a[i] < a[j]){
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}
// 把指针变量按照从大到小依次赋值
*pa = a[0], *pb = a[1], *pc = a[2], *pd = a[3];
}