1432:又是排序(指针专题)(指针法)

90 阅读1分钟

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");

}