函数指针应用——用函数指针多种排序方法的数组排序

感谢自信男孩
Description
对用户输入的n个整数进行排序,排序时用户可以指定排序方法,输入1代表进行升序排序,输入2代表进行降序排序,输入3代表按绝对值降序进行排序。
用户选择相应的排序方法后,输入n及n个数,将排序结果进行输出。
Input
多实例测试,每组测试输入包括两部分
第一部分:一个整数代表用户的选择,如果用户输入0,则结束程序。
第二部分:包括两行
第一行是一个整数n(1<=n<=1000),代表待排序整数的个数
第二行是n个待排序的整数
Output
如果用户选择0则结束程序,否则输出按照指定的排序方法对n个整数排序后的结果
Sample Input
1
3
3 1 2
2
3
3 1 2
0
Sample Output
1 2 3
3 2 1

在这里插入代码片
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int k;
int comp_sheng(const void*a,const void*b)
{
    return *(int*)a - *(int*)b;
}
 
int comp_jiang(const void*a,const void*b)
{
    return *(int*)b - *(int*)a;
}
 
int comp_abs_jiang(const void *a, const void *b)
{
    return (abs(*(int *)b) - abs(*(int *)a));
}
 
int print(int *a,int b)
{
    for(int i = 0;i < b;i++)
    {
        printf("%d ",a[i]);
    }
    printf("\n");
}
int main(void)
{
        int n,a[1000];
 
    while(scanf("%d",&k) != EOF&&k != 0)
    {
        scanf("%d",&n);
        if (n > 1000)
            n = 1000;
        for(int i = 0; i < n; i++)
        {
            scanf("%d",&a[i]);
        }
        switch(k)
        {
            case 1:
                qsort(a,n,sizeof(int),comp_sheng);
                break;
            case 2:
                qsort(a,n,sizeof(int),comp_jiang);
                break;
            case 3:
                qsort(a,n,sizeof(int),comp_abs_jiang);
                break;
        }
        print(a,n);
    }
    return 0;
}
发布了147 篇原创文章 · 获赞 44 · 访问量 4134

猜你喜欢

转载自blog.csdn.net/weixin_45949073/article/details/104412400