1432:又是排序(指针专题)
题目描述
将输入的四个整数按由大到小的顺序输出。
已定义如下swap函数,可实现形参pa和pb所指内存单元的内容交换。请务必使用本函数实现两个变量内容的互换。
void swap( int *pa, int *pb)
{
int t;
t=*pa; *pa=*pb; *pb=t;
}
输入
输入4个整数,用空格隔开。
输出
输出排序后的4个整数,由空格隔开。输出占一行。
样例输入
4 3 5 2
样例输出
5 4 3 2
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
void swap( int *pa, int *pb)
{
int t;
t=*pa;
*pa=*pb;
*pb=t;
}
int main()
{
int a[4],i,j;
int *pa,*pb;///*指针运算符,*pa,*pb代表指针变量所指的对象,p为指针变量
for(i=0; i<4; i++)
{
scanf("%d",&a[i]);///输入4个整数
}
pa=a;///指针变量pa获取a数组的首地址
pb=&a[1];///指针变量pb获取a[1]的地址
for(i=1; i<4; i++)
{
for(j=0; j<4-i; j++)
{
if(*(pa+j)<*(pb+j))///*指针运算符,*p代表指针变量所指的对象,p为指针变量
swap(pa+j,pb+j);///调用swap函数,移动指针(地址),进行循环遍历并比较和交换相邻两个数的地址
}
}
for(i=0; i<4; i++,pa++)
{
printf("%d ",*pa);///输出指针变量所指对象
}
printf("\n");
}