自动秒收录

hdu EXCEL排序 1862 结构体排序


文章编号:1285 / 更新时间:2023-11-10 07:06:06 / 浏览:
结构体排序

EXCEL排序

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


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年

主要是看对结构体的排序问题,其它没什么难点。

AC代码如下:

//1431
#include
#include
#include
using namespace std;
struct student
    char xh[10];
    char xm[10];
    int cj;
}s[100000];
int cmp1(student x,student y) //排序1
    if(strcmp(x.xh,y.xh)<0)
       return 1;
    return 0;
int cmp2(student x,student y) //排序2
    if(strcmp(x.xm,y.xm)<0)
        return 1;
    else if(strcmp(x.xm,y.xm)==0 && strcmp(x.xh,y.xh)<0)
        return 1;
    return 0;
int cmp3(student x,student y)//排序3
    if(x.cj        return 1;
    else if(x.cj==y.cj && strcmp(x.xh,y.xh)<0)
        return 1;
    return 0;
int main()
    int n,c,ans=0;
    while(scanf("%d %d",&n,&c)!=EOF&&n)
        ans++;
        int i;
        for(i=0;i            scanf("%s%s%d",s[i].xh,s[i].xm,&s[i].cj);
        /*switch(c)
        case 1:
            sort(s,s+n,cmp1);
            break;
        case 2:
            sort(s,s+n,cmp2);
            break;
        case 3:
            sort(s,s+n,cmp3);
            break;
        if(c==1) sort(s,s+n,cmp1);
        if(c==2) sort(s,s+n,cmp2);
        if(c==3) sort(s,s+n,cmp3);
        printf("Case %d:\n",ans);
        for(i=0;i            printf("%s %s %d\n",s[i].xh,s[i].xm,s[i].cj);
    return 0;

相关标签: Java测试技术

本文地址:https://www.0558.la/article/e07ec5c9cc37e417eac3.html

上一篇:微信小程序会占用手机内存吗微信小程序会议...
下一篇:新注册的域名多久可以备案新注册的域名要如...

温馨提示

做上本站友情链接,在您站上点击一次,即可自动收录并自动排在本站第一位!
<a href="https://www.0558.la/" target="_blank">自动秒收录</a>