1158: 又是排序(指针专题)
时间限制: 1 Sec 内存限制: 128 MB
提交: 1283 解决: 434
[状态] [讨论版] [提交] [命题人: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 temp,i,j,k;
int a[4];
a[0]=*pa;a[1]=*pb;a[2]=*pc;a[3]=*pd;//运用一个数组来暂存指针变量进行排序,个人感觉比直接比较更简单
for(i=0;i<4;i++)
{
k=i;
for(j=i+1;j<4;j++)//简单选择排序
{
if(a[k]<a[j])
k=j;
}
temp=a[k];
a[k]=a[i];
a[i]=temp;
}
*pa=a[0];*pb=a[1];*pc=a[2];*pd=a[3];//最后把指针变量按照从大到小依次赋值
}
int main()
{
void psort(int *pa,int *pb,int *pc,int *pd);
int a,b,c,d;
int *p1,*p2,*p3,*p4;
scanf("%d %d %d %d",&a,&b,&c,&d);
p1=&a;p2=&b;p3=&c;p4=&d;
psort(p1,p2,p3,p4);
printf("%d %d %d %d\n",a,b,c,d);
//或者写printf("%d %d %d %d\n",*p1,*p2,*p3,*p4);
return 0;
}