zoukankan      html  css  js  c++  java
  • hdu 1862

    EXCEL排序
    Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 11899    Accepted Submission(s): 4734


    Problem Description
    Excel可以对一组纪录按任意指定列排序。现请你编写程序实现类似功能。
     

    Input
    测试输入包含若干测试用例。每个测试用例的第1行包含两个整数 N (<=100000) 和 C,其中 N

    是纪录的条数,C 是指定排序的列号。以下有 N
    行,每行包含一条学生纪录。每条学生纪录由学号(6位数字,同组测试中没有重复的学号)、

    姓名(不超过8位且不包含空格的字符串)、成绩(闭区间[0, 100]内的整数)组成,每个项目间

    用1个空格隔开。当读到 N=0 时,全部输入结束,相应的结果不要输出。


    Output
    对每个测试用例,首先输出1行“Case i:”,其中 i 是测试用例的编号(从1开始)。随后在 N

     行中输出按要求排序后的结果,即:当 C=1 时,按学号递增排序;当 C=2时,按姓名的非递减字

    典序排序;当 C=3 时,按成绩的非递减排序。当若干学生具有相同姓名或者相同成绩时,则按他们

    的学号递增排序。

    Sample Input
    3 1
    000007 James 85
    000010 Amy 90
    000001 Zoe 60
    4 2
    000007 James 85
    000010 Amy 90
    000001 Zoe 60
    000002 James 98
    4 3
    000007 James 85
    000010 Amy 90
    000001 Zoe 60
    000002 James 90
    0 0
     

    Sample Output
    Case 1:
    000001 Zoe 60
    000007 James 85
    000010 Amy 90
    Case 2:
    000010 Amy 90
    000002 James 98
    000007 James 85
    000001 Zoe 60
    Case 3:
    000001 Zoe 60
    000007 James 85
    000002 James 90
    000010 Amy 90
     

    Source
    浙大计算机研究生复试上机考试-2007年
     

    Recommend
    lcy

    思路:qsort函数的应用,关键在cmp函数的编写
    #include "stdio.h"
    #include "stdlib.h"
    #include "string.h"

    typedef struct
    {
    int a;
    char b[12];
    int c;
    }student;


    int cmp(const void *a,const void *b)
    {
        student *c=(student *)a;
        student *d=(student *)b;
       return  c->a-d->a;
    }

    int cmp1(const void *a,const void *b)
    {
       student *c=(student *)a;
        student *d=(student *)b;
       if(strcmp(c->b,d->b)!=0)
       return strcmp(c->b,d->b);
       else
        return c->a-d->a;
    }
    int cmp2(const void *a,const void *b)
    {
       student *c=(student *)a;
        student *d=(student *)b;
       if(c->c!=d->c)
    return c->c-d->c;
       else
        return c->a-d->a;
    }

    student stu[100005];

    int main()
    {
      int n,i,j;
      int c;
      int k=0;
    while(scanf("%d %d",&n,&c)&&n!=0&&c!=0)
     { memset(stu,0,sizeof(stu));
        k++;
        for(i=0;i<n;i++)
        scanf("%d %s %d",&stu[i].a,stu[i].b,&stu[i].c);
        printf("Case %d: ",k);
        //  for(i=0;i<n;i++)
      //printf("%06d %s %d ",stu[i].a,stu[i].b,stu[i].c);
      switch(c)
    {
       case 1:qsort(stu,n,sizeof(stu[0]),cmp);

          for(i=0;i<n;i++)
           printf("%06d %s %d ",stu[i].a,stu[i].b,stu[i].c);
               break;

       case 2: qsort(stu,n,sizeof(stu[0]),cmp1);
            
          for(i=0;i<n;i++)
           printf("%06d %s %d ",stu[i].a,stu[i].b,stu[i].c);
               break;
             
      case 3: qsort(stu,n,sizeof(stu[0]),cmp2);
            for(i=0;i<n;i++)
           printf("%06d %s %d ",stu[i].a,stu[i].b,stu[i].c);
               break;
             
    }
    }
    return 0;
    }

  • 相关阅读:
    hmset
    java 调用mongo 判断大于等于 并且小约等于<=
    Maven项目,别人的没问题,自己机器一直有问题
    linux 时间datetimectl 问题
    真正手把手教 git
    0324-SQLMAP使用参数备注
    安全推荐网址:
    JavaScript Base64 作为文件上传的实例代码解析
    学习笔记|变量的解构赋值
    学习笔记|let 和 const 命令
  • 原文地址:https://www.cnblogs.com/songmingtao/p/3244171.html
Copyright © 2011-2022 走看看