zoukankan      html  css  js  c++  java
  • hdu-1862-EXCEL排序

    EXCEL排序

    Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 11897    Accepted Submission(s): 4733

    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年

    解题思路:

    1、  定义一个结构体,学号,和姓名用字符串输入。

    2、  用qsort 函数排序。

    3、  输出即可。

    程序代码:

    #include<stdio.h>

    #include<stdlib.h>

    #include<string.h>

    #define N 100005

    struct sj                                     //定义结构体

    {                        

        char xuehao[10];

        char name[10];

        int fenshu;

    }cj[N];

    int cmp1(const void *a,const void *b)          //按学号排序

    {

        struct sj *c = (struct sj *)a;

        struct sj *d = (struct sj *)b;

        return strcmp(c->xuehao,d->xuehao);

      

    }

    int cmp2(const void *a,const void *b)             //  按名字的字母顺序排序

    {

        struct sj *c = (struct sj *)a;

        struct sj *d = (struct sj *)b;;

        if(strcmp(c->name,d->name))

         return strcmp(c->name,d->name);              //  若名字相同 则按学号排序

        else

        return  strcmp(c->xuehao,d->xuehao);

    }

       

    int cmp3(const void *a,const void *b)        //  按分数排序

    {

        struct sj *c = (struct sj *)a;

        struct sj *d = (struct sj *)b;

        if(c->fenshu != d->fenshu)                //若分数相同, 则 按学号排序

        return c->fenshu - d->fenshu;

        else

        return strcmp(c->xuehao,d->xuehao);

    }

    int main()

    {

        int n,m,i,j,k;

        k=0;

        while(scanf("%d %d",&n,&m)&&(n!=0||m!=0))

        {

            k++;

            for(i=0;i<n;i++)                         // 依次输入数据

            {

                scanf("%s %s %d",cj[i].xuehao,cj[i].name,&cj[i].fenshu);  

            }

            if(m==1)

             {qsort(cj,n,sizeof(struct sj),cmp1);}

            if(m==2)

             {qsort(cj,n,sizeof(struct sj),cmp2);}

            if(m==3)

             {qsort(cj,n,sizeof(struct sj),cmp3);}

            printf("Case %d: ",k);                                // 输出第几次   不要忘记赋初值

            for(i=0;i<n;i++)

            {                                

               

                printf("%s %s %d ",cj[i].xuehao,cj[i].name,cj[i].fenshu);

            }

        }

        return 0;

    }

  • 相关阅读:
    pythonchallenge 解谜 Level 6
    pythonchallenge 解谜 Level 5
    pythonchallenge 解谜 Level 4
    pythonchallenge 解谜 Level 3
    pythonchallenge 解谜 Level 2
    pythonchallenge 解谜 Level 1
    CCF 201912-2 回收站选址
    JavaWeb+JDBC+Servlet+SqlServer实现登录功能
    后台连接数据库的方法
    jQuery实现轮播图
  • 原文地址:https://www.cnblogs.com/zhouhongweihpu/p/3244078.html
Copyright © 2011-2022 走看看