2020对口33题

/*下面程序的功能是:调用Sort()排序函数,通过传递相应参数用选择法按升序(或降序)
对数组中的数进行排序。假设数组中存储数据为{88,67,78,56,90},若升序排序则结果为:
{56,67,78,88,90},若降序排序则结果为 {90,88,78,67,56}。
*/
#include <stdio.h>
#include <stdlib.h>
#define N 5
void Sort(int score[],int n,int (*compare)(int a,int b));//排序函数声明 
int Ascending(int a,int b);//升序
int Descending(int a,int b);//降序
int main() {
    int i;
    int score[N]={88,67,78,56,90}; 
    Sort(score,5,Ascending);//升序排序
    printf("The Ascending(ÉýÐò) Sort is:");
    for(i=0;i<5;i++)
        printf("%d ",score[i]);
    Sort(score,5,Descending);//降序排序 
    printf("
The Descending(½µÐò) Sort is:");
    for(i=0;i<5;i++)
        printf("%d ",score[i]);
    return 0;
}
void Sort(int score[],int n,int(*compare)(int a,int b))
{
    int i,j,k;
    int t1,t2;
    for(i=0;i<n-1;i++){
        k=i;
        for(j=i+1;j<n;j++){
            if(compare(score[j],score[k]))
                k=j;
        }
        if(k!=i)
        {
            t1=score[k];score[k]=score[i];score[i]=t1;
        }
    }
}
int Ascending(int a,int b)
{
    return a<b;
}
int Descending(int a,int b)
{
    return a>b;
}

运行结果:

原文地址:https://www.cnblogs.com/yanglike111/p/13716261.html