G - EXCEL排序

G - EXCEL排序
G - EXCEL排序
G - EXCEL排序

#include <iostream>
#include <algorithm>
#include <string.h>
#include <functional>
using namespace std;
struct student{
	char id[100];//学号
	char name[100];//名字
	int grade;//成绩
}a[555555];
//因为题中有大体三种排序方式,所以三个bool,三种排序
bool cmp1(student a,student b){
	int t;
   t=strcmp(a.id,b.id);
   if(t<0)
    return 1;
    else
        return 0;//学号不可能相等
}
bool cmp2(student a,student b){
	 int t;
   t=strcmp(a.name,b.name);
   if(t==0)
   {
       int p=strcmp(a.id,b.id);
       {
           if(p<0)
            return 1;//即按从小到大的顺序排序
       }
   }
   else if(t<0)
   {
       return 1;

   }
   return 0;
	
}
bool cmp3(student a,student b){
	int s=0;
	if(a.grade==b.grade)
	{
			s=strcmp(a.id,b.id);
			if(s>0)
			return 0;
			else
			return 1;
	}
	return a.grade<b.grade;
}
int main()
{
	int n,c;
	int m=0;
	while(cin>>n>>c&&n)
	{
		m++;
	 for(int i=0;i<n;i++)
	 cin>>a[i].id>>a[i].name>>a[i].grade;
	 cout<<"Case"<<" "<<m<<":"<<endl;
	 if(c==1)
	 {
	 	sort(a,a+n,cmp1);
	 
	 }
	 if(c==2)
	 {
	 	sort(a,a+n,cmp2);
	 	
	 }
	 if(c==3)
	 {
	 	sort(a,a+n,cmp3);
	 	
	 }
	 for(int i=0;i<n;i++)
        {
            cout<<a[i].id<<" "<<a[i].name<<" "<<a[i].grade<<endl;
        }
	}
	return 0;
}
上一篇:使用java回调函数来实现常见的生活场景


下一篇:Python操作MySQL数据库的三种方法