• Sort相关练习


    1.用man sort查看sort的帮助文档

     2.

    sort常用选项有哪些,都有什么功能?提交相关使用的截图
    sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCAII值进行比较,最后将它们按升序输出。

     -u意味着是唯一的,输出的结果是去完重了的。

     -r以相反的顺序来排序

     3.如果让你编写sort,你怎么实现?写出伪代码和相关的函数或系统调用

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #define n 32
    typedef struct student{
    long number;
    char name[50];
    int math;
    int chinese;
    int sum;
    }STU;
    STU arr[n];
    int cmp1(const void *a, const void *b)
    {
    int number1=((STU *)a)->number;
    int number2=((STU *)b)->number;
    return number1>number2?1:-1;
    }
    int cmp2(const void *a, const void *b)
    {
    char *s1=((STU *)a)->name;
    char *s2=((STU *)b)->name;
    return strcmp(s1,s2);
    }
    int cmp3(const void *a, const void *b)
    {
    int number1=((STU *)a)->math;
    int number2=((STU *)b)->math;
    return number1>number2?1:-1;
    }

    int cmp4(const void *a, const void *b)
    {
    int number1=((STU *)a)->chinese;
    int number2=((STU *)b)->chinese;
    return number1>number2?1:-1;
    }

    int cmp5(const void *a, const void *b)
    {
    int number1=((STU *)a)->sum;
    int number2=((STU *)b)->sum;
    return number1>number2?1:-1;
    }
    int main(int argc,char *argv[]){
    FILE *fp;
    char txt[100];
    scanf("%s",txt);
    if((fp=fopen(txt,"r"))==NULL)
    {
    printf("open file failure!");
    return 0;
    }
    int i=0,j=0;
    while( fscanf(fp,"%ld %s %d %d %d",&arr[i].number,arr[i].name,&arr[i].math,&arr[i].chinese,&arr[i].sum)!=EOF)
    {

    i++;
    }
    printf("which line do you want sort?");
    int c;
    scanf("%d",&c);
    if(c==1)
    qsort(arr,i,sizeof(struct student),cmp1);
    else if(c==2)
    qsort(arr,i,sizeof(struct student),cmp2);
    else if(c==3)
    qsort(arr,i,sizeof(struct student),cmp3);
    else if(c==4)
    qsort(arr,i,sizeof(struct student),cmp4);
    else if(c==5)
    qsort(arr,i,sizeof(struct student),cmp5);
    else
    return -1;
    for( j=0;j<i;j++)
    printf("%ld %s %d %d %d ",arr[j].number,arr[j].name,arr[j].math,arr[j].chinese,arr[j].sum);
    return 0;

    }

  • 相关阅读:
    ubuntu下使用ppa安装codeblocks集成开发环境
    CentOS g++ 安装
    CentOS 7.1云服务器 配置FTP服务器vsftpd
    div高度自适应浏览器高度
    HTML中的head结构
    javascript高级进阶系列
    javascript集中跨域方法
    canvas标签的width和height以及style.width和style.height的区别
    html5学习笔记之入新特性
    ie下a标签里的图片会有边框
  • 原文地址:https://www.cnblogs.com/lxhs/p/15345835.html
Copyright © 2020-2023  润新知