zoukankan      html  css  js  c++  java
  • 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;

    }

  • 相关阅读:
    读《疯狂Ajax讲义》重点
    Qt Library 链接库
    html验证码
    java开发webservice
    QT TCP/IP
    Android 开发技术流程
    jquery使用
    多台服务之间共享Session
    JS 混淆加密
    html中的表格 bootstrap-table
  • 原文地址:https://www.cnblogs.com/lxhs/p/15345835.html
Copyright © 2011-2022 走看看