对10个整数按由大到小排序

来源:互联网 发布:泰拉瑞亚数据库 编辑:程序博客网 时间:2024/06/11 23:45

先有思路后有代码:

思路:在主函数中定义一个数组用来存放10个整数,定义int * 型指针变量p指向a[0]。定义函数sort使数组a中的元素按由大到小排序。在主函数中调用sort函数,用指针变量p作实参,sort函数的形参用数组名,用选择排序法进行排序。

撸码:

#include "stdafx.h"#include "stdlib.h"int main(){    void sort(int x[], int n);    int i, *p, a[10];    p = a;    printf("Please enter 10 integer number:");    for ( i = 0; i < 10; i++)    {        scanf(" %d ",p++);    }    p = a;    sort(p, 10);    for (p = a, i = 0; i < 10; i++)    {        printf("%d", *p);        p++;    }    printf("\n");        system("pause");        return 0;}//选择排序法void sort(int x[], int n) {    int i, j, k, t;    for ( i = 0; i < n-1; i++)    {        k = i;        for ( j = i+1; j < n; j++)        {            if (x[j]>x[k])            {                k = j;//记录下最大值的位置            }        }        if (k!=i)            {                t = x[i];                x[i] = x[k];                x[k] = t;            }    }}   

运行结果:
这里写图片描述

当然排序函数也可以改为指针形式,这时sort函数声明要改为:

sort(int *x,int n)

其他不改,程序运行结果不变。

可以看到,即使在函数sort中将x定义为指针变量,在函数中仍可用x[i]和x[j]这样的形式表示数组元素,它就是x+i和x+j所指的数组元素。

上面的sort等价于:

void sort(int *x, int n) {    int i, j, k, t;    for ( i = 0; i < n-1; i++)    {        k = i;        for ( j = i+1; j < n; j++)        {            if (*(x+j)>*(x+k))            {                k = j;            }        }        if (k != i) {            t = *(x + i);            *(x + i) = *(x + k);            *(x + k) = t;        }    }}
阅读全文
0 0